Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: lib/src/prism/components/prism-elixir.js

Issue 1418513006: update elements and fix some bugs (Closed) Base URL: git@github.com:dart-lang/polymer_elements.git@master
Patch Set: code review updates Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/prism/components/prism-docker.min.js ('k') | lib/src/prism/components/prism-elixir.min.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/prism/components/prism-elixir.js
diff --git a/lib/src/prism/components/prism-elixir.js b/lib/src/prism/components/prism-elixir.js
new file mode 100644
index 0000000000000000000000000000000000000000..42ae187e1172277b4e2706b8db90b09d2c3a0e87
--- /dev/null
+++ b/lib/src/prism/components/prism-elixir.js
@@ -0,0 +1,90 @@
+Prism.languages.elixir = {
+ // Negative look-ahead is needed for string interpolation
+ // Negative look-behind is needed to avoid highlighting markdown headers in
+ // multi-line doc strings
+ 'comment': {
+ pattern: /(^|[^#])#(?![{#]).*/m,
+ lookbehind: true
+ },
+ // ~r"""foo""", ~r'''foo''', ~r/foo/, ~r|foo|, ~r"foo", ~r'foo', ~r(foo), ~r[foo], ~r{foo}, ~r<foo>
+ 'regex': /~[rR](?:("""|'''|[\/|"'])(?:\\.|(?!\1)[^\\])+\1|\((?:\\\)|[^)])+\)|\[(?:\\\]|[^\]])+\]|\{(?:\\\}|[^}])+\}|<(?:\\>|[^>])+>)[uismxfr]*/,
+ 'string': [
+ {
+ // ~s"""foo""", ~s'''foo''', ~s/foo/, ~s|foo|, ~s"foo", ~s'foo', ~s(foo), ~s[foo], ~s{foo}, ~s<foo>
+ pattern: /~[cCsSwW](?:("""|'''|[\/|"'])(?:\\.|(?!\1)[^\\])+\1|\((?:\\\)|[^)])+\)|\[(?:\\\]|[^\]])+\]|\{(?:\\\}|#\{[^}]+\}|[^}])+\}|<(?:\\>|[^>])+>)[csa]?/,
+ inside: {
+ // See interpolation below
+ }
+ },
+ {
+ pattern: /("""|''')[\s\S]*?\1/,
+ inside: {
+ // See interpolation below
+ }
+ },
+ {
+ // Multi-line strings are allowed
+ pattern: /("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/,
+ inside: {
+ // See interpolation below
+ }
+ }
+ ],
+ 'atom': {
+ // Look-behind prevents bad highlighting of the :: operator
+ pattern: /(^|[^:]):\w+/,
+ lookbehind: true,
+ alias: 'symbol'
+ },
+ // Look-ahead prevents bad highlighting of the :: operator
+ 'attr-name': /\w+:(?!:)/,
+ 'capture': {
+ // Look-behind prevents bad highlighting of the && operator
+ pattern: /(^|[^&])&(?:[^&\s\d()][^\s()]*|(?=\())/,
+ lookbehind: true,
+ alias: 'function'
+ },
+ 'argument': {
+ // Look-behind prevents bad highlighting of the && operator
+ pattern: /(^|[^&])&\d+/,
+ lookbehind: true,
+ alias: 'variable'
+ },
+ 'attribute': {
+ pattern: /@[\S]+/,
+ alias: 'variable'
+ },
+ 'number': /\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,
+ 'keyword': /\b(?:after|alias|and|case|catch|cond|def(?:callback|exception|impl|module|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|require|rescue|try|unless|use|when)\b/,
+ 'boolean': /\b(?:true|false|nil)\b/,
+ 'operator': [
+ /\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,
+ {
+ // We don't want to match <<
+ pattern: /([^<])<(?!<)/,
+ lookbehind: true
+ },
+ {
+ // We don't want to match >>
+ pattern: /([^>])>(?!>)/,
+ lookbehind: true
+ }
+ ],
+ 'punctuation': /<<|>>|[.,%\[\]{}()]/
+};
+
+Prism.languages.elixir.string.forEach(function(o) {
+ o.inside = {
+ 'interpolation': {
+ pattern: /#\{[^}]+\}/,
+ inside: {
+ 'delimiter': {
+ pattern: /^#\{|\}$/,
+ alias: 'punctuation'
+ },
+ rest: Prism.util.clone(Prism.languages.elixir)
+ }
+ }
+ };
+});
+
« no previous file with comments | « lib/src/prism/components/prism-docker.min.js ('k') | lib/src/prism/components/prism-elixir.min.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698