Index: lib/src/prism/components/prism-crystal.js |
diff --git a/lib/src/prism/components/prism-crystal.js b/lib/src/prism/components/prism-crystal.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..66f24fb3024ab7f3cad9d54ac8d6ba0532da1fad |
--- /dev/null |
+++ b/lib/src/prism/components/prism-crystal.js |
@@ -0,0 +1,53 @@ |
+(function(Prism) { |
+ Prism.languages.crystal = Prism.languages.extend('ruby', { |
+ keyword: [ |
+ /\b(?:abstract|alias|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|ifdef|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|rescue|return|require|self|sizeof|struct|super|then|type|typeof|union|unless|until|when|while|with|yield|__DIR__|__FILE__|__LINE__)\b/, |
+ { |
+ pattern: /(\.\s*)(?:is_a|responds_to)\?/, |
+ lookbehind: true |
+ } |
+ ], |
+ |
+ number: /\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[0-9a-fA-F_]*[0-9a-fA-F]|(?:[0-9](?:[0-9_]*[0-9])?)(?:\.[0-9_]*[0-9])?(?:[eE][+-]?[0-9_]*[0-9])?)(?:_(?:[uif](?:8|16|32|64))?)?\b/, |
+ }); |
+ |
+ var rest = Prism.util.clone(Prism.languages.crystal); |
+ |
+ Prism.languages.insertBefore('crystal', 'string', { |
+ attribute: { |
+ pattern: /@\[.+?\]/, |
+ alias: 'attr-name', |
+ inside: { |
+ delimiter: { |
+ pattern: /^@\[|\]$/, |
+ alias: 'tag' |
+ }, |
+ rest: rest |
+ } |
+ }, |
+ |
+ expansion: [ |
+ { |
+ pattern: /\{\{.+?\}\}/, |
+ inside: { |
+ delimiter: { |
+ pattern: /^\{\{|\}\}$/, |
+ alias: 'tag' |
+ }, |
+ rest: rest |
+ } |
+ }, |
+ { |
+ pattern: /\{%.+?%\}/, |
+ inside: { |
+ delimiter: { |
+ pattern: /^\{%|%\}$/, |
+ alias: 'tag' |
+ }, |
+ rest: rest |
+ } |
+ } |
+ ] |
+ }); |
+ |
+}(Prism)); |