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

Unified Diff: polymer_1.0.4/bower_components/prism/components/prism-smarty.js

Issue 1205703007: Add polymer 1.0 to npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Renamed folder to 1.0.4 Created 5 years, 6 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
Index: polymer_1.0.4/bower_components/prism/components/prism-smarty.js
diff --git a/polymer_1.0.4/bower_components/prism/components/prism-smarty.js b/polymer_1.0.4/bower_components/prism/components/prism-smarty.js
new file mode 100644
index 0000000000000000000000000000000000000000..a38049cc9b3e80ef1f6f7239e92c4f3c33c56501
--- /dev/null
+++ b/polymer_1.0.4/bower_components/prism/components/prism-smarty.js
@@ -0,0 +1,124 @@
+/* TODO
+ Add support for variables inside double quoted strings
+ Add support for {php}
+*/
+
+(function(Prism) {
+
+ var smarty_pattern = /\{\*[\w\W]+?\*\}|\{[\w\W]+?\}/g;
+ var smarty_litteral_start = '{literal}';
+ var smarty_litteral_end = '{/literal}';
+ var smarty_litteral_mode = false;
+
+ Prism.languages.smarty = Prism.languages.extend('markup', {
+ 'smarty': {
+ pattern: smarty_pattern,
+ inside: {
+ 'delimiter': {
+ pattern: /^\{|\}$/i,
+ alias: 'punctuation'
+ },
+ 'string': /(["'])(\\?.)*?\1/,
+ 'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,
+ 'variable': [
+ /\$(?!\d)\w+/,
+ /#(?!\d)\w+#/,
+ {
+ pattern: /(\.|->)(?!\d)\w+/,
+ lookbehind: true
+ },
+ {
+ pattern: /(\[)(?!\d)\w+(?=\])/,
+ lookbehind: true
+ }
+ ],
+ 'function': [
+ {
+ pattern: /(\|\s*)@?(?!\d)\w+/,
+ lookbehind: true
+ },
+ /^\/?(?!\d)\w+/,
+ /(?!\d)\w+(?=\()/
+ ],
+ 'attr-name': {
+ // Value is made optional because it may have already been tokenized
+ pattern: /\w+\s*=\s*(?:(?!\d)\w+)?/,
+ inside: {
+ "variable": {
+ pattern: /(=\s*)(?!\d)\w+/,
+ lookbehind: true
+ },
+ "punctuation": /=/
+ }
+ },
+ 'punctuation': /[\[\]().,=\|:`]|\->/,
+ 'operator': [
+ /[+\-*\/%]|===?|[!<>]=?|&&|\|\|/,
+ /\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,
+ /\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\b/
+ ],
+ 'keyword': /\b(?:false|off|on|no|true|yes)\b/
+ }
+ }
+ });
+
+ // Comments are inserted at top so that they can
+ // surround markup
+ Prism.languages.insertBefore('smarty', 'tag', {
+ 'smarty-comment': {
+ pattern: /\{\*[\w\W]*?\*\}/,
+ alias: ['smarty','comment']
+ }
+ });
+
+ // Tokenize all inline Smarty expressions
+ Prism.hooks.add('before-highlight', function(env) {
+ if (env.language !== 'smarty') {
+ return;
+ }
+
+ env.tokenStack = [];
+
+ env.backupCode = env.code;
+ env.code = env.code.replace(smarty_pattern, function(match) {
+
+ // Smarty tags inside {literal} block are ignored
+ if(match === smarty_litteral_end) {
+ smarty_litteral_mode = false;
+ }
+
+ if(!smarty_litteral_mode) {
+ if(match === smarty_litteral_start) {
+ smarty_litteral_mode = true;
+ }
+ env.tokenStack.push(match);
+
+ return '___SMARTY' + env.tokenStack.length + '___';
+ }
+ return match;
+ });
+ });
+
+ // Restore env.code for other plugins (e.g. line-numbers)
+ Prism.hooks.add('before-insert', function(env) {
+ if (env.language === 'smarty') {
+ env.code = env.backupCode;
+ delete env.backupCode;
+ }
+ });
+
+ // Re-insert the tokens after highlighting
+ // and highlight them with defined grammar
+ Prism.hooks.add('after-highlight', function(env) {
+ if (env.language !== 'smarty') {
+ return;
+ }
+
+ for (var i = 0, t; t = env.tokenStack[i]; i++) {
+ env.highlightedCode = env.highlightedCode.replace('___SMARTY' + (i + 1) + '___', Prism.highlight(t, env.grammar, 'smarty'));
+ }
+
+ env.element.innerHTML = env.highlightedCode;
+ });
+
+}(Prism));

Powered by Google App Engine
This is Rietveld 408576698