diff options
Diffstat (limited to 'public/vendor/codemirror/mode/smarty')
-rw-r--r-- | public/vendor/codemirror/mode/smarty/index.html | 138 | ||||
-rw-r--r-- | public/vendor/codemirror/mode/smarty/smarty.js | 225 |
2 files changed, 0 insertions, 363 deletions
diff --git a/public/vendor/codemirror/mode/smarty/index.html b/public/vendor/codemirror/mode/smarty/index.html deleted file mode 100644 index b19c8f09..00000000 --- a/public/vendor/codemirror/mode/smarty/index.html +++ /dev/null @@ -1,138 +0,0 @@ -<!doctype html> - -<title>CodeMirror: Smarty mode</title> -<meta charset="utf-8"/> -<link rel=stylesheet href="../../doc/docs.css"> - -<link rel="stylesheet" href="../../lib/codemirror.css"> -<script src="../../lib/codemirror.js"></script> -<script src="../xml/xml.js"></script> -<script src="smarty.js"></script> -<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> -<div id=nav> - <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> - - <ul> - <li><a href="../../index.html">Home</a> - <li><a href="../../doc/manual.html">Manual</a> - <li><a href="https://github.com/codemirror/codemirror">Code</a> - </ul> - <ul> - <li><a href="../index.html">Language modes</a> - <li><a class=active href="#">Smarty</a> - </ul> -</div> - -<article> -<h2>Smarty mode</h2> -<form><textarea id="code" name="code"> -{extends file="parent.tpl"} -{include file="template.tpl"} - -{* some example Smarty content *} -{if isset($name) && $name == 'Blog'} - This is a {$var}. - {$integer = 451}, {$array[] = "a"}, {$stringvar = "string"} - {assign var='bob' value=$var.prop} -{elseif $name == $foo} - {function name=menu level=0} - {foreach $data as $entry} - {if is_array($entry)} - - {$entry@key} - {menu data=$entry level=$level+1} - {else} - {$entry} - {/if} - {/foreach} - {/function} -{/if}</textarea></form> - -<p>Mode for Smarty version 2 or 3, which allows for custom delimiter tags.</p> - -<p>Several configuration parameters are supported:</p> - -<ul> - <li><code>leftDelimiter</code> and <code>rightDelimiter</code>, - which should be strings that determine where the Smarty syntax - starts and ends.</li> - <li><code>version</code>, which should be 2 or 3.</li> - <li><code>baseMode</code>, which can be a mode spec - like <code>"text/html"</code> to set a different background mode.</li> -</ul> - -<p><strong>MIME types defined:</strong> <code>text/x-smarty</code></p> - -<h3>Smarty 2, custom delimiters</h3> - -<form><textarea id="code2" name="code2"> -{--extends file="parent.tpl"--} -{--include file="template.tpl"--} - -{--* some example Smarty content *--} -{--if isset($name) && $name == 'Blog'--} - This is a {--$var--}. - {--$integer = 451--}, {--$array[] = "a"--}, {--$stringvar = "string"--} - {--assign var='bob' value=$var.prop--} -{--elseif $name == $foo--} - {--function name=menu level=0--} - {--foreach $data as $entry--} - {--if is_array($entry)--} - - {--$entry@key--} - {--menu data=$entry level=$level+1--} - {--else--} - {--$entry--} - {--/if--} - {--/foreach--} - {--/function--} -{--/if--}</textarea></form> - -<h3>Smarty 3</h3> - -<textarea id="code3" name="code3"> -Nested tags {$foo={counter one=1 two={inception}}+3} are now valid in Smarty 3. - -<script> -function test() { - console.log("Smarty 3 permits single curly braces followed by whitespace to NOT slip into Smarty mode."); -} -</script> - -{assign var=foo value=[1,2,3]} -{assign var=foo value=['y'=>'yellow','b'=>'blue']} -{assign var=foo value=[1,[9,8],3]} - -{$foo=$bar+2} {* a comment *} -{$foo.bar=1} {* another comment *} -{$foo = myfunct(($x+$y)*3)} -{$foo = strlen($bar)} -{$foo.bar.baz=1}, {$foo[]=1} - -Smarty "dot" syntax (note: embedded {} are used to address ambiguities): - -{$foo.a.b.c} => $foo['a']['b']['c'] -{$foo.a.$b.c} => $foo['a'][$b]['c'] -{$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] -{$foo.a.{$b.c}} => $foo['a'][$b['c']] - -{$object->method1($x)->method2($y)}</textarea> - -<script> -var editor = CodeMirror.fromTextArea(document.getElementById("code"), { - lineNumbers: true, - mode: "smarty" -}); -var editor = CodeMirror.fromTextArea(document.getElementById("code2"), { - lineNumbers: true, - mode: { - name: "smarty", - leftDelimiter: "{--", - rightDelimiter: "--}" - } -}); -var editor = CodeMirror.fromTextArea(document.getElementById("code3"), { - lineNumbers: true, - mode: {name: "smarty", version: 3, baseMode: "text/html"} -}); -</script> - -</article> diff --git a/public/vendor/codemirror/mode/smarty/smarty.js b/public/vendor/codemirror/mode/smarty/smarty.js deleted file mode 100644 index 6e0fbed4..00000000 --- a/public/vendor/codemirror/mode/smarty/smarty.js +++ /dev/null @@ -1,225 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -/** - * Smarty 2 and 3 mode. - */ - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - - CodeMirror.defineMode("smarty", function(config, parserConf) { - var rightDelimiter = parserConf.rightDelimiter || "}"; - var leftDelimiter = parserConf.leftDelimiter || "{"; - var version = parserConf.version || 2; - var baseMode = CodeMirror.getMode(config, parserConf.baseMode || "null"); - - var keyFunctions = ["debug", "extends", "function", "include", "literal"]; - var regs = { - operatorChars: /[+\-*&%=<>!?]/, - validIdentifier: /[a-zA-Z0-9_]/, - stringChar: /['"]/ - }; - - var last; - function cont(style, lastType) { - last = lastType; - return style; - } - - function chain(stream, state, parser) { - state.tokenize = parser; - return parser(stream, state); - } - - // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode - function doesNotCount(stream, pos) { - if (pos == null) pos = stream.pos; - return version === 3 && leftDelimiter == "{" && - (pos == stream.string.length || /\s/.test(stream.string.charAt(pos))); - } - - function tokenTop(stream, state) { - var string = stream.string; - for (var scan = stream.pos;;) { - var nextMatch = string.indexOf(leftDelimiter, scan); - scan = nextMatch + leftDelimiter.length; - if (nextMatch == -1 || !doesNotCount(stream, nextMatch + leftDelimiter.length)) break; - } - if (nextMatch == stream.pos) { - stream.match(leftDelimiter); - if (stream.eat("*")) { - return chain(stream, state, tokenBlock("comment", "*" + rightDelimiter)); - } else { - state.depth++; - state.tokenize = tokenSmarty; - last = "startTag"; - return "tag"; - } - } - - if (nextMatch > -1) stream.string = string.slice(0, nextMatch); - var token = baseMode.token(stream, state.base); - if (nextMatch > -1) stream.string = string; - return token; - } - - // parsing Smarty content - function tokenSmarty(stream, state) { - if (stream.match(rightDelimiter, true)) { - if (version === 3) { - state.depth--; - if (state.depth <= 0) { - state.tokenize = tokenTop; - } - } else { - state.tokenize = tokenTop; - } - return cont("tag", null); - } - - if (stream.match(leftDelimiter, true)) { - state.depth++; - return cont("tag", "startTag"); - } - - var ch = stream.next(); - if (ch == "$") { - stream.eatWhile(regs.validIdentifier); - return cont("variable-2", "variable"); - } else if (ch == "|") { - return cont("operator", "pipe"); - } else if (ch == ".") { - return cont("operator", "property"); - } else if (regs.stringChar.test(ch)) { - state.tokenize = tokenAttribute(ch); - return cont("string", "string"); - } else if (regs.operatorChars.test(ch)) { - stream.eatWhile(regs.operatorChars); - return cont("operator", "operator"); - } else if (ch == "[" || ch == "]") { - return cont("bracket", "bracket"); - } else if (ch == "(" || ch == ")") { - return cont("bracket", "operator"); - } else if (/\d/.test(ch)) { - stream.eatWhile(/\d/); - return cont("number", "number"); - } else { - - if (state.last == "variable") { - if (ch == "@") { - stream.eatWhile(regs.validIdentifier); - return cont("property", "property"); - } else if (ch == "|") { - stream.eatWhile(regs.validIdentifier); - return cont("qualifier", "modifier"); - } - } else if (state.last == "pipe") { - stream.eatWhile(regs.validIdentifier); - return cont("qualifier", "modifier"); - } else if (state.last == "whitespace") { - stream.eatWhile(regs.validIdentifier); - return cont("attribute", "modifier"); - } if (state.last == "property") { - stream.eatWhile(regs.validIdentifier); - return cont("property", null); - } else if (/\s/.test(ch)) { - last = "whitespace"; - return null; - } - - var str = ""; - if (ch != "/") { - str += ch; - } - var c = null; - while (c = stream.eat(regs.validIdentifier)) { - str += c; - } - for (var i=0, j=keyFunctions.length; i<j; i++) { - if (keyFunctions[i] == str) { - return cont("keyword", "keyword"); - } - } - if (/\s/.test(ch)) { - return null; - } - return cont("tag", "tag"); - } - } - - function tokenAttribute(quote) { - return function(stream, state) { - var prevChar = null; - var currChar = null; - while (!stream.eol()) { - currChar = stream.peek(); - if (stream.next() == quote && prevChar !== '\\') { - state.tokenize = tokenSmarty; - break; - } - prevChar = currChar; - } - return "string"; - }; - } - - function tokenBlock(style, terminator) { - return function(stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = tokenTop; - break; - } - stream.next(); - } - return style; - }; - } - - return { - startState: function() { - return { - base: CodeMirror.startState(baseMode), - tokenize: tokenTop, - last: null, - depth: 0 - }; - }, - copyState: function(state) { - return { - base: CodeMirror.copyState(baseMode, state.base), - tokenize: state.tokenize, - last: state.last, - depth: state.depth - }; - }, - innerMode: function(state) { - if (state.tokenize == tokenTop) - return {mode: baseMode, state: state.base}; - }, - token: function(stream, state) { - var style = state.tokenize(stream, state); - state.last = last; - return style; - }, - indent: function(state, text) { - if (state.tokenize == tokenTop && baseMode.indent) - return baseMode.indent(state.base, text); - else - return CodeMirror.Pass; - }, - blockCommentStart: leftDelimiter + "*", - blockCommentEnd: "*" + rightDelimiter - }; - }); - - CodeMirror.defineMIME("text/x-smarty", "smarty"); -}); |