source: node_modules/refractor/lang/django.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.1 KB
Line 
1'use strict'
2var refractorMarkupTemplating = require('./markup-templating.js')
3module.exports = django
4django.displayName = 'django'
5django.aliases = ['jinja2']
6function django(Prism) {
7 Prism.register(refractorMarkupTemplating)
8 // Django/Jinja2 syntax definition for Prism.js <http://prismjs.com> syntax highlighter.
9 // Mostly it works OK but can paint code incorrectly on complex html/template tag combinations.
10 ;(function (Prism) {
11 Prism.languages.django = {
12 comment: /^\{#[\s\S]*?#\}$/,
13 tag: {
14 pattern: /(^\{%[+-]?\s*)\w+/,
15 lookbehind: true,
16 alias: 'keyword'
17 },
18 delimiter: {
19 pattern: /^\{[{%][+-]?|[+-]?[}%]\}$/,
20 alias: 'punctuation'
21 },
22 string: {
23 pattern: /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,
24 greedy: true
25 },
26 filter: {
27 pattern: /(\|)\w+/,
28 lookbehind: true,
29 alias: 'function'
30 },
31 test: {
32 pattern: /(\bis\s+(?:not\s+)?)(?!not\b)\w+/,
33 lookbehind: true,
34 alias: 'function'
35 },
36 function: /\b[a-z_]\w+(?=\s*\()/i,
37 keyword:
38 /\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\b/,
39 operator: /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,
40 number: /\b\d+(?:\.\d+)?\b/,
41 boolean: /[Ff]alse|[Nn]one|[Tt]rue/,
42 variable: /\b\w+\b/,
43 punctuation: /[{}[\](),.:;]/
44 }
45 var pattern = /\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}|\{#[\s\S]*?#\}/g
46 var markupTemplating = Prism.languages['markup-templating']
47 Prism.hooks.add('before-tokenize', function (env) {
48 markupTemplating.buildPlaceholders(env, 'django', pattern)
49 })
50 Prism.hooks.add('after-tokenize', function (env) {
51 markupTemplating.tokenizePlaceholders(env, 'django')
52 }) // Add an Jinja2 alias
53 Prism.languages.jinja2 = Prism.languages.django
54 Prism.hooks.add('before-tokenize', function (env) {
55 markupTemplating.buildPlaceholders(env, 'jinja2', pattern)
56 })
57 Prism.hooks.add('after-tokenize', function (env) {
58 markupTemplating.tokenizePlaceholders(env, 'jinja2')
59 })
60 })(Prism)
61}
Note: See TracBrowser for help on using the repository browser.