示例#1
0
        //  Action Result methods for Language Views
        #region Languages
        public ActionResult Languages()
        {
            // the only fail case for this page is if there isn't a User - we can redirect to Index to handle this
            if (Session["User"] == null)
            {
                return(RedirectToAction("Index", "Language"));
            }

            // check if there are no languages - if so, add an alert and redirect to create language page
            if (LanguageProcessor.getLanguagesCount((int)Session["User"]) <= 0)
            {
                Session.Add("No Languages", true);
                return(RedirectToAction("CreateLanguage", "Language"));
            }

            // load the languages
            List <LanguageDataModel> dmLanguages = LanguageProcessor.LoadLanguages((int)Session["User"]);

            // create and populate a list of language models
            List <LanguageModel> mLanguages = new List <LanguageModel>();

            foreach (LanguageDataModel language in dmLanguages)
            {
                mLanguages.Add(new LanguageModel
                {
                    Id          = language.Id,
                    Name        = language.Name,
                    Description = language.Description
                });
            }

            // return the view as a table of the languages
            return(View(mLanguages));
        }
示例#2
0
        public static void MakeDoc(string output, string rawsFolder, string extension, bool isDirectory, string header, string footer)
        {
            LanguageProcessor languageProcessor = new LanguageProcessor(true, (IComparer <ICodeTemplate>) new TemplateComparer(), Program.stringComparer);

            if (isDirectory)
            {
                languageProcessor.ProcessCode(rawsFolder, extension);
            }
            else
            {
                languageProcessor.ProcessCode(rawsFolder);
            }

            using (StreamWriter text = File.CreateText(output)) {
                if (header != null)
                {
                    text.WriteLine(File.ReadAllText(header));
                    text.WriteLine();
                }

                languageProcessor.WriteDocs((TextWriter)text);

                if (footer == null)
                {
                    return;
                }

                text.WriteLine(File.ReadAllText(footer));
                text.WriteLine();
            }
        }
示例#3
0
        public ActionResult CreateLanguage(LanguageModel language)
        {
            // We need to remove any "Name already used" alerts
            if (Session["Name already used"] != null)
            {
                Session.Remove("Name already used");
            }
            if (ModelState.IsValid)
            {
                // we need to check if the Name is distint for that user
                if (LanguageProcessor.CheckDistinct((int)Session["User"], language.Name))
                {
                    // If the language already exists, we'll need to reload the page with a warning
                    Session.Add("Name already used", true);
                    return(View());
                }
                LanguageProcessor.CreateLanguage(language.Name, (int)Session["User"], language.Description);

                // also check if the language is already stored in Session
                if (Session["Language"] == null)
                {
                    Session.Add("Language", LanguageProcessor.getLanguageId((int)Session["User"], language.Name));
                }
                // if it is, we'll replace it
                else
                {
                    Session["User"] = LanguageProcessor.getLanguageId((int)Session["User"], language.Name);
                }

                // the next step is to setup the letter types
                return(RedirectToAction("SetupLetterTypes", "Languages"));
            }

            return(View());
        }
        public async Task GivenNegativeStringProcessorShouldNotContainGreaterAmountOfNegativeTokens()
        {
            var processor = new LanguageProcessor();

            var processed = await processor.ProcessLanguageAsync(Constants.SimpleStrings.NegativeString.str, _defaultLanguage).ConfigureAwait(false);

            Assert.True(processed.NegativeTokens.Count() > processed.PositiveTokens.Count());
        }
        public async Task GivenNeutralStringProcessorShouldNotContainPositiveOrNegativeTokens()
        {
            var processor = new LanguageProcessor();

            var processed = await processor.ProcessLanguageAsync(Constants.SimpleStrings.NeutralString.str, _defaultLanguage).ConfigureAwait(false);

            Assert.True(processed.NeutralTokens.Count() == Constants.SimpleStrings.NeutralString.tokenCount);
        }
示例#6
0
        private void HandleTextRequest(Message message)
        {
            var action = LanguageProcessor.GetActionFromMessage(message);

            if (action == null)
            {
                action = "PleaseRepeat";
            }

            SendMessageToHandler(message, action);
        }
示例#7
0
        static async Task Main()
        {
            LanguageProcessor languageProcessor = new LanguageProcessor();
            var allCountries = await InitCountriesAsync();

            Console.WriteLine("Data set:");
            Console.WriteLine(Encoding.UTF8.GetString(JsonSerializer.SerializeToUtf8Bytes(allCountries, options: new JsonSerializerOptions()
            {
                WriteIndented = true
            })));
            do
            {
                Console.WriteLine();
                Console.WriteLine("Please enter expression, e.g: Name eq 'Australia' or Population ge 100 and Population lt 201");
                Console.WriteLine($"Available operators: { string.Join(',', Enum.GetValues<Operator>())}");
                string expression = Console.ReadLine();
                if (string.IsNullOrEmpty(expression))
                {
                    break;
                }

                try
                {
                    var countries = languageProcessor.Find(allCountries, expression);
                    if (countries.Any())
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine("Matching countries:");
                        foreach (var country in countries)
                        {
                            Console.Write($"{country.Name}; ");
                        }
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine();
                    }
                    else
                    {
                        Console.WriteLine("Couldn't find any matching countries");
                    }
                }
                catch (ExpressionInvalidException ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"{ex.Message}: {ex.Details}");
                    Console.ForegroundColor = ConsoleColor.White;
                }
                catch (Exception)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"Something went wrong, please try again");
                    Console.ForegroundColor = ConsoleColor.White;
                }
            }while (true);
        }
示例#8
0
        private static void LoadCodes(bool collectDoc)
        {
            Program.languages = (IDictionary <string, EACodeLanguage>) new Dictionary <string, EACodeLanguage> ();

            LanguageProcessor languageProcessor = new LanguageProcessor(collectDoc, new TemplateComparer(), Program.stringComparer);
            IPointerMaker     pointerMaker      = (IPointerMaker) new GBAPointerMaker();

            if (Program.RunConfig.isDirectory)
            {
                languageProcessor.ProcessCode(Program.RunConfig.rawsFolder, Program.RunConfig.rawsExtension);
            }
            else
            {
                languageProcessor.ProcessCode(Program.RunConfig.rawsFolder);
            }

            foreach (KeyValuePair <string, ICodeTemplateStorer> language in languageProcessor.Languages)
            {
                Tuple <string, List <Priority> >[][] pointerList;

                switch (language.Key)
                {
                case "FE6":
                    pointerList = FE6CodeLanguage.PointerList;
                    break;

                case "FE7":
                case "FE7J":
                    pointerList = FE7CodeLanguage.PointerList;
                    break;

                case "FE8":
                case "FE8J":
                    // pointerList = DummyCodeLanguage.PointerList;
                    pointerList = FE8CodeLanguage.PointerList;
                    break;

                default:
                    pointerList = DummyCodeLanguage.PointerList;
                    break;

                    // throw new NotSupportedException ("Language " + language.Key + " not supported.");
                }

                Program.languages [language.Key] = new EACodeLanguage(
                    language.Key,
                    pointerMaker,
                    pointerList,
                    language.Value,
                    Program.stringComparer
                    );
            }
        }
示例#9
0
        public static void CompileFile(string[] args)
        {
            string sourceFilePath = null;

            try
            {
                sourceFilePath = args[0];
            }
            catch
            {
                throw new CommandException("Could not obtain input filename");
            }

            var extension = Path.GetExtension(sourceFilePath);

            var src = File.ReadAllText(sourceFilePath);

            var language = LanguageProcessor.GetLanguage(extension);

            if (language == Language.Unknown)
            {
                throw new CommandException("Unsupported smart contract language extension: " + extension);
            }

            var processor = LanguageProcessor.GetProcessor(language);

            var tokens       = processor.Lexer.Execute(src);
            var tree         = processor.Parser.Execute(tokens);
            var compiler     = new Compiler();
            var instructions = compiler.Execute(tree);
            var generator    = new ByteCodeGenerator(tree, instructions);

            var outputName = sourceFilePath.Replace(extension, ScriptExtension);

            try
            {
                File.WriteAllBytes(outputName, generator.Script);
            }
            catch
            {
                throw new CommandException("Error generating " + outputName);
            }
        }