Ejemplo n.º 1
0
        /// <summary>
        /// To call in order to read all the keywords to the private List CompletionItem
        /// </summary>
        public void Import()
        {
            _keywords = null;

            // reads keywords
            _keywordById.Clear();
            Utils.ForEachLine(Config.FileKeywordsList, DataResources.KeywordsList, (i, line) => {
                var items = line.Split('\t');
                if (items.Length == 7)
                {
                    // 0            1       2                       3               4               5
                    // keyword_id	keyword	minimal_abbreviation	keyword_type	0/1_is_reserved	integer_initial_ranking
                    // find the KeywordType from items[1]
                    KeywordType keywordType;
                    if (!Enum.TryParse(items[3].Trim(), true, out keywordType))
                    {
                        keywordType = KeywordType.Unknow;
                    }

                    SciStyleId styleId;
                    if (!Enum.TryParse(items[6].Trim(), true, out styleId))
                    {
                        styleId = SciStyleId.Default;
                    }

                    // set flags
                    var flag    = items[4].Trim() == "1" ? ParseFlag.Reserved : 0;
                    var id      = items[0].Trim();
                    var keyword = items[1].Trim();
                    var abbr    = items[2].Trim();

                    if (!_keywordById.ContainsKey(id))
                    {
                        KeywordCompletionItem curKeyword = CompletionItem.Factory.New((int)keywordType < 30 ? CompletionType.Keyword : CompletionType.KeywordObject) as KeywordCompletionItem;
                        if (curKeyword != null)
                        {
                            curKeyword.DisplayText        = keyword;
                            curKeyword.Ranking            = int.Parse(items[5].Trim());
                            curKeyword.Flags              = flag;
                            curKeyword.KeywordType        = keywordType;
                            curKeyword.KeywordSyntaxStyle = styleId;
                            _keywordById.Add(id, curKeyword);
                        }
                    }

                    // add abbreviation?
                    if (!string.IsNullOrEmpty(abbr))
                    {
                        if (!_keywordById.ContainsKey(abbr))
                        {
                            KeywordCompletionItem curKeyword = CompletionItem.Factory.New((int)keywordType < 30 ? CompletionType.Keyword : CompletionType.KeywordObject) as KeywordCompletionItem;
                            if (curKeyword != null)
                            {
                                curKeyword.DisplayText        = abbr;
                                curKeyword.FullWord           = keyword;
                                curKeyword.Ranking            = int.Parse(items[5].Trim());
                                curKeyword.Flags              = flag | ParseFlag.Abbreviation;
                                curKeyword.KeywordType        = keywordType;
                                curKeyword.KeywordSyntaxStyle = SciStyleId.Abbreviation;
                                _keywordById.Add(abbr, curKeyword);
                            }
                        }
                    }
                }
            }, Encoding.Default);

            // reads keywords rank
            Utils.ForEachLine(Config.FileKeywordsRank, new byte[0], (i, line) => {
                var items = line.Split('\t');
                if (items.Length == 2 && _keywordById.ContainsKey(items[0]))
                {
                    int val;
                    if (int.TryParse(items[1], out val))
                    {
                        _keywordById[items[0]].Ranking = val;
                    }
                }
            }, Encoding.Default);

            // reads keywords help
            _helpByKey.Clear();
            Utils.ForEachLine(Config.FileKeywordsHelp, DataResources.KeywordsHelp, (lineNb, line) => {
                var items = line.Split('\t');
                if (items.Length > 2)
                {
                    var listSynthax = new List <string>();
                    for (int i = 2; i < items.Length; i++)
                    {
                        listSynthax.Add(items[i]);
                    }
                    _helpByKey.Add(items[0], new KeywordHelp {
                        Description = items[1],
                        Synthax     = listSynthax
                    });
                }
            }, Encoding.Default);

            // add all the known keywords to a dictionary, adding also all intermediate abbreviations (vara vari varia variabl -> for var)
            _keywordByName.Clear();
            foreach (var keyword in _keywordById.Values.OrderBy(item => item.KeywordType))
            {
                if (!_keywordByName.ContainsKey(keyword.DisplayText))
                {
                    _keywordByName.Add(keyword.DisplayText, new List <KeywordCompletionItem> {
                        keyword
                    });
                }
                else
                {
                    _keywordByName[keyword.DisplayText].Add(keyword);
                }
                if (keyword.Flags.HasFlag(ParseFlag.Abbreviation))
                {
                    var offset = 1;
                    while (keyword.FullWord.Length - offset > keyword.DisplayText.Length)
                    {
                        var intermediateAbbreviation = keyword.FullWord.Substring(0, keyword.FullWord.Length - offset);
                        if (!_keywordByName.ContainsKey(intermediateAbbreviation))
                        {
                            _keywordByName.Add(intermediateAbbreviation, new List <KeywordCompletionItem> {
                                keyword
                            });
                        }
                        else
                        {
                            _keywordByName[intermediateAbbreviation].Add(keyword);
                        }
                        offset++;
                    }
                }
            }

            if (OnImport != null)
            {
                OnImport();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// To call in order to read all the keywords to the private List CompletionItem
        /// </summary>
        public void Import()
        {
            _keywords = null;

            // reads keywords
            _keywordById.Clear();
            Utils.ForEachLine(Config.FileKeywordsList, DataResources.KeywordsList, (i, line) => {
                var items = line.Split('\t');
                if (items.Length == 5)
                {
                    // find the KeywordType from items[1]
                    KeywordType keywordType;
                    if (!Enum.TryParse(items[2], true, out keywordType))
                    {
                        keywordType = KeywordType.Unknow;
                    }

                    // set flags
                    var flag = (items[3] == "1") ? ParseFlag.Reserved : 0;
                    if (keywordType == KeywordType.Abbreviation)
                    {
                        flag = flag | ParseFlag.Abbreviation;
                    }

                    if (!_keywordById.ContainsKey(items[0]))
                    {
                        KeywordCompletionItem curKeyword = CompletionItem.Factory.New((int)keywordType < 30 ? CompletionType.Keyword : CompletionType.KeywordObject) as KeywordCompletionItem;
                        if (curKeyword != null)
                        {
                            curKeyword.DisplayText = items[1];
                            curKeyword.Ranking     = int.Parse(items[4]);
                            curKeyword.Flags       = flag;
                            curKeyword.KeywordType = keywordType;
                            _keywordById.Add(items[0], curKeyword);
                        }
                    }
                }
            }, Encoding.Default);

            // reads keywords rank
            Utils.ForEachLine(Config.FileKeywordsRank, new byte[0], (i, line) => {
                var items = line.Split('\t');
                if (items.Length == 2 && _keywordById.ContainsKey(items[0]))
                {
                    int val;
                    if (int.TryParse(items[1], out val))
                    {
                        _keywordById[items[0]].Ranking = val;
                    }
                }
            }, Encoding.Default);

            // reads abbreviations
            _abbreviations.Clear();
            Utils.ForEachLine(Config.FileAbbrev, DataResources.Abbreviations, (i, line) => {
                var items = line.Split('\t');
                if (items.Length == 2)
                {
                    _abbreviations.Add(new KeywordAbbreviation {
                        CompleteText = items[1],
                        ShortText    = items[0]
                    });
                }
            }, Encoding.Default);

            // reads keywords help
            _help.Clear();
            Utils.ForEachLine(Config.FileKeywordsHelp, DataResources.KeywordsHelp, (lineNb, line) => {
                var items = line.Split('\t');
                if (items.Count() > 2)
                {
                    var listSynthax = new List <string>();
                    for (int i = 2; i < items.Length; i++)
                    {
                        listSynthax.Add(items[i]);
                    }
                    _help.Add(items[0], new KeywordHelp {
                        Description = items[1],
                        Synthax     = listSynthax
                    });
                }
            }, Encoding.Default);

            if (OnImport != null)
            {
                OnImport();
            }
        }