source: node_modules/highlight.js/lib/languages/hy.js@ d24f17c

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

Initial commit

  • Property mode set to 100644
File size: 4.2 KB
Line 
1/*
2Language: Hy
3Description: Hy is a wonderful dialect of Lisp that’s embedded in Python.
4Author: Sergey Sobko <s.sobko@profitware.ru>
5Website: http://docs.hylang.org/en/stable/
6Category: lisp
7*/
8
9function hy(hljs) {
10 var SYMBOLSTART = 'a-zA-Z_\\-!.?+*=<>&#\'';
11 var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';
12 var keywords = {
13 $pattern: SYMBOL_RE,
14 'builtin-name':
15 // keywords
16 '!= % %= & &= * ** **= *= *map ' +
17 '+ += , --build-class-- --import-- -= . / // //= ' +
18 '/= < << <<= <= = > >= >> >>= ' +
19 '@ @= ^ ^= abs accumulate all and any ap-compose ' +
20 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +
21 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +
22 'callable calling-module-name car case cdr chain chr coll? combinations compile ' +
23 'compress cond cons cons? continue count curry cut cycle dec ' +
24 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +
25 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +
26 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +
27 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +
28 'flatten float? fn fnc fnr for for* format fraction genexpr ' +
29 'gensym get getattr global globals group-by hasattr hash hex id ' +
30 'identity if if* if-not if-python2 import in inc input instance? ' +
31 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +
32 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +
33 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +
34 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +
35 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +
36 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +
37 'none? nonlocal not not-in not? nth numeric? oct odd? open ' +
38 'or ord partition permutations pos? post-route postwalk pow prewalk print ' +
39 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +
40 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +
41 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +
42 'string? sum switch symbol? take take-nth take-while tee try unless ' +
43 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +
44 'xi xor yield yield-from zero? zip zip-longest | |= ~'
45 };
46
47 var SIMPLE_NUMBER_RE = '[-+]?\\d+(\\.\\d+)?';
48
49 var SYMBOL = {
50 begin: SYMBOL_RE,
51 relevance: 0
52 };
53 var NUMBER = {
54 className: 'number', begin: SIMPLE_NUMBER_RE,
55 relevance: 0
56 };
57 var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});
58 var COMMENT = hljs.COMMENT(
59 ';',
60 '$',
61 {
62 relevance: 0
63 }
64 );
65 var LITERAL = {
66 className: 'literal',
67 begin: /\b([Tt]rue|[Ff]alse|nil|None)\b/
68 };
69 var COLLECTION = {
70 begin: '[\\[\\{]', end: '[\\]\\}]'
71 };
72 var HINT = {
73 className: 'comment',
74 begin: '\\^' + SYMBOL_RE
75 };
76 var HINT_COL = hljs.COMMENT('\\^\\{', '\\}');
77 var KEY = {
78 className: 'symbol',
79 begin: '[:]{1,2}' + SYMBOL_RE
80 };
81 var LIST = {
82 begin: '\\(', end: '\\)'
83 };
84 var BODY = {
85 endsWithParent: true,
86 relevance: 0
87 };
88 var NAME = {
89 className: 'name',
90 relevance: 0,
91 keywords: keywords,
92 begin: SYMBOL_RE,
93 starts: BODY
94 };
95 var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];
96
97 LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];
98 BODY.contains = DEFAULT_CONTAINS;
99 COLLECTION.contains = DEFAULT_CONTAINS;
100
101 return {
102 name: 'Hy',
103 aliases: ['hylang'],
104 illegal: /\S/,
105 contains: [hljs.SHEBANG(), LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]
106 };
107}
108
109module.exports = hy;
Note: See TracBrowser for help on using the repository browser.