public void VariableExists() { var rant = new RantEngine(); rant.Do("[vn:testvar;123]"); Assert.IsNotNull(rant["testvar"]); }
public void Loop() { var rant = new RantEngine(); var result = rant.Do("[vn:a;10][while:[gt:[v:a];0];[vsub:a;1]a]").Main; Assert.AreEqual(result, "aaaaaaaaaa"); }
public void StringSplit() { var rant = new RantEngine(); var result = rant.Do("[split:a;,;\"a,b,c,d\"][v:a]").Main; Assert.AreEqual("(a, b, c, d)", result); }
public void IntegerGlobal() { var rant = new RantEngine { ["myInt"] = new RantObject(123) }; Assert.AreEqual("123", rant.Do(@"[@myInt]").Main); }
public void StringGlobal() { var rant = new RantEngine { ["myString"] = new RantObject("Hello world") }; Assert.AreEqual("Hello world", rant.Do(@"[@myString]").Main); }
public void VariableSwap() { var rant = new RantEngine(); rant.Do("[vn:a;3][vn:b;5][swap:a;b]"); Assert.AreEqual(rant["a"].Value, 5); Assert.AreEqual(rant["b"].Value, 3); }
public void VariableScope() { var rant = new RantEngine(); rant.Do("{[vn:a;100]}[vn:b;150]"); Assert.IsNull(rant["a"]); Assert.IsNotNull(rant["b"]); }
public void ListMap() { var rant = new RantEngine(); var result = rant.Do(@" [vl:test][laddn:test;1][laddn:test;2][laddn:test;3][laddn:test;4] [lmap:test;a;[v:a][v:a]][v:test]" ).Main; Assert.AreEqual("(11, 22, 33, 44)", result); }
public void ListFilter() { var rant = new RantEngine(); var result = rant.Do(@" [vl:test][laddn:test;1][laddn:test;2][laddn:test;3][laddn:test;4] [lfilter:test;a;[gt:[v:a];2]][v:test]" ).Main; Assert.AreEqual("(3, 4)", result); }
private void SetEngine() { _engine = new RantEngine(); using (Stream stream = typeof(RantModule).Assembly .GetManifestResourceStream(typeof(RantModule).Assembly.GetName().Name + ".Rantionary.rantpkg")) { _engine.LoadPackage(RantPackage.Load(stream)); } }
internal RantGenerator() { if (string.IsNullOrEmpty(RantPath) || !File.Exists(RantPath)) { throw new FileNotFoundException(RantPath); } this.Engine = new RantEngine(); this.Engine.LoadPackage("Rantionary.rantpkg"); Reload(); }
public Rant_Generator() { rant = new RantEngine(); rng = new RNG(Seed); Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); var package = RantPackage.Load(Package); rant.LoadPackage(package); }
public void ListGlobal() { var list = new List<RantObject> { new RantObject("A"), new RantObject("B"), new RantObject("C"), new RantObject("D") }; var rant = new RantEngine {["myList"] = new RantObject(list) }; Assert.AreEqual("A, B, C, D", rant.Do(@"[@ myList.join("", "") ]").Main); }
public CardGameServer(CardGame game) { Game = game ?? throw new ArgumentNullException(nameof(game)); Game.RoundEnded += OnGameRoundEnded; Game.GameEnded += OnGameEnded; _rng = new Random(unchecked (Environment.TickCount * 7919)); _rant = new RantEngine(); _spectators = new HashList <SpectatorConnection>(); _connections = new HashList <ClientConnectionBase>(); _addressTally = new Tally <string, ClientConnectionBase>(); _botTaunts = game.GetPacks().Select(p => p.GetTaunts()).SelectMany(t => t).ToArray(); _ws = new WebSocketServer(game.Settings.WebSocketUrl); _ws.AddWebSocketService(ServerPlayDir, () => new PlayerConnection(this, Game)); _ws.AddWebSocketService(ServerSpectateDir, () => new SpectatorConnection(this, Game)); }
public void ListGlobal() { var list = new List <RantObject> { new RantObject("A"), new RantObject("B"), new RantObject("C"), new RantObject("D") }; var rant = new RantEngine { ["myList"] = new RantObject(list) }; Assert.AreEqual("A, B, C, D", rant.Do(@"[@ myList.join("", "") ]").Main); }
public MessageTextTransformer( ILogger <MessageTextTransformer> logger , IOptions <MessageTextProviderAppSettings> appSettings , IRandomFactGenerator randomFactGenerator ) { _randomFactGenerator = randomFactGenerator; _appSettings = appSettings.Value; var executionPath = AppDomain.CurrentDomain.BaseDirectory; var rantPackagePath = Path.Combine(executionPath, _appSettings.RelativeRantPackagePath); _logger = logger; _rant = new RantEngine(); _rant.LoadPackage(rantPackagePath); }
static void Main(string[] args) { int repetition = 10; string text; var rant = new RantEngine(); rant.LoadPackage("build/AlinhamentoZuado-0.0.1.rantpkg"); var program = RantProgram.CompileFile("alinhamentoZuado.rant"); for (int i = 0; i < repetition; i++) { text = rant.Do(program); Console.WriteLine(text); } }
static void Main(string[] args) { var rant = new RantEngine(); rant.LoadPackage("Rantionary-3.0.20.rantpkg"); rant.Dictionary.IncludeHiddenClass("nsfw"); Console.WriteLine("Press <Enter> to create a list of 1000 groups"); Console.ReadKey(true); Console.Clear(); var pgm = RantProgram.CompileString(@"[rs:1000;\n]{<adj> <adj> <noun.pl>}"); var output = rant.Do(pgm); Console.WriteLine(output.Main); Console.ReadLine(); }
public Sandbox(RantEngine engine, RantPattern pattern, RNG rng, int sizeLimit = 0, RantPatternArgs args = null) { _engine = engine; _format = engine.Format; _sizeLimit = new Limit(sizeLimit); _baseOutput = new OutputWriter(this); _outputs = new Stack <OutputWriter>(); _outputs.Push(_baseOutput); _rng = rng; _startingGen = rng.Generation; _pattern = pattern; _objects = new ObjectStack(engine.Objects); _blocks = new Stack <BlockState>(); _matches = new Stack <Match>(); _queryState = new QueryState(); _subroutineArgs = new Stack <Dictionary <string, RantAction> >(); _syncManager = new SyncManager(this); _blockManager = new BlockManager(); _scriptObjectStack = new Stack <object>(); _patternArgs = args; _stopwatch = new Stopwatch(); }
public Sandbox(RantEngine engine, RantProgram pattern, RNG rng, int sizeLimit = 0, CarrierState carrierState = null, RantProgramArgs args = null) { // Public members RNG = rng; StartingGen = rng.Generation; Engine = engine; Format = engine.Format; SizeLimit = new Limit(sizeLimit); Pattern = pattern; PatternArgs = args; // Private members _blockManager = new BlockAttribManager(); _stopwatch = new Stopwatch(); _carrierState = carrierState; // Output initialization BaseOutput = new OutputWriter(this); _outputs = new Stack <OutputWriter>(); _outputs.Push(BaseOutput); }
public void IntegerGlobal() { var rant = new RantEngine { ["myInt"] = new RantObject(123) }; Assert.AreEqual("123", rant.Do(@"[@myInt]").Main); }
public void StringGlobal() { var rant = new RantEngine {["myString"] = new RantObject("Hello world") }; Assert.AreEqual("Hello world", rant.Do(@"[@myString]").Main); }
private static void Main(string[] args) { OutputEncoding = Encoding.UTF8; Title = "Rant Console" + (Flag("nsfw") ? " [NSFW]" : ""); var rant = new RantEngine(); #if !DEBUG try { #endif if (PKG_FILES.Any()) { #if DEBUG Stopwatch timer = Stopwatch.StartNew(); #endif foreach (var pkg in PKG_FILES) { rant.LoadPackage(pkg); } #if DEBUG timer.Stop(); WriteLine($"Package loading: {timer.ElapsedMilliseconds}ms"); #endif } else if (!string.IsNullOrEmpty(PKG_DIR)) { #if DEBUG Stopwatch timer = Stopwatch.StartNew(); #endif foreach (var pkg in Directory.GetFiles(PKG_DIR, "*.rantpkg")) { rant.LoadPackage(pkg); } #if DEBUG timer.Stop(); WriteLine($"Package loading: {timer.ElapsedMilliseconds}ms"); #endif } else { foreach (string pkg in Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.rantpkg", SearchOption.AllDirectories)) { rant.LoadPackage(pkg); } } #if !DEBUG } catch (Exception e) { ForegroundColor = ConsoleColor.Cyan; WriteLine($"Dictionary load error: {e.Message}"); } #endif if (Flag("nsfw")) { rant.Dictionary.IncludeHiddenClass("nsfw"); } if (!string.IsNullOrEmpty(FILE)) { #if !DEBUG try { #endif PrintOutput(rant, FILE, true); #if !DEBUG } catch (Exception ex) { ForegroundColor = ConsoleColor.Red; WriteLine(ex.Message); ResetColor(); } #endif if (Flag("wait")) { ReadKey(true); } return; } while (true) { ForegroundColor = Flag("nsfw") ? ConsoleColor.DarkRed : ConsoleColor.Gray; Write("RANT> "); ForegroundColor = ConsoleColor.White; string input = ReadLine(); if (input == null) { return; } PrintOutput(rant, input); } }
public string BareQuery(RantEngine rant) { return(rant.Do(@"[rs:10k;\s]{<noun>}").Main); }
public string QuerySyllableMax(RantEngine rant) { return(rant.Do(@"[rs:10k;\s]{<noun(-4)>}")); }
static void Main(string[] args) { Console.WriteLine("Loading Rant engine..."); RantEngine rantEngine = RantLoader.StartEngine(); Console.WriteLine("Engine loaded"); Console.WriteLine(DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + " " + DateTime.Now.Second.ToString() + "." + DateTime.Now.Millisecond.ToString()); Menu mainMenu = new Menu(new List <string> { "New Player", "New Map", "Map Details", "Start Game", "Rant Test", "Exit" }); Player player = new Player(); Map map = null; while (mainMenu.options[mainMenu.menuChoice] != "Exit") { mainMenu.ShowMenu(); switch (mainMenu.options[mainMenu.menuChoice]) { case "New Player": player.NewPlayer(); break; case "New Map": map = Map.NewMap(); break; case "Map Details": try { map.ShowMapDetails(); } catch { } break; case "Start Game": StartGame(); break; case "Rant Test": RantTesting(); break; } } void RantTesting() { Menu rantMenu = new Menu(new List <string> { "Go", "Exit" }); while (rantMenu.options[rantMenu.menuChoice] != "Exit") { rantMenu.ShowMenu(); switch (rantMenu.options[rantMenu.menuChoice]) { case "Go": List <Character> cast = new List <Character>(); List <string> castNames = new List <string>(); for (int i = 0; i < 10; i++) { cast.Add(new Character(i)); castNames.Add(cast[i].name); } castNames.Add("Exit"); Menu castMenu = new Menu(castNames); while (castMenu.options[castMenu.menuChoice] != "Exit") { castMenu.ShowMenu(); if (castMenu.options[castMenu.menuChoice] != "Exit") { Console.WriteLine("Name: " + cast[castMenu.menuChoice].name); Console.WriteLine("Hair Color: " + cast[castMenu.menuChoice].hairColor); Console.WriteLine("Action: " + cast[castMenu.menuChoice].action); Console.WriteLine("Action Item: " + cast[castMenu.menuChoice].actionItem); } } break; } } } void StartGame() { Menu gameMenu = new Menu(new List <string> { "Examine", "Move", "Exit Game" }); player.location = map.startingRoom; player.GetExits(); while (gameMenu.options[gameMenu.menuChoice] != "Exit Game") { gameMenu.ShowMenu(); switch (gameMenu.options[gameMenu.menuChoice]) { case "Examine": player.Examine(); break; case "Move": player.Move(); break; } } } }
public string QueryMultiClass(RantEngine rant) { return(rant.Do(@"[rs:10k;\s]{<noun-body-nsfw>}").Main); }
internal override void Load(RantEngine engine) { engine.Dictionary.AddTable(this); }
static void Main(string[] args) { Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; var file = Property("file"); var dicPath = Property("dicpath"); long seed = 0; bool useCustomSeed = Int64.TryParse(Property("seed"), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out seed); Title = "Rant Console" + (Flag("nsfw") ? " [NSFW]" : ""); var rant = new RantEngine(String.IsNullOrEmpty(dicPath) ? "dictionary" : dicPath, Flag("nsfw") ? NsfwFilter.Allow : NsfwFilter.Disallow); rant.AddHook("load", hArgs => hArgs.Length != 1 ? "" : rant.DoFile(hArgs[0])); if (!String.IsNullOrEmpty(file)) { try { PrintOutput(useCustomSeed ? rant.DoFile(file, seed) : rant.DoFile(file), true); } catch (Exception ex) { ForegroundColor = ConsoleColor.Red; WriteLine(ex.Message); ResetColor(); } if (Flag("wait")) { ReadKey(true); } return; } while (true) { ForegroundColor = Flag("nsfw") ? ConsoleColor.Magenta : ConsoleColor.Yellow; Write("\u211d> "); // real number symbol ResetColor(); var input = ReadLine(); #if DEBUG PrintOutput(rant.Do(input, 0, PATTERN_TIMEOUT)); #else try { PrintOutput(rant.Do(input, 0, PATTERN_TIMEOUT)); } catch (Exception e) { ForegroundColor = ConsoleColor.Red; if (e is RantException) { WriteLine(e.Message); } else { WriteLine(e.ToString()); // Print the whole stack trace if it isn't a syntax error } ResetColor(); } #endif } }
public Sandbox(RantEngine engine, RantPattern pattern, RNG rng, int sizeLimit = 0) { _engine = engine; _format = engine.Format; _sizeLimit = new Limit(sizeLimit); _mainOutput = new ChannelWriter(_format, _sizeLimit); _outputs = new Stack<ChannelWriter>(); _outputs.Push(_mainOutput); _rng = rng; _startingGen = rng.Generation; _pattern = pattern; _objects = new ObjectStack(engine.Objects); _blocks = new Stack<BlockState>(); _matches = new Stack<Match>(); _queryState = new QueryState(); _subroutineArgs = new Stack<Dictionary<string, RantAction>>(); _syncManager = new SyncManager(this); _blockManager = new BlockManager(); _scriptObjectStack = new Stack<object>(); _stopwatch = new Stopwatch(); }
internal abstract void Load(RantEngine engine);
public string QueryOneClass(RantEngine rant) { return(rant.Do(@"[rs:10k;\s]{<noun-body>}").Main); }
public string NegativeClassFilter(RantEngine rant) { return(rant.Do(@"[rs:10k;\s]{<noun-!body>}").Main); }
public string QuerySyllableClassRange(RantEngine rant) { return(rant.Do(@"[rs:10k;\s]{<noun-body(2-4)>}")); }