2015-10-23 4 views
4

Есть ли набор правил xshd для элемента управления AvalonEdit, чтобы выделить синтаксис JSON? Я попробовал определение JavaScript, но он не работает, т.е .:AvalonEdit - xshd для подсветки JSON

{ 
    "name" : "value" 
} 

как имя и значение имеют тот же цвет, используя определение JavaScript.

Есть ли набор правил для JSON, а если нет, как я могу изменить xshd, чтобы получить разные цвета для имени и значения в JSON?

ответ

4

Если кому-то нужно что-то вроде этого, я работал с ним в следующим образом:

<?xml version="1.0" encoding="utf-8" ?> 
<SyntaxDefinition name="Json" extensions=".js" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008"> 
    <Color name="Digits" foreground="#8700FF" exampleText="3.14" /> 
    <Color name="Value" foreground="#000CFF" exampleText="var text = &quot;Hello, World!&quot;;" /> 
    <Color name="ParamName" foreground="#057500" exampleText="var text = &quot;Hello, World!&quot;;" /> 
    <RuleSet ignoreCase="false"> 
    <Keywords color="Digits" > 
     <Word>true</Word> 
     <Word>false</Word> 
    </Keywords> 
    <Span color="ParamName"> 
     <Begin>"</Begin> 
     <End>(?=:)</End> 
    </Span> 
    <Span color="Value" multiline="true"> 
     <Begin> 
     (?&lt;=:)\040"[^"]* 
     </Begin> 
     <End>"</End> 
    </Span> 
    <Rule color="Digits">\b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?</Rule> 
    </RuleSet> 
</SyntaxDefinition> 

Не идеально, но для меня достаточно.

+0

Большое спасибо за это! Я привязал это к моей модели взгляда и прекрасно работает. Я, без сомнения, продолжу его в будущем, но это отличная отправная точка! Было бы замечательно получить запрос на получение в хранилище AvalonEdit GitHub. – wonea

-1

Просто используйте AvalonEdit's JavaScript highlighter. Код

Пример:

using (var stream = Assembly.GetAssembly(typeof(ICSharpCode.AvalonEdit.TextEditor)).GetManifestResourceStream("ICSharpCode.AvalonEdit.Highlighting.Resources.JavaScript-Mode.xshd")) 
{ 
    using (var reader = new XmlTextReader(stream)) 
    { 
     avalonEdit.SyntaxHighlighting = HighlightingLoader.Load(reader, HighlightingManager.Instance); 
     SearchPanel.Install(avalonEdit); 
    } 
} 
+1

Из вопроса OP: «Я попробовал определение для JavaScript, но он не работает». Ваш ответ не решает проблему. Также гораздо проще установить JavaScript xshd, вызывая 'ICSharpCode.AvalonEdit.Highlighting.HighlightingManager.Instance.GetDefinition (" JavaScript ");' –