예제 #1
0
        public static void InlineIncludeRules(Raw raw, HighlighterSet highlighterSet)
        {
            if (raw == null)
            {
                return;
            }
            Collector collector = new Collector(highlighterSet);

            foreach (RawList list in raw.lists)
            {
                if (list.name != null)
                {
                    collector.listByName[list.name.ToLowerInvariant()] = list;
                }
            }
            foreach (Context context in raw.contexts)
            {
                if (context.name != null)
                {
                    collector.contextByName[context.name.ToLowerInvariant()] = context;
                }
            }
            foreach (ItemData itemData in raw.itemDatas)
            {
                if (itemData.name != null)
                {
                    collector.itemDataByName[itemData.name.ToLowerInvariant()] = itemData;
                }
            }

            foreach (Context context in raw.contexts)
            {
                AddExternalContext(collector, ref context.lineEndContext);
                AddExternalContext(collector, ref context.fallthroughContext);
                AddRulesExternalContext(collector, context.rules);
            }

            foreach (Context context in raw.contexts)
            {
                RecursiveInlineIncludeRules(context, collector);
            }

            raw.lists.AddRange(collector.additionLists);
            raw.contexts.AddRange(collector.additionContexts);
            raw.itemDatas.AddRange(collector.additionItemDatas);
        }
예제 #2
0
 public Collector(HighlighterSet highlighterSet)
 {
     this.highlighterSet = highlighterSet;
 }