Ejemplo n.º 1
0
        public void AddHighlight(string id, IHighlight highlight)
        {
            if (partitionDic.ContainsKey(id)) {
                var part = partitionDic[id];
                //part.Highlight = highlight;
                part.Highlight.getRules().AddRange(highlight.getRules());

                var rules = part.Highlight.getRules();

                foreach (var rule in rules) {
                    if (rule is MultiLineRule) {
                        MultiLineRule prule = rule as MultiLineRule;
                        var partid = prule.id;
                        var newpart = new Partition(prule, new DefaultHighlight(prule.attr));
                        part.AddPartition(newpart);
                        partitionDic.Add(partid, newpart);
                    }
                }

            } else {
                var part = new Partition(id, highlight);
                partitionDic.Add(id, part);

                var rules = highlight.getRules();
                foreach (var rule in rules) {
                    if (rule is MultiLineRule) {
                        MultiLineRule prule = rule as MultiLineRule;
                        var partid = prule.id;
                        var newpart = new Partition(prule, new DefaultHighlight(prule.attr));
                        part.AddPartition(newpart);
                        partitionDic.Add(partid, newpart);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public void AddPartition(Partition partition)
 {
     partition.Parent = this;
     Children.Add(partition);
 }
Ejemplo n.º 3
0
        public void SetPartition(string ID, bool force)
        {
            if (partitionDic.ContainsKey(ID)) {
                    if (force) {
                        this.partition = partitionDic[ID];

                        var highlight = this.partition.Highlight;
                        defaultAttr = highlight.getDefault();

                        lex.ClearRule();

                        var ch = this.partition.Children;
                        foreach (var item in ch) {
                            //this.lex.AddPartRule(item.GetPartRule());
                            //this.lex.AddPartRule(item.rule);
                        }
                        this.lex.AddRule(highlight.getRules());
                    }
                    else {
                        SetPartition(partitionDic[ID]);
                    }
            }
        }
Ejemplo n.º 4
0
        public void SetPartition(Partition partition)
        {
            if (this.partition != partition) {
                this.partition = partition;

                var highlight = this.partition.Highlight;
                defaultAttr = highlight.getDefault();

                lex.ClearRule();

                var ch = this.partition.Children;
                //var parent = this.partition.Parent;
                //var ch = parent.Children;
                foreach (var item in ch) {
                    //this.lex.AddPartRule(item.GetPartRule());
                    //this.lex.AddPartRule(item.rule);
                }
                this.lex.AddRule(highlight.getRules());
            }
        }