Mercurial
diff .cms/lib/codemirror/mode/smarty/index.html @ 0:78edf6b517a0 draft
24.10
author | Coffee CMS <info@coffee-cms.ru> |
---|---|
date | Fri, 11 Oct 2024 22:40:23 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.cms/lib/codemirror/mode/smarty/index.html Fri Oct 11 22:40:23 2024 +0000 @@ -0,0 +1,138 @@ +<!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>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> +<div id=nav> + <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png" alt=""></a> + + <ul> + <li><a href="../../index.html">Home</a> + <li><a href="../../doc/manual.html">Manual</a> + <li><a href="https://github.com/codemirror/codemirror5">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>