highlighting 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/highlighting/post_message.rb +4 -0
  4. data/lib/highlighting/version.rb +1 -1
  5. data/vendor/assets/javascripts/prism-bash.js +3 -1
  6. data/vendor/assets/javascripts/prism-bash.min.js +1 -1
  7. data/vendor/assets/javascripts/prism-bro.js +50 -0
  8. data/vendor/assets/javascripts/prism-bro.min.js +1 -0
  9. data/vendor/assets/javascripts/prism-clike.js +4 -1
  10. data/vendor/assets/javascripts/prism-clike.min.js +1 -1
  11. data/vendor/assets/javascripts/prism-coffeescript.js +7 -1
  12. data/vendor/assets/javascripts/prism-coffeescript.min.js +1 -1
  13. data/vendor/assets/javascripts/prism-core.js +82 -29
  14. data/vendor/assets/javascripts/prism-core.min.js +1 -1
  15. data/vendor/assets/javascripts/prism-csharp.js +8 -0
  16. data/vendor/assets/javascripts/prism-csharp.min.js +1 -1
  17. data/vendor/assets/javascripts/prism-groovy.js +15 -1
  18. data/vendor/assets/javascripts/prism-groovy.min.js +1 -1
  19. data/vendor/assets/javascripts/prism-haskell.js +4 -1
  20. data/vendor/assets/javascripts/prism-haskell.min.js +1 -1
  21. data/vendor/assets/javascripts/prism-java.js +9 -1
  22. data/vendor/assets/javascripts/prism-java.min.js +1 -1
  23. data/vendor/assets/javascripts/prism-javascript.js +4 -2
  24. data/vendor/assets/javascripts/prism-javascript.min.js +1 -1
  25. data/vendor/assets/javascripts/prism-kotlin.js +1 -7
  26. data/vendor/assets/javascripts/prism-kotlin.min.js +1 -1
  27. data/vendor/assets/javascripts/prism-lua.js +4 -1
  28. data/vendor/assets/javascripts/prism-lua.min.js +1 -1
  29. data/vendor/assets/javascripts/prism-powershell.js +5 -1
  30. data/vendor/assets/javascripts/prism-powershell.min.js +1 -1
  31. data/vendor/assets/javascripts/prism-protobuf.js +8 -0
  32. data/vendor/assets/javascripts/prism-protobuf.min.js +1 -0
  33. data/vendor/assets/javascripts/prism-python.js +4 -1
  34. data/vendor/assets/javascripts/prism-python.min.js +1 -1
  35. data/vendor/assets/javascripts/prism-sas.js +2 -2
  36. data/vendor/assets/javascripts/prism-sas.min.js +1 -1
  37. data/vendor/assets/javascripts/prism-scala.js +10 -1
  38. data/vendor/assets/javascripts/prism-scala.min.js +1 -1
  39. data/vendor/assets/javascripts/prism-swift.js +1 -0
  40. data/vendor/assets/javascripts/prism-swift.min.js +1 -1
  41. data/vendor/assets/javascripts/prism-yaml.js +1 -1
  42. data/vendor/assets/javascripts/prism-yaml.min.js +1 -1
  43. data/vendor/assets/javascripts/prism.js +115 -47
  44. data/vendor/assets/stylesheets/prism-coy.css +0 -1
  45. data/vendor/assets/stylesheets/prism-dark.css +0 -1
  46. data/vendor/assets/stylesheets/prism-funky.css +0 -1
  47. data/vendor/assets/stylesheets/prism-okaidia.css +0 -1
  48. data/vendor/assets/stylesheets/prism-solarizedlight.css +0 -1
  49. data/vendor/assets/stylesheets/prism-tomorrow.css +0 -1
  50. data/vendor/assets/stylesheets/prism-twilight.css +4 -5
  51. data/vendor/assets/stylesheets/prism.css +0 -1
  52. metadata +10 -5
@@ -1 +1 @@
1
- Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}});
1
+ Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}});
@@ -8,13 +8,15 @@ Prism.languages.javascript = Prism.languages.extend('clike', {
8
8
  Prism.languages.insertBefore('javascript', 'keyword', {
9
9
  'regex': {
10
10
  pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
11
- lookbehind: true
11
+ lookbehind: true,
12
+ greedy: true
12
13
  }
13
14
  });
14
15
 
15
16
  Prism.languages.insertBefore('javascript', 'class-name', {
16
17
  'template-string': {
17
- pattern: /`(?:\\`|\\?[^`])*`/,
18
+ pattern: /`(?:\\\\|\\?[^\\])*?`/,
19
+ greedy: true,
18
20
  inside: {
19
21
  'interpolation': {
20
22
  pattern: /\$\{[^}]+\}/,
@@ -1 +1 @@
1
- Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\w\W]*?>)[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript;
1
+ Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),Prism.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\w\W]*?>)[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript;
@@ -55,13 +55,7 @@
55
55
  }
56
56
  ];
57
57
 
58
- Prism.languages.kotlin['string'] = {
59
- pattern: Prism.languages.kotlin['string'],
60
- inside: {
61
- interpolation: interpolation
62
- }
63
- };
64
- Prism.languages.kotlin['raw-string'].inside = {
58
+ Prism.languages.kotlin['string'].inside = Prism.languages.kotlin['raw-string'].inside = {
65
59
  interpolation: interpolation
66
60
  };
67
61
 
@@ -1 +1 @@
1
- !function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|else|enum|final|finally|for|fun|get|if|import|in|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|out|override|package|private|protected|public|reified|return|sealed|set|super|tailrec|this|throw|to|try|val|var|when|where|while)\b/,lookbehind:!0},"function":[/\w+(?=\s*\()/,{pattern:/(\.)\w+(?=\s*\{)/,lookbehind:!0}],number:/\b(?:0[bx][\da-fA-F]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"],n.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/(["'])\1\1[\s\S]*?\1{3}/,alias:"string"}}),n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\w+@|@\w+/,alias:"symbol"}});var e=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:n.util.clone(n.languages.kotlin)}},{pattern:/\$\w+/,alias:"variable"}];n.languages.kotlin.string={pattern:n.languages.kotlin.string,inside:{interpolation:e}},n.languages.kotlin["raw-string"].inside={interpolation:e}}(Prism);
1
+ !function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|else|enum|final|finally|for|fun|get|if|import|in|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|out|override|package|private|protected|public|reified|return|sealed|set|super|tailrec|this|throw|to|try|val|var|when|where|while)\b/,lookbehind:!0},"function":[/\w+(?=\s*\()/,{pattern:/(\.)\w+(?=\s*\{)/,lookbehind:!0}],number:/\b(?:0[bx][\da-fA-F]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"],n.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/(["'])\1\1[\s\S]*?\1{3}/,alias:"string"}}),n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\w+@|@\w+/,alias:"symbol"}});var e=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:n.util.clone(n.languages.kotlin)}},{pattern:/\$\w+/,alias:"variable"}];n.languages.kotlin.string.inside=n.languages.kotlin["raw-string"].inside={interpolation:e}}(Prism);
@@ -1,7 +1,10 @@
1
1
  Prism.languages.lua = {
2
2
  'comment': /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,
3
3
  // \z may be used to skip the following space
4
- 'string': /(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,
4
+ 'string': {
5
+ pattern: /(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,
6
+ greedy: true
7
+ },
5
8
  'number': /\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,
6
9
  'keyword': /\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,
7
10
  'function': /(?!\d)\w+(?=\s*(?:[({]))/,
@@ -1 +1 @@
1
- Prism.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,number:/\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,"function":/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/};
1
+ Prism.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[\s\S]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+\.?[a-f\d]*(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|\.?\d*(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,"function":/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/};
@@ -12,6 +12,7 @@ Prism.languages.powershell = {
12
12
  'string': [
13
13
  {
14
14
  pattern: /"(`?[\w\W])*?"/,
15
+ greedy: true,
15
16
  inside: {
16
17
  'function': {
17
18
  pattern: /[^`]\$\(.*?\)/,
@@ -20,7 +21,10 @@ Prism.languages.powershell = {
20
21
  }
21
22
  }
22
23
  },
23
- /'([^']|'')*'/
24
+ {
25
+ pattern: /'([^']|'')*'/,
26
+ greedy: true
27
+ }
24
28
  ],
25
29
  // Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices
26
30
  'namespace': /\[[a-z][\w\W]*?\]/i,
@@ -1 +1 @@
1
- Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\w\W]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.+/,lookbehind:!0}],string:[{pattern:/"(`?[\w\W])*?"/,inside:{"function":{pattern:/[^`]\$\(.*?\)/,inside:{}}}},/'([^']|'')*'/],namespace:/\[[a-z][\w\W]*?\]/i,"boolean":/\$(true|false)\b/i,variable:/\$\w+\b/i,"function":[/\b(Add-(Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(Csv|Json|StringData)|Convert-Path|ConvertTo-(Csv|Html|Json|Xml)|Copy-(Item|ItemProperty)|Debug-Process|Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(Custom|List|Table|Wide)|Get-(Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(Command|Object)|Move-(Item|ItemProperty)|New-(Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(Job|PSSession)|Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(Computer|Service)|Restore-Computer|Resume-(Job|Service)|Save-Help|Select-(Object|String|Xml)|Send-MailMessage|Set-(Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(Job|Process|Service|Sleep|Transaction)|Stop-(Computer|Job|Process|Service)|Suspend-(Job|Service)|Tee-Object|Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(Event|PSSessionConfiguration)|Update-(FormatData|Help|List|TypeData)|Use-Transaction|Wait-(Event|Job|Process)|Where-Object|Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,/\b(ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(and|x?or)|(Not)?(Like|Match|Contains|In)|Replace|Join|is(Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},Prism.languages.powershell.string[0].inside.boolean=Prism.languages.powershell.boolean,Prism.languages.powershell.string[0].inside.variable=Prism.languages.powershell.variable,Prism.languages.powershell.string[0].inside.function.inside=Prism.util.clone(Prism.languages.powershell);
1
+ Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\w\W]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.+/,lookbehind:!0}],string:[{pattern:/"(`?[\w\W])*?"/,greedy:!0,inside:{"function":{pattern:/[^`]\$\(.*?\)/,inside:{}}}},{pattern:/'([^']|'')*'/,greedy:!0}],namespace:/\[[a-z][\w\W]*?\]/i,"boolean":/\$(true|false)\b/i,variable:/\$\w+\b/i,"function":[/\b(Add-(Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(Csv|Json|StringData)|Convert-Path|ConvertTo-(Csv|Html|Json|Xml)|Copy-(Item|ItemProperty)|Debug-Process|Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(Custom|List|Table|Wide)|Get-(Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(Command|Object)|Move-(Item|ItemProperty)|New-(Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(Job|PSSession)|Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(Computer|Service)|Restore-Computer|Resume-(Job|Service)|Save-Help|Select-(Object|String|Xml)|Send-MailMessage|Set-(Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(Job|Process|Service|Sleep|Transaction)|Stop-(Computer|Job|Process|Service)|Suspend-(Job|Service)|Tee-Object|Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(Event|PSSessionConfiguration)|Update-(FormatData|Help|List|TypeData)|Use-Transaction|Wait-(Event|Job|Process)|Where-Object|Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,/\b(ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(and|x?or)|(Not)?(Like|Match|Contains|In)|Replace|Join|is(Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},Prism.languages.powershell.string[0].inside.boolean=Prism.languages.powershell.boolean,Prism.languages.powershell.string[0].inside.variable=Prism.languages.powershell.variable,Prism.languages.powershell.string[0].inside.function.inside=Prism.util.clone(Prism.languages.powershell);
@@ -0,0 +1,8 @@
1
+ Prism.languages.protobuf = Prism.languages.extend('clike', {
2
+ keyword: /\b(package|import|message|enum)\b/,
3
+ builtin: /\b(required|repeated|optional|reserved)\b/,
4
+ primitive: {
5
+ pattern: /\b(double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\b/,
6
+ alias: 'symbol'
7
+ }
8
+ });
@@ -0,0 +1 @@
1
+ Prism.languages.protobuf=Prism.languages.extend("clike",{keyword:/\b(package|import|message|enum)\b/,builtin:/\b(required|repeated|optional|reserved)\b/,primitive:{pattern:/\b(double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\b/,alias:"symbol"}});
@@ -7,7 +7,10 @@ Prism.languages.python= {
7
7
  pattern: /(^|[^\\])#.*/,
8
8
  lookbehind: true
9
9
  },
10
- 'string': /("|')(?:\\?.)*?\1/,
10
+ 'string': {
11
+ pattern: /("|')(?:\\\\|\\?[^\\\r\n])*?\1/,
12
+ greedy: true
13
+ },
11
14
  'function' : {
12
15
  pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,
13
16
  lookbehind: true
@@ -1 +1 @@
1
- Prism.languages.python={"triple-quoted-string":{pattern:/"""[\s\S]+?"""|'''[\s\S]+?'''/,alias:"string"},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/};
1
+ Prism.languages.python={"triple-quoted-string":{pattern:/"""[\s\S]+?"""|'''[\s\S]+?'''/,alias:"string"},comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:{pattern:/("|')(?:\\\\|\\?[^\\\r\n])*?\1/,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/};
@@ -23,9 +23,9 @@ Prism.languages.sas = {
23
23
  alias: 'number'
24
24
  },
25
25
  'string': /(["'])(?:\1\1|(?!\1)[\s\S])*\1/,
26
- 'keyword': /\b(?:data|else|format|if|input|proc|run|then)\b/i,
26
+ 'keyword': /\b(?:data|else|format|if|input|proc\s\w+|quit|run|then)\b/i,
27
27
  // Decimal (1.2e23), hexadecimal (0c1x)
28
28
  'number': /(?:\B-|\b)(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,
29
29
  'operator': /\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,
30
30
  'punctuation': /[$%@.(){}\[\];,\\]/
31
- };
31
+ };
@@ -1 +1 @@
1
- Prism.languages.sas={datalines:{pattern:/^\s*(?:(?:data)?lines|cards);[\s\S]+?(?:\r?\n|\r);/im,alias:"string",inside:{keyword:{pattern:/^(\s*)(?:(?:data)?lines|cards)/i,lookbehind:!0},punctuation:/;/}},comment:[{pattern:/(^\s*|;\s*)\*.*;/m,lookbehind:!0},/\/\*[\s\S]+?\*\//],datetime:{pattern:/'[^']+'(?:dt?|t)\b/i,alias:"number"},string:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,keyword:/\b(?:data|else|format|if|input|proc|run|then)\b/i,number:/(?:\B-|\b)(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,punctuation:/[$%@.(){}\[\];,\\]/};
1
+ Prism.languages.sas={datalines:{pattern:/^\s*(?:(?:data)?lines|cards);[\s\S]+?(?:\r?\n|\r);/im,alias:"string",inside:{keyword:{pattern:/^(\s*)(?:(?:data)?lines|cards)/i,lookbehind:!0},punctuation:/;/}},comment:[{pattern:/(^\s*|;\s*)\*.*;/m,lookbehind:!0},/\/\*[\s\S]+?\*\//],datetime:{pattern:/'[^']+'(?:dt?|t)\b/i,alias:"number"},string:/(["'])(?:\1\1|(?!\1)[\s\S])*\1/,keyword:/\b(?:data|else|format|if|input|proc\s\w+|quit|run|then)\b/i,number:/(?:\B-|\b)(?:[\da-f]+x|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,operator:/\*\*?|\|\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\/=&]|[~¬^]=?|\b(?:eq|ne|gt|lt|ge|le|in|not)\b/i,punctuation:/[$%@.(){}\[\];,\\]/};
@@ -1,6 +1,15 @@
1
1
  Prism.languages.scala = Prism.languages.extend('java', {
2
2
  'keyword': /<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,
3
- 'string': /"""[\W\w]*?"""|"(?:[^"\\\r\n]|\\.)*"|'(?:[^\\\r\n']|\\.[^\\']*)'/,
3
+ 'string': [
4
+ {
5
+ pattern: /"""[\W\w]*?"""/,
6
+ greedy: true
7
+ },
8
+ {
9
+ pattern: /("|')(?:\\\\|\\?[^\\\r\n])*?\1/,
10
+ greedy: true
11
+ },
12
+ ],
4
13
  'builtin': /\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,
5
14
  'number': /\b(?:0x[\da-f]*\.?[\da-f]+|\d*\.?\d+e?\d*[dfl]?)\b/i,
6
15
  'symbol': /'[^\d\s\\]\w*/
@@ -1 +1 @@
1
- Prism.languages.scala=Prism.languages.extend("java",{keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,string:/"""[\W\w]*?"""|"(?:[^"\\\r\n]|\\.)*"|'(?:[^\\\r\n']|\\.[^\\']*)'/,builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,number:/\b(?:0x[\da-f]*\.?[\da-f]+|\d*\.?\d+e?\d*[dfl]?)\b/i,symbol:/'[^\d\s\\]\w*/}),delete Prism.languages.scala["class-name"],delete Prism.languages.scala["function"];
1
+ Prism.languages.scala=Prism.languages.extend("java",{keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,string:[{pattern:/"""[\W\w]*?"""/,greedy:!0},{pattern:/("|')(?:\\\\|\\?[^\\\r\n])*?\1/,greedy:!0}],builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,number:/\b(?:0x[\da-f]*\.?[\da-f]+|\d*\.?\d+e?\d*[dfl]?)\b/i,symbol:/'[^\d\s\\]\w*/}),delete Prism.languages.scala["class-name"],delete Prism.languages.scala["function"];
@@ -2,6 +2,7 @@
2
2
  Prism.languages.swift = Prism.languages.extend('clike', {
3
3
  'string': {
4
4
  pattern: /("|')(\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
5
+ greedy: true,
5
6
  inside: {
6
7
  'interpolation': {
7
8
  pattern: /\\\((?:[^()]|\([^)]+\))+\)/,
@@ -1 +1 @@
1
- Prism.languages.swift=Prism.languages.extend("clike",{string:{pattern:/("|')(\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b([\d_]+(\.[\de_]+)?|0x[a-f0-9_]+(\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b([A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),Prism.languages.swift.string.inside.interpolation.inside.rest=Prism.util.clone(Prism.languages.swift);
1
+ Prism.languages.swift=Prism.languages.extend("clike",{string:{pattern:/("|')(\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b([\d_]+(\.[\de_]+)?|0x[a-f0-9_]+(\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b([A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),Prism.languages.swift.string.inside.interpolation.inside.rest=Prism.util.clone(Prism.languages.swift);
@@ -6,7 +6,7 @@ Prism.languages.yaml = {
6
6
  },
7
7
  'comment': /#.*/,
8
8
  'key': {
9
- pattern: /(\s*[:\-,[{\r\n?][ \t]*(![^\s]+)?[ \t]*)[^\r\n{[\]},#]+?(?=\s*:\s)/,
9
+ pattern: /(\s*(?:^|[:\-,[{\r\n?])[ \t]*(![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,
10
10
  lookbehind: true,
11
11
  alias: 'atrule'
12
12
  },
@@ -1 +1 @@
1
- Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\3[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*[:\-,[{\r\n?][ \t]*(![^\s]+)?[ \t]*)[^\r\n{[\]},#]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(\d{4}-\d\d?-\d\d?([tT]|[ \t]+)\d\d?:\d{2}:\d{2}(\.\d*)?[ \t]*(Z|[-+]\d\d?(:\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(:\d{2}(\.\d*)?)?)(?=[ \t]*($|,|]|}))/m,lookbehind:!0,alias:"number"},"boolean":{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},"null":{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')(?=[ \t]*($|,|]|}))/m,lookbehind:!0},number:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)[+\-]?(0x[\da-f]+|0o[0-7]+|(\d+\.?\d*|\.?\d+)(e[\+\-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./};
1
+ Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\3[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(\d{4}-\d\d?-\d\d?([tT]|[ \t]+)\d\d?:\d{2}:\d{2}(\.\d*)?[ \t]*(Z|[-+]\d\d?(:\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(:\d{2}(\.\d*)?)?)(?=[ \t]*($|,|]|}))/m,lookbehind:!0,alias:"number"},"boolean":{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},"null":{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)(null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')(?=[ \t]*($|,|]|}))/m,lookbehind:!0},number:{pattern:/([:\-,[{]\s*(![^\s]+)?[ \t]*)[+\-]?(0x[\da-f]+|0o[0-7]+|(\d+\.?\d*|\.?\d+)(e[\+\-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./};
@@ -20,7 +20,8 @@ var _self = (typeof window !== 'undefined')
20
20
  var Prism = (function(){
21
21
 
22
22
  // Private helper vars
23
- var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i;
23
+ var lang = /\blang(?:uage)?-(\w+)\b/i;
24
+ var uniqueId = 0;
24
25
 
25
26
  var _ = _self.Prism = {
26
27
  util: {
@@ -38,6 +39,13 @@ var _ = _self.Prism = {
38
39
  return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1];
39
40
  },
40
41
 
42
+ objId: function (obj) {
43
+ if (!obj['__id']) {
44
+ Object.defineProperty(obj, '__id', { value: ++uniqueId });
45
+ }
46
+ return obj['__id'];
47
+ },
48
+
41
49
  // Deep clone a language definition (e.g. to extend it)
42
50
  clone: function (o) {
43
51
  var type = _.util.type(o);
@@ -86,19 +94,19 @@ var _ = _self.Prism = {
86
94
  insertBefore: function (inside, before, insert, root) {
87
95
  root = root || _.languages;
88
96
  var grammar = root[inside];
89
-
97
+
90
98
  if (arguments.length == 2) {
91
99
  insert = arguments[1];
92
-
100
+
93
101
  for (var newToken in insert) {
94
102
  if (insert.hasOwnProperty(newToken)) {
95
103
  grammar[newToken] = insert[newToken];
96
104
  }
97
105
  }
98
-
106
+
99
107
  return grammar;
100
108
  }
101
-
109
+
102
110
  var ret = {};
103
111
 
104
112
  for (var token in grammar) {
@@ -118,7 +126,7 @@ var _ = _self.Prism = {
118
126
  ret[token] = grammar[token];
119
127
  }
120
128
  }
121
-
129
+
122
130
  // Update references in other language definitions
123
131
  _.languages.DFS(_.languages, function(key, value) {
124
132
  if (value === root[inside] && key != inside) {
@@ -130,28 +138,38 @@ var _ = _self.Prism = {
130
138
  },
131
139
 
132
140
  // Traverse a language definition with Depth First Search
133
- DFS: function(o, callback, type) {
141
+ DFS: function(o, callback, type, visited) {
142
+ visited = visited || {};
134
143
  for (var i in o) {
135
144
  if (o.hasOwnProperty(i)) {
136
145
  callback.call(o, i, o[i], type || i);
137
146
 
138
- if (_.util.type(o[i]) === 'Object') {
139
- _.languages.DFS(o[i], callback);
147
+ if (_.util.type(o[i]) === 'Object' && !visited[_.util.objId(o[i])]) {
148
+ visited[_.util.objId(o[i])] = true;
149
+ _.languages.DFS(o[i], callback, null, visited);
140
150
  }
141
- else if (_.util.type(o[i]) === 'Array') {
142
- _.languages.DFS(o[i], callback, i);
151
+ else if (_.util.type(o[i]) === 'Array' && !visited[_.util.objId(o[i])]) {
152
+ visited[_.util.objId(o[i])] = true;
153
+ _.languages.DFS(o[i], callback, i, visited);
143
154
  }
144
155
  }
145
156
  }
146
157
  }
147
158
  },
148
159
  plugins: {},
149
-
160
+
150
161
  highlightAll: function(async, callback) {
151
- var elements = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');
162
+ var env = {
163
+ callback: callback,
164
+ selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'
165
+ };
166
+
167
+ _.hooks.run("before-highlightall", env);
168
+
169
+ var elements = env.elements || document.querySelectorAll(env.selector);
152
170
 
153
171
  for (var i=0, element; element = elements[i++];) {
154
- _.highlightElement(element, async === true, callback);
172
+ _.highlightElement(element, async === true, env.callback);
155
173
  }
156
174
  },
157
175
 
@@ -187,7 +205,9 @@ var _ = _self.Prism = {
187
205
  code: code
188
206
  };
189
207
 
190
- if (!code || !grammar) {
208
+ _.hooks.run('before-sanity-check', env);
209
+
210
+ if (!env.code || !env.grammar) {
191
211
  _.hooks.run('complete', env);
192
212
  return;
193
213
  }
@@ -261,6 +281,7 @@ var _ = _self.Prism = {
261
281
  var pattern = patterns[j],
262
282
  inside = pattern.inside,
263
283
  lookbehind = !!pattern.lookbehind,
284
+ greedy = !!pattern.greedy,
264
285
  lookbehindLength = 0,
265
286
  alias = pattern.alias;
266
287
 
@@ -281,36 +302,76 @@ var _ = _self.Prism = {
281
302
 
282
303
  pattern.lastIndex = 0;
283
304
 
284
- var match = pattern.exec(str);
305
+ var match = pattern.exec(str),
306
+ delNum = 1;
307
+
308
+ // Greedy patterns can override/remove up to two previously matched tokens
309
+ if (!match && greedy && i != strarr.length - 1) {
310
+ // Reconstruct the original text using the next two tokens
311
+ var nextToken = strarr[i + 1].matchedStr || strarr[i + 1],
312
+ combStr = str + nextToken;
313
+
314
+ if (i < strarr.length - 2) {
315
+ combStr += strarr[i + 2].matchedStr || strarr[i + 2];
316
+ }
285
317
 
286
- if (match) {
287
- if(lookbehind) {
288
- lookbehindLength = match[1].length;
318
+ // Try the pattern again on the reconstructed text
319
+ pattern.lastIndex = 0;
320
+ match = pattern.exec(combStr);
321
+ if (!match) {
322
+ continue;
289
323
  }
290
324
 
291
- var from = match.index - 1 + lookbehindLength,
292
- match = match[0].slice(lookbehindLength),
293
- len = match.length,
294
- to = from + len,
295
- before = str.slice(0, from + 1),
296
- after = str.slice(to + 1);
325
+ var from = match.index + (lookbehind ? match[1].length : 0);
326
+ // To be a valid candidate, the new match has to start inside of str
327
+ if (from >= str.length) {
328
+ continue;
329
+ }
330
+ var to = match.index + match[0].length,
331
+ len = str.length + nextToken.length;
297
332
 
298
- var args = [i, 1];
333
+ // Number of tokens to delete and replace with the new match
334
+ delNum = 3;
299
335
 
300
- if (before) {
301
- args.push(before);
336
+ if (to <= len) {
337
+ if (strarr[i + 1].greedy) {
338
+ continue;
339
+ }
340
+ delNum = 2;
341
+ combStr = combStr.slice(0, len);
302
342
  }
343
+ str = combStr;
344
+ }
303
345
 
304
- var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias);
346
+ if (!match) {
347
+ continue;
348
+ }
349
+
350
+ if(lookbehind) {
351
+ lookbehindLength = match[1].length;
352
+ }
305
353
 
306
- args.push(wrapped);
354
+ var from = match.index + lookbehindLength,
355
+ match = match[0].slice(lookbehindLength),
356
+ to = from + match.length,
357
+ before = str.slice(0, from),
358
+ after = str.slice(to);
307
359
 
308
- if (after) {
309
- args.push(after);
310
- }
360
+ var args = [i, delNum];
311
361
 
312
- Array.prototype.splice.apply(strarr, args);
362
+ if (before) {
363
+ args.push(before);
313
364
  }
365
+
366
+ var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);
367
+
368
+ args.push(wrapped);
369
+
370
+ if (after) {
371
+ args.push(after);
372
+ }
373
+
374
+ Array.prototype.splice.apply(strarr, args);
314
375
  }
315
376
  }
316
377
  }
@@ -343,10 +404,13 @@ var _ = _self.Prism = {
343
404
  }
344
405
  };
345
406
 
346
- var Token = _.Token = function(type, content, alias) {
407
+ var Token = _.Token = function(type, content, alias, matchedStr, greedy) {
347
408
  this.type = type;
348
409
  this.content = content;
349
410
  this.alias = alias;
411
+ // Copy of the full string this token was created from
412
+ this.matchedStr = matchedStr || null;
413
+ this.greedy = !!greedy;
350
414
  };
351
415
 
352
416
  Token.stringify = function(o, language, parent) {
@@ -412,10 +476,8 @@ if (!_self.document) {
412
476
  return _self.Prism;
413
477
  }
414
478
 
415
- // Get current script and highlight
416
- var script = document.getElementsByTagName('script');
417
-
418
- script = script[script.length - 1];
479
+ //Get current script and highlight
480
+ var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop();
419
481
 
420
482
  if (script) {
421
483
  _.filename = script.src;
@@ -559,7 +621,10 @@ Prism.languages.clike = {
559
621
  lookbehind: true
560
622
  }
561
623
  ],
562
- 'string': /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
624
+ 'string': {
625
+ pattern: /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
626
+ greedy: true
627
+ },
563
628
  'class-name': {
564
629
  pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,
565
630
  lookbehind: true,
@@ -590,13 +655,15 @@ Prism.languages.javascript = Prism.languages.extend('clike', {
590
655
  Prism.languages.insertBefore('javascript', 'keyword', {
591
656
  'regex': {
592
657
  pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,
593
- lookbehind: true
658
+ lookbehind: true,
659
+ greedy: true
594
660
  }
595
661
  });
596
662
 
597
663
  Prism.languages.insertBefore('javascript', 'class-name', {
598
664
  'template-string': {
599
- pattern: /`(?:\\`|\\?[^`])*`/,
665
+ pattern: /`(?:\\\\|\\?[^\\])*?`/,
666
+ greedy: true,
600
667
  inside: {
601
668
  'interpolation': {
602
669
  pattern: /\$\{[^}]+\}/,
@@ -639,13 +706,14 @@ Prism.languages.js = Prism.languages.javascript;
639
706
 
640
707
  var Extensions = {
641
708
  'js': 'javascript',
642
- 'html': 'markup',
643
- 'svg': 'markup',
644
- 'xml': 'markup',
645
709
  'py': 'python',
646
710
  'rb': 'ruby',
647
711
  'ps1': 'powershell',
648
- 'psm1': 'powershell'
712
+ 'psm1': 'powershell',
713
+ 'sh': 'bash',
714
+ 'bat': 'batch',
715
+ 'h': 'c',
716
+ 'tex': 'latex'
649
717
  };
650
718
 
651
719
  if(Array.prototype.forEach) { // Check to prevent error in IE8
@@ -703,6 +771,6 @@ Prism.languages.js = Prism.languages.javascript;
703
771
 
704
772
  };
705
773
 
706
- self.Prism.fileHighlight();
774
+ document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);
707
775
 
708
776
  })();