Ejemplo n.º 1
0
        public void VariableExists()
        {
            var rant = new RantEngine();

            rant.Do("[vn:testvar;123]");
            Assert.IsNotNull(rant["testvar"]);
        }
Ejemplo n.º 2
0
        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");
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        public void IntegerGlobal()
        {
            var rant = new RantEngine {
                ["myInt"] = new RantObject(123)
            };

            Assert.AreEqual("123", rant.Do(@"[@myInt]").Main);
        }
Ejemplo n.º 5
0
        public void StringGlobal()
        {
            var rant = new RantEngine {
                ["myString"] = new RantObject("Hello world")
            };

            Assert.AreEqual("Hello world", rant.Do(@"[@myString]").Main);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        public void VariableScope()
        {
            var rant = new RantEngine();

            rant.Do("{[vn:a;100]}[vn:b;150]");
            Assert.IsNull(rant["a"]);
            Assert.IsNotNull(rant["b"]);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 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));
     }
 }
Ejemplo n.º 11
0
 internal RantGenerator()
 {
     if (string.IsNullOrEmpty(RantPath) || !File.Exists(RantPath))
     {
         throw new FileNotFoundException(RantPath);
     }
     this.Engine = new RantEngine();
     this.Engine.LoadPackage("Rantionary.rantpkg");
     Reload();
 }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
 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);
 }
Ejemplo n.º 14
0
 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));
 }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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();
        }
Ejemplo n.º 19
0
 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();
 }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
 public void IntegerGlobal()
 {
     var rant = new RantEngine { ["myInt"] = new RantObject(123) };
     Assert.AreEqual("123", rant.Do(@"[@myInt]").Main);
 }
Ejemplo n.º 22
0
 public void StringGlobal()
 {
     var rant = new RantEngine {["myString"] = new RantObject("Hello world") };
     Assert.AreEqual("Hello world", rant.Do(@"[@myString]").Main);
 }
Ejemplo n.º 23
0
        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);
            }
        }
Ejemplo n.º 24
0
 public string BareQuery(RantEngine rant)
 {
     return(rant.Do(@"[rs:10k;\s]{<noun>}").Main);
 }
Ejemplo n.º 25
0
 public string QuerySyllableMax(RantEngine rant)
 {
     return(rant.Do(@"[rs:10k;\s]{<noun(-4)>}"));
 }
Ejemplo n.º 26
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 27
0
 public string QueryMultiClass(RantEngine rant)
 {
     return(rant.Do(@"[rs:10k;\s]{<noun-body-nsfw>}").Main);
 }
Ejemplo n.º 28
0
 internal override void Load(RantEngine engine)
 {
     engine.Dictionary.AddTable(this);
 }
Ejemplo n.º 29
0
        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
            }
        }
Ejemplo n.º 30
0
		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();
		}
Ejemplo n.º 31
0
 internal abstract void Load(RantEngine engine);
Ejemplo n.º 32
0
 public string QueryOneClass(RantEngine rant)
 {
     return(rant.Do(@"[rs:10k;\s]{<noun-body>}").Main);
 }
Ejemplo n.º 33
0
 public string NegativeClassFilter(RantEngine rant)
 {
     return(rant.Do(@"[rs:10k;\s]{<noun-!body>}").Main);
 }
Ejemplo n.º 34
0
 public string QuerySyllableClassRange(RantEngine rant)
 {
     return(rant.Do(@"[rs:10k;\s]{<noun-body(2-4)>}"));
 }