« Highlight.js » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 42 : Ligne 42 :
* [https://highlightjs.readthedocs.io/en/latest/language-guide.html Language definition guide]
* [https://highlightjs.readthedocs.io/en/latest/language-guide.html Language definition guide]
* [https://highlightjs.readthedocs.io/en/latest/reference.html Mode reference]
* [https://highlightjs.readthedocs.io/en/latest/reference.html Mode reference]
<filebox fn='test/detect/[nouveau langage]/default.txt' lang='nohighlight'>
Code de démo
</filebox>


<filebox fn='src/languages/[nouveau langage].js' lang='javascript' collapsed>
<filebox fn='src/languages/[nouveau langage].js' lang='javascript' collapsed>
Ligne 89 : Ligne 85 :


* [http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html CSS classes reference]
* [http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html CSS classes reference]
== Test ==
<filebox fn='test/detect/[nouveau langage]/default.txt' lang='nohighlight'>
Code de démo
</filebox>
<filebox fn='test/markup/[nouveau langage]/default.txt' lang='nohighlight'>
Code de démo
<!-- comment -->
</filebox>
<filebox fn='test/markup/[nouveau langage]/default.expect.txt' lang='nohighlight'>
Expected result
<span class="hljs-comment">&lt;!-- comment --&gt;</span>
</filebox>


== Pre-defined modes and regular expressions ==
== Pre-defined modes and regular expressions ==

Version du 4 avril 2023 à 20:50

Liens

Build

Bash.svg
git clone https://github.com/isagalaev/highlight.js

cd highlight.js/
# installation des dépendances dans ./node_modules
# npm i utilise le fichier package.json
npm i

# création du dossier build et de ses fichiers
node tools/build.js -t browser -n :common csharp cpp
# -t browser, target (browser, cdn, node, all)
# -n, Disable compression
# :common, langages de base
# csharp cpp, les langages c# et c++

# the build result is in the build/ directory.

Test

Après avoir buildé

  • build/demo/index.html
  • tools/developer.html
Bash.svg
# run unit test
cd test
npm test

Ajouter un nouveau langage

src/languages/[nouveau langage].js
/*
 * Language: [nouveau langage]
 * Requires: xml.js, csharp.js
 * Author: Moi <moi@domaine.fr>
 * Category: common
 */

function(hljs) {
  var KEYWORDS = {
    $pattern: /-[a-z]+/,
    keyword: 'abc def',
    literal: 'null false true',
    type: 'string int',
    built_in: 'constant class function'
  };

  var comment = hljs.COMMENT(
    '//',  // tout ce qui commence par //
    '$'    // jusqu'à la fin de la ligne
  );

  const xxx = {
    scope: 'predefined scope',
    begin: '= ',
    end: ' ='
  };

  return {
    aliases: ['name1', 'name2'],
    keywords: KEYWORDS,
    illegal: /::/,
    contains: [                // Sub-modes
      comment,
      hljs.HASH_COMMENT_MODE,  // already defined comment pattern
      xxx
    ]
  };
}

Test

test/detect/[nouveau langage]/default.txt
Code de démo
test/markup/[nouveau langage]/default.txt
Code de démo
<!-- comment -->
test/markup/[nouveau langage]/default.expect.txt
Expected result
<span class="hljs-comment">&lt;!-- comment --&gt;</span>

Pre-defined modes and regular expressions

src/lib/modes.js
export const IDENT_RE = '[a-zA-Z]\\w*';
export const TITLE_MODE = {
  scope: 'title',
  begin: IDENT_RE,
  relevance: 0
};

export const NUMBER_RE = '\\b\\d+(\\.\\d+)?';
export const NUMBER_MODE = {
  scope: 'number',
  begin: NUMBER_RE,
  relevance: 0
};

export const C_LINE_COMMENT_MODE = COMMENT('//', '$');
export const C_BLOCK_COMMENT_MODE = COMMENT('/\\*', '\\*/');
export const HASH_COMMENT_MODE = COMMENT('#', '$');

Category

assembler common config css
enterprise functional graphics lisp
markup protocols scientific scripting
system template

Installation

Bash.svg
npm install -g highlight.js
# highlight.js → /usr/lib/node_modules/highlight.js/lib/
# languages → /usr/lib/node_modules/highlight.js/lib/languages
# css → /usr/lib/node_modules/highlight.js/styles/