override protected Raw NewRaw(string type)
    {
        string file = scanner.GetSyntaxFileByName(type);

        if (string.IsNullOrEmpty(file))
        {
            if (mainForm.Dialogs != null)
            {
                mainForm.Dialogs.ShowInfo("Syntax highlighting", "Missing syntax: " + type);
            }
            return(null);
        }
        XmlDocument xml = xmlLoader.Load(file, false);
        Raw         raw = Raw.Parse(xml);

        Raw.PrefixContexts(raw, type);
        Raw.InlineIncludeRules(raw, this);
        return(raw);
    }
Ejemplo n.º 2
0
        public void Parse_IncludeRulesInOtherFiles()
        {
            XmlDocument xml = new XmlDocument();

            xml.LoadXml(@"<?xml version='1.0' encoding='UTF-8'?>
				<language name='test' extensions='*.test'>
				    <highlighting>
				        <list name='keywords0'>
				            <item>word0</item>
				            <item>word1</item>
				        </list>
				        <contexts>
				            <context attribute='a0' lineEndContext='#stay' name='Normal'>
				                <keyword attribute='a1' context='#stay' String='keywords0'/>
								<IncludeRules context='IncludeContext'/>
								<IncludeRules context='##Outer'/>
				            </context>
							<context attribute='a2' lineEndContext='#stay' name='IncludeContext'>
								<StringDetect attribute='a3' context='#stay' String='include'/>
							</context>
				        </contexts>
				        <itemDatas>
				            <itemData name='a0' defStyleNum='dsNormal'/>
				            <itemData name='a1' defStyleNum='dsKeyword'/>
				            <itemData name='a2' defStyleNum='dsDataType'/>
				            <itemData name='a3' defStyleNum='dsChar'/>
				        </itemDatas>
				    </highlighting>
				</language>"                );

            XmlDocument outerXml = new XmlDocument();

            outerXml.LoadXml(@"<?xml version='1.0' encoding='UTF-8'?>
				<language name='test' extensions='*.test'>
				    <highlighting>
				        <list name='keywords2'>
				            <item>word0</item>
				        </list>
				        <contexts>
				            <context attribute='a0' lineEndContext='#stay' name='OuterNormal'>
								<IncludeRules context='OuterIncludeContext'/>
				            </context>
							<context attribute='a4' lineEndContext='#stay' name='OuterIncludeContext'>
								<StringDetect attribute='a0' context='#stay' String='include'/>
							</context>
				        </contexts>
				        <itemDatas>
				            <itemData name='a0' defStyleNum='dsNormal'/>
				            <itemData name='a4' defStyleNum='dsKeyword'/>
				        </itemDatas>
				    </highlighting>
				</language>"                );

            TestHighlighterSet highlighterSet = new TestHighlighterSet();
            Raw outerRaw = Raw.Parse(outerXml);

            Raw.InlineIncludeRules(outerRaw, highlighterSet);
            highlighterSet.SetData("Outer", outerRaw);
            Raw raw = Raw.Parse(xml);

            Raw.InlineIncludeRules(raw, highlighterSet);
            Assert.AreEqual("<language>" +
                            "<highlighting>" +
                            "<list name='keywords0'>" +
                            "<item>word0</item>" +
                            "<item>word1</item>" +
                            "</list>" +
                            "<list name='keywords2'>" +
                            "<item>word0</item>" +
                            "</list>" +
                            "<contexts>" +
                            "<context name='Normal' attribute='a0' lineEndContext='#stay'>" +
                            "<keyword attribute='a1' context='#stay' String='keywords0'/>" +
                            "<StringDetect attribute='a3' context='#stay' String='include'/>" +
                            "<StringDetect attribute='a0' context='#stay' String='include'/>" +
                            "</context>" +
                            "<context name='IncludeContext' attribute='a2' lineEndContext='#stay'>" +
                            "<StringDetect attribute='a3' context='#stay' String='include'/>" +
                            "</context>" +

                            "<context name='OuterNormal' attribute='a0' lineEndContext='#stay'>" +
                            "<StringDetect attribute='a0' context='#stay' String='include'/>" +
                            "</context>" +
                            "<context name='OuterIncludeContext' attribute='a4' lineEndContext='#stay'>" +
                            "<StringDetect attribute='a0' context='#stay' String='include'/>" +
                            "</context>" +

                            "</contexts>" +
                            "<itemDatas>" +
                            "<itemData name='a0' defStyleNum='dsNormal'/>" +
                            "<itemData name='a1' defStyleNum='dsKeyword'/>" +
                            "<itemData name='a2' defStyleNum='dsDataType'/>" +
                            "<itemData name='a3' defStyleNum='dsChar'/>" +

                            "<itemData name='a4' defStyleNum='dsKeyword'/>" +
                            "</itemDatas>" +
                            "</highlighting>" +
                            "<general>" +
                            "<keywords/>" +
                            "</general>" +
                            "</language>", raw.ToString());
        }