-
-
Save avaz/b089e1d13287e8004a36 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javax.script.Invocable; | |
import javax.script.ScriptEngine; | |
import javax.script.ScriptEngineManager; | |
import javax.script.ScriptException; | |
import java.io.InputStream; | |
import java.io.InputStreamReader; | |
import java.util.Random; | |
import java.util.function.Supplier; | |
public class App | |
{ | |
public static void main( String[] args ) throws ScriptException, NoSuchMethodException { | |
ScriptEngineManager engineManager = new ScriptEngineManager(); | |
ScriptEngine engine = engineManager.getEngineByName("nashorn"); | |
// Create a source for random numbers, as the built-in mersene twister suffers some problems | |
final Random random = new Random(); | |
engine.put("generator", (Supplier<Object>) random::nextDouble); | |
// Add a global object, so we can get a reference to chance | |
final Object exports = engine.eval("exports = {}"); | |
// Read chance.js from the classpath | |
final InputStreamReader reader = new InputStreamReader(App.class.getClassLoader().getResourceAsStream("chance.js");); | |
// Execute chance.js | |
engine.eval(reader); | |
// Get a usable interface to chance.js | |
final Object chance = engine.eval("new exports.Chance(function(){ return generator.get(); })"); | |
Invocable invocable = (Invocable) engine; | |
final Chance anInterface = invocable.getInterface(chance, Chance.class); | |
// Try using the interface | |
System.out.println(anInterface.bool()); | |
System.out.println(anInterface.floating()); | |
System.out.println(anInterface.character()); | |
System.out.println(anInterface.integer()); | |
System.out.println(anInterface.natural()); | |
System.out.println(anInterface.string()); | |
System.out.println(anInterface.sentence()); | |
System.out.println(anInterface.paragraph()); | |
System.out.println(anInterface.syllable()); | |
System.out.println(anInterface.word()); | |
System.out.println(anInterface.age()); | |
System.out.println(anInterface.birthday()); | |
System.out.println(anInterface.cpf()); | |
System.out.println(anInterface.first()); | |
System.out.println(anInterface.last()); | |
System.out.println(anInterface.name()); | |
System.out.println(anInterface.gender()); | |
System.out.println(anInterface.color()); | |
System.out.println(anInterface.domain()); | |
System.out.println(anInterface.email()); | |
System.out.println(anInterface.fbid()); | |
System.out.println(anInterface.google_analytics()); | |
System.out.println(anInterface.hashtag()); | |
System.out.println(anInterface.ip()); | |
System.out.println(anInterface.ipv6()); | |
System.out.println(anInterface.klout()); | |
System.out.println(anInterface.tld()); | |
System.out.println(anInterface.twitter()); | |
System.out.println(anInterface.url()); | |
System.out.println(anInterface.address()); | |
System.out.println(anInterface.altitude()); | |
System.out.println(anInterface.areacode()); | |
System.out.println(anInterface.city()); | |
System.out.println(anInterface.coordinates()); | |
System.out.println(anInterface.country()); | |
System.out.println(anInterface.depth()); | |
System.out.println(anInterface.geohash()); | |
System.out.println(anInterface.latitude()); | |
System.out.println(anInterface.longitude()); | |
System.out.println(anInterface.phone()); | |
System.out.println(anInterface.postal()); | |
System.out.println(anInterface.province()); | |
System.out.println(anInterface.state()); | |
System.out.println(anInterface.street()); | |
System.out.println(anInterface.zip()); | |
System.out.println(anInterface.ampm()); | |
System.out.println(anInterface.date()); | |
System.out.println(anInterface.hammertime()); | |
System.out.println(anInterface.hour()); | |
System.out.println(anInterface.millisecond()); | |
System.out.println(anInterface.minute()); | |
System.out.println(anInterface.month()); | |
System.out.println(anInterface.second()); | |
System.out.println(anInterface.timestamp()); | |
System.out.println(anInterface.year()); | |
System.out.println(anInterface.cc()); | |
System.out.println(anInterface.cc_type()); | |
System.out.println(anInterface.currency()); | |
System.out.println(anInterface.currency_pair()); | |
System.out.println(anInterface.dollar()); | |
System.out.println(anInterface.exp()); | |
System.out.println(anInterface.exp_month()); | |
System.out.println(anInterface.exp_year()); | |
System.out.println(anInterface.prefix()); | |
System.out.println(anInterface.ssn()); | |
System.out.println(anInterface.suffix()); | |
System.out.println(anInterface.android_id()); | |
System.out.println(anInterface.apple_token()); | |
System.out.println(anInterface.bb_pin()); | |
System.out.println(anInterface.wp7_anid()); | |
//System.out.println(anInterface.wp8_anid2()); needs base64 encoder | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import jdk.nashorn.internal.objects.NativeDate; | |
public interface Chance { | |
// Basic | |
public Boolean bool(); | |
public String character(); | |
public Double floating(); | |
public Long integer(); | |
public Long natural(); | |
public String string(); | |
// Text | |
public String paragraph(); | |
public String sentence(); | |
public String syllable(); | |
public String word(); | |
// Person | |
public Integer age(); | |
public NativeDate birthday(); | |
public String cpf(); // Brazilian Tax ID | |
public String first(); | |
public String gender(); | |
public String last(); | |
public String name(); | |
public String prefix(); | |
public String ssn(); // Social Security Number | |
public String suffix(); | |
// Mobile | |
public String android_id(); | |
public String apple_token(); | |
public String bb_pin(); | |
public String wp7_anid(); | |
// Needs base64 encoder | |
// public String wp8_anid2(); | |
// Web | |
public String color(); | |
public String domain(); | |
public String email(); | |
public String fbid(); | |
public String google_analytics(); | |
public String hashtag(); | |
public String ip(); | |
public String ipv6(); | |
public String klout(); | |
public String tld(); | |
public String twitter(); | |
public String url(); | |
// Location | |
public String address(); | |
public String altitude(); | |
public String areacode(); | |
public String city(); | |
public String coordinates(); | |
public String country(); | |
public String depth(); | |
public String geohash(); | |
public String latitude(); | |
public String longitude(); | |
public String phone(); | |
public String postal(); | |
public String province(); | |
public String state(); | |
public String street(); | |
public String zip(); | |
// Time | |
public String ampm(); | |
public String date(); | |
public String hammertime(); | |
public String hour(); | |
public String millisecond(); | |
public String minute(); | |
public String month(); | |
public String second(); | |
public String timestamp(); | |
public String year(); | |
// Finance | |
public String cc(); | |
public String cc_type(); | |
public String currency(); | |
public String currency_pair(); | |
public String dollar(); | |
public String exp(); | |
public String exp_month(); | |
public String exp_year(); | |
// Misc | |
public String guid(); | |
public String hash(); | |
public String radio(); | |
public String tv(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment