/// <summary>
        /// Switches the language being edited to HTML.
        /// </summary>
        /// <param name="sender">The <c>NSMenuItem</c> that initiated the switch.</param>
        partial void ShowHTML(Foundation.NSObject sender)
        {
            // Switching to a new language?
            if (Language.LanguageIdentifier != "HTML")
            {
                Language = new HTMLDescriptor();

                // Apply any changes to open windows
                App.UpdateWindowPreferences();
            }
        }
Ejemplo n.º 2
0
        public override IEnumerable <ISavableFile> Create(FileCreationContext context)
        {
            // TODO: better detection of project descriptor...
            var descriptor = LanguageDescriptor.GetLanguageByName(LanguageName).GetProjectDescriptors().FirstOrDefault();
            var evaluator  = context.GetStringEvaluator();

            var project = descriptor.CreateProject(evaluator.EvaluateString(Path.GetFileNameWithoutExtension(UnevaluatedName)));

            project.FilePath       = context.FilePath.Combine(evaluator.EvaluateString(UnevaluatedName));
            context.CurrentProject = project;

            var referenceProvider = project as IAssemblyReferenceProvider;
            var propertyProvider  = project as IPropertyProvider;

            if (referenceProvider != null && ReferencesNode != null)
            {
                foreach (XmlNode child in ReferencesNode.ChildNodes)
                {
                    referenceProvider.References.Add(new AssemblyReference(evaluator.EvaluateString(child.InnerText)));
                }
            }

            if (propertyProvider != null && PropertiesNode != null)
            {
                foreach (XmlNode child in PropertiesNode.ChildNodes)
                {
                    propertyProvider.SetProperty(
                        evaluator.EvaluateString(child.Attributes["Name"].Value),
                        evaluator.EvaluateString(child.InnerText));
                }
            }

            if (FilesNode != null)
            {
                foreach (XmlNode child in FilesNode.ChildNodes)
                {
                    var newContext = context.Clone() as FileCreationContext;
                    newContext.FilePath = project.FilePath;
                    new FileTemplateNode(child).Create(newContext);
                }
            }

            context.CurrentProject = null;

            return(new ISavableFile[] { project });
        }
        internal LanguageDescriptor[] MakeLanguageUploadData(string[] isoCodes)
        {
            var result = new LanguageDescriptor[isoCodes.Length];

            for (int i = 0; i < isoCodes.Length; i++)
            {
                var    code = isoCodes[i];
                string name;
                if (code == Language1.Iso639Code)
                {
                    name = Language1.Name;
                }
                else if (code == Language2.Iso639Code)
                {
                    name = Language2.Name;
                }
                else if (code == Language3.Iso639Code)
                {
                    name = Language3.Name;
                }
                else
                {
                    WritingSystem.LookupIsoCode.GetBestLanguageName(code, out name);
                }
                string         ethCode;
                LanguageSubtag data;
                if (!StandardSubtags.RegisteredLanguages.TryGet(code.ToLowerInvariant(), out data))
                {
                    ethCode = code;
                }
                else
                {
                    ethCode = data.Iso3Code;
                    if (string.IsNullOrEmpty(ethCode))
                    {
                        ethCode = code;
                    }
                }
                result[i] = new LanguageDescriptor()
                {
                    IsoCode = code, Name = name, EthnologueCode = ethCode
                };
            }
            return(result);
        }
        internal string LanguageId(LanguageDescriptor lang)
        {
            var getLang = MakeGetRequest("classes/language");

            getLang.AddParameter("where", lang.Json, ParameterType.QueryString);
            var response = _client.Execute(getLang);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                return(null);
            }
            dynamic json = JObject.Parse(response.Content);

            if (json == null || json.results.Count < 1)
            {
                return(null);
            }
            return(json.results[0].objectId);
        }
Ejemplo n.º 5
0
        internal LanguageDescriptor[] MakeLanguageUploadData(string[] isoCodes)
        {
            var result = new LanguageDescriptor[isoCodes.Length];

            for (int i = 0; i < isoCodes.Length; i++)
            {
                var    code = isoCodes[i];
                var    data = _lookupIsoCode.GetExactLanguageMatch(code);
                string name;
                if (code == Language1Iso639Code)
                {
                    name = Language1Name;
                }
                else if (data == null)
                {
                    name = code;
                }
                else
                {
                    name = data.Name;
                }
                string ethCode;
                if (data == null)
                {
                    ethCode = code;
                }
                else
                {
                    ethCode = data.ISO3Code;
                    if (string.IsNullOrEmpty(ethCode))
                    {
                        ethCode = code;
                    }
                }
                result[i] = new LanguageDescriptor()
                {
                    IsoCode = code, Name = name, EthnologueCode = ethCode
                };
            }
            return(result);
        }
Ejemplo n.º 6
0
        internal int LanguageCount(LanguageDescriptor lang)
        {
            var getLang = MakeGetRequest(ClassesLanguagePath);

            getLang.AddParameter("where", lang.Json, ParameterType.QueryString);
            var response = Client.Execute(getLang);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                return(0);
            }
            dynamic json = JObject.Parse(response.Content);

            if (json == null)
            {
                return(0);
            }
            var results = json.results;

            return(results.Count);
        }
        /// <summary>
        /// Creates or updates resources based on the natural key values of the supplied resource. The POST operation can be used to create or update resources. In database terms, this is often referred to as an &quot;upsert&quot; operation (insert + update).  Clients should NOT include the resource &quot;id&quot; in the JSON body because it will result in an error (you must use a PUT operation to update a resource by &quot;id&quot;). The web service will identify whether the resource already exists based on the natural key values provided, and update or create the resource appropriately.
        /// </summary>
        /// <param name="body">The JSON representation of the &quot;languageDescriptor&quot; resource to be created or updated.</param>
        /// <returns>A RestSharp <see cref="IRestResponse"/> instance containing the API response details.</returns>
        public IRestResponse PostLanguageDescriptors(LanguageDescriptor body)
        {
            var request = new RestRequest("/languageDescriptors", Method.POST);

            request.RequestFormat = DataFormat.Json;

            // verify required params are set
            if (body == null)
            {
                throw new ArgumentException("API method call is missing required parameters");
            }
            request.AddBody(body);
            var response = client.Execute(request);

            var location = response.Headers.FirstOrDefault(x => x.Name == "Location");

            if (location != null && !string.IsNullOrWhiteSpace(location.Value.ToString()))
            {
                body.id = location.Value.ToString().Split('/').Last();
            }
            return(response);
        }
Ejemplo n.º 8
0
        private void languagesTreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            templatesListView.Clear();
            templatesListView.SmallImageList.Images.Clear();
            templatesListView.LargeImageList.Images.Clear();

            if (languagesTreeView.SelectedNode != null && languagesTreeView.SelectedNode.Tag is LanguageDescriptor)
            {
                LanguageDescriptor descriptor = languagesTreeView.SelectedNode.Tag as LanguageDescriptor;

                foreach (var template in descriptor.Templates)
                {
                    if (template is FileTemplate && ((template as FileTemplate).ProjectRequired ? _parentProject != null : true))
                    {
                        int index = -1;
                        if (template.Icon != null)
                        {
                            index = templatesListView.SmallImageList.Images.Count;
                            templatesListView.SmallImageList.Images.Add(template.Icon);
                            templatesListView.LargeImageList.Images.Add(template.Icon);
                        }

                        templatesListView.Items.Add(new ListViewItem(template.Name)
                        {
                            Tag        = template,
                            ImageIndex = index,
                        });
                    }
                }

                if (templatesListView.Items.Count > 0)
                {
                    templatesListView.Items[0].Selected = true;
                }
            }

            UpdateOkButton();
        }
 public bool LanguageExists(LanguageDescriptor lang)
 {
     return(LanguageCount(lang) > 0);
 }
Ejemplo n.º 10
0
 public static EditorLayoutData GetLayout(LanguageDescriptor language)
 {
     return(RegisteredLayouts.FirstOrDefault(x => x.Language == language));
 }
Ejemplo n.º 11
0
        private Token ParseToken()
        {
            var TokType = TokenType.Error;

            CurrentType_ = LexerStateType.Begin;
            CurrentText_.Reset();

            var TokenLine      = CurrentLine_;
            var TokenLineIndex = CurrentLineIndex_;

            while (!CharsStream_.IsEnd() && CurrentType_ != LexerStateType.End)
            {
                var Ch = CharsStream_.Take();
                CurrentText_.Push(Ch);
                CurrentLineIndex_++;

                switch (CurrentType_)
                {
                    #region Begin
                case LexerStateType.Begin:
                    if (LanguageDescriptor.IsWhitespaceChar(Ch))
                    {
                        TokType      = TokenType.None;
                        CurrentType_ = LexerStateType.End;
                    }
                    else if (LanguageDescriptor.IsEndOfLineChar(Ch))
                    {
                        CurrentLine_++;
                        CurrentLineIndex_ = 0;

                        TokType      = TokenType.None;
                        CurrentType_ = LexerStateType.End;
                    }
                    else if (LanguageDescriptor.IsDelimiterChar(Ch))
                    {
                        TokType      = TokenType.Delimiter;
                        CurrentType_ = LexerStateType.End;
                    }
                    else if (LanguageDescriptor.IsDigitChar(Ch))
                    {
                        CurrentType_ = LexerStateType.Number;
                    }
                    else if (LanguageDescriptor.IsQuoteChar(Ch))
                    {
                        CurrentType_ = LexerStateType.String;
                    }
                    else if (LanguageDescriptor.IsIdentityChar(Ch))
                    {
                        CurrentType_ = LexerStateType.Identity;
                    }
                    break;

                    #endregion
                    #region Number
                case LexerStateType.Number:
                    if (LanguageDescriptor.IsPointChar(Ch))
                    {
                        CurrentType_ = LexerStateType.Float;
                    }
                    else if (!LanguageDescriptor.IsDigitChar(Ch))
                    {
                        CurrentText_.Pop();
                        CharsStream_.Back();

                        if (LanguageDescriptor.IsWhitespaceChar(Ch) ||
                            LanguageDescriptor.IsDelimiterChar(Ch) ||
                            LanguageDescriptor.IsEndOfLineChar(Ch))
                        {
                            TokType = TokenType.Numeric;
                        }
                        else
                        {
                            TokType = TokenType.Error;
                            Logger.Add(CurrentLine_, CurrentLineIndex_, $"unexpected character '{Ch}' in {CurrentText_}");
                        }

                        CurrentType_ = LexerStateType.End;
                    }
                    break;

                    #endregion
                    #region Float
                case LexerStateType.Float:
                    if (!LanguageDescriptor.IsDigitChar(Ch))
                    {
                        CurrentText_.Pop();
                        CharsStream_.Back();

                        if (LanguageDescriptor.IsWhitespaceChar(Ch) ||
                            LanguageDescriptor.IsDelimiterChar(Ch) ||
                            LanguageDescriptor.IsEndOfLineChar(Ch))
                        {
                            TokType = TokenType.Numeric;
                        }
                        else
                        {
                            TokType = TokenType.Error;
                            Logger.Add(CurrentLine_, CurrentLineIndex_, $"unexpected character '{Ch}' in {CurrentText_}");
                        }

                        CurrentType_ = LexerStateType.End;
                    }
                    break;

                    #endregion
                    #region String
                case LexerStateType.String:
                    if (LanguageDescriptor.IsEscapeChar(Ch))
                    {
                        CurrentText_.Pop();
                        CurrentText_.Push(LanguageDescriptor.EscapeChar(CharsStream_.Take()));
                    }
                    else if (LanguageDescriptor.IsQuoteChar(Ch) && CurrentText_.Index(0) == Ch)
                    {
                        CurrentText_.Pop();
                        CurrentText_.Remove(0);

                        TokType      = TokenType.String;
                        CurrentType_ = LexerStateType.End;
                    }
                    else if (LanguageDescriptor.IsEndOfLineChar(Ch))
                    {
                        CurrentText_.Pop();
                        CharsStream_.Back();

                        TokType      = TokenType.Error;
                        CurrentType_ = LexerStateType.End;
                        Logger.Add(CurrentLine_, CurrentLineIndex_, $"unexpected <eof> in {CurrentText_}");
                    }
                    break;

                    #endregion
                    #region Identity
                case LexerStateType.Identity:
                    if (!LanguageDescriptor.IsIdentityChar(Ch) && !LanguageDescriptor.IsDigitChar(Ch))
                    {
                        CurrentText_.Pop();
                        CharsStream_.Back();
                        TokType      = TokenType.Identity;
                        CurrentType_ = LexerStateType.End;
                    }
                    break;
                    #endregion
                }
            }

            var TokCode = CurrentText_.ToString();
            if (LanguageDescriptor.IsBooleanString(TokCode))
            {
                TokType = TokenType.Boolean;
            }
            else if (LanguageDescriptor.IsNullString(TokCode))
            {
                TokType = TokenType.Null;
            }

            return(new Token(TokType, TokCode, TokenLine, TokenLineIndex));
        }
        private string[] GetModifiers(string input)
        {
            MatchCollection matches = Regex.Matches(input, BuildRegexAlternativeRange(LanguageDescriptor.GetLanguage <VisualBasicLanguage>().Modifiers));

            string[] output = new string[matches.Count];

            for (int i = 0; i < matches.Count; i++)
            {
                output[i] = matches[i].Value;
            }

            return(output);
        }
Ejemplo n.º 13
0
        private void SetupProjectTemplates()
        {
            var programClassTemplate = new NetAstFileTemplate("Program", "Program", null, CodeEditorExtension.Instance, CodeDomUnitFactory.CreateEntryPointModuleUnit("%folder%", "Program"));

            var method = programClassTemplate.CompileUnit.Namespaces[1].Types[0].Members[0] as CodeMemberMethod;

            method.CustomAttributes.Add(new CodeAttributeDeclaration(new CodeTypeReference(typeof(STAThreadAttribute))));
            method.Statements.AddRange(new CodeStatement[]
            {
                new CodeExpressionStatement(
                    new CodeMethodInvokeExpression(
                        new CodeMethodReferenceExpression(
                            new CodeTypeReferenceExpression(typeof(Application)),
                            "EnableVisualStyles"))),
                new CodeExpressionStatement(
                    new CodeMethodInvokeExpression(
                        new CodeMethodReferenceExpression(
                            new CodeTypeReferenceExpression(typeof(Application)),
                            "SetCompatibleTextRenderingDefault"),
                        new CodePrimitiveExpression(false))),
                new CodeExpressionStatement(
                    new CodeMethodInvokeExpression(
                        new CodeMethodReferenceExpression(
                            new CodeTypeReferenceExpression(typeof(Application)),
                            "Run"),
                        new CodeObjectCreateExpression("Form1"))),
            });

            var formClassTemplate = new NetAstFileTemplate(
                "Form1",
                "Form1",
                null,
                CodeEditorExtension.Instance,
                CodeDomUnitFactory.CreateFormClass("%folder%", "Form1"));
            var formDesignerClassTemplate = new NetAstFileTemplate(
                "Form1.Designer",
                "Form1",
                null,
                this,
                CodeDomUnitFactory.CreateFormDesignerClass("%folder%", "Form1"));

            var formTemplate = new NetFormTemplate(
                "Form1",
                Properties.Resources.window_new,
                this,
                formDesignerClassTemplate, formClassTemplate);

            var csProject = new NetProjectTemplate(
                "Windows Forms Application",
                Properties.Resources.window_list,
                LanguageDescriptor.GetLanguage <CSharpLanguage>(),
                SubSystem.Windows,
                programClassTemplate,
                formTemplate);

            csProject.References.AddRange(new string[] { "System.Drawing.dll", "System.Windows.Forms.dll" });

            LanguageDescriptor.GetLanguage <CSharpLanguage>().Templates.Add(csProject);

            var vbProject = new NetProjectTemplate(
                "Windows Forms Application",
                Properties.Resources.window_list,
                LanguageDescriptor.GetLanguage <VisualBasicLanguage>(),
                SubSystem.Windows,
                programClassTemplate,
                formTemplate);

            vbProject.References.AddRange(new string[] { "System.Drawing.dll", "System.Windows.Forms.dll" });

            LanguageDescriptor.GetLanguage <VisualBasicLanguage>().Templates.Add(vbProject);
        }
Ejemplo n.º 14
0
 void VerifyLangData(LanguageDescriptor lang, string code, string name, string ethCode)
 {
     Assert.That(lang.IsoCode, Is.EqualTo(code));
     Assert.That(lang.Name, Is.EqualTo(name));
     Assert.That(lang.EthnologueCode, Is.EqualTo(ethCode));
 }