Есть ли способ использовать XSHD (определение синтаксиса XML) с любыми библиотеками подсветки sysntax в Javascript, как Prism.js другой разработчик - PullRequest
0 голосов
/ 11 октября 2019

Мне нужно показать текстовую область с подсветкой синтаксиса для некоторых настроенных языков в моем проекте Angular 6. У меня есть файл XSHD (определение синтаксиса XML) для этого настроенного языка. Есть ли какая-нибудь библиотека подсветки синтаксиса в javascript, которая бы принимала это определение? Любое понимание того, что можно сделать?

Я знаю, что вы можете расширить Prism.js пользовательскими определениями, но они должны быть в Regex, что сильно отличается от формата XSHD. Кроме того, документация по созданию определения языка в prism.js не очень понятна.

Это содержимое одного из файлов XSHD:

<Properties>
<Property name="LineComment" value="#"/>

<Digits name = "Digits" bold = "false" italic = "false" color = "DarkRed"/>

<RuleSets>
    <RuleSet ignorecase = "false">
        <Delimiters>~!%^*()-+=|\/{}[]:;"'&lt;&gt; , .?</Delimiters>

        <Span name = "LineComment" bold = "false" italic = "false" color = "Green" stopateol = "true">
            <Begin>#</Begin>
        </Span>

        <Span name = "String" bold = "false" italic = "false" color = "DarkRed" stopateol = "true" escapecharacter="\">
            <Begin>"</Begin>
            <End>"</End>
        </Span>

  <KeyWords name = "Punctuation" bold = "false" italic = "false" color = "Black">
            <Key word = "?" />
            <Key word = "," />
            <Key word = "." />
            <Key word = ";" />
            <Key word = "(" />
            <Key word = ")" />
            <Key word = "[" />
            <Key word = "]" />
            <Key word = "{" />
            <Key word = "}" />
            <Key word = "+" />
            <Key word = "-" />
            <Key word = "/" />
            <Key word = "%" />
            <Key word = "*" />
            <Key word = "&lt;" />
            <Key word = "&gt;" />
            <Key word = "^" />
            <Key word = "=" />
            <Key word = "~" />
            <Key word = "!" />
            <Key word = "|" />
            <Key word = "&amp;" />
        </KeyWords>

  <KeyWords name = "IncludeKeyword" bold="true" italic="false" color="Red">
    <Key word = "INCLUDE" />
  </KeyWords>

  <KeyWords name = "SimulationKeyword" bold="true" italic="false" color="DarkViolet">
    <Key word = "SIMULATION" />
  </KeyWords>

  <KeyWords name = "IncludeDollarKeyword" bold="true" italic="false" color="Red" bgcolor="Yellow">
    <Key word = "INCLUDE$" />
  </KeyWords>

  <KeyWords name = "AfiKeywords" bold="false" italic="false" color="Blue">
    <Key word = "reservoir" />
    <Key word = "simulation" />
    <Key word = "type" />
    <Key word = "preserve" />
    <Key word = "ixignore" />
    <Key word = "skip_model_def" />
    <Key word = "time" />
  </KeyWords>

</RuleSet>

...