Mercurial
comparison .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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:78edf6b517a0 |
---|---|
1 <!doctype html> | |
2 | |
3 <title>CodeMirror: Smarty mode</title> | |
4 <meta charset="utf-8"/> | |
5 <link rel=stylesheet href="../../doc/docs.css"> | |
6 | |
7 <link rel="stylesheet" href="../../lib/codemirror.css"> | |
8 <script src="../../lib/codemirror.js"></script> | |
9 <script src="../xml/xml.js"></script> | |
10 <script src="smarty.js"></script> | |
11 <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> | |
12 <div id=nav> | |
13 <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png" alt=""></a> | |
14 | |
15 <ul> | |
16 <li><a href="../../index.html">Home</a> | |
17 <li><a href="../../doc/manual.html">Manual</a> | |
18 <li><a href="https://github.com/codemirror/codemirror5">Code</a> | |
19 </ul> | |
20 <ul> | |
21 <li><a href="../index.html">Language modes</a> | |
22 <li><a class=active href="#">Smarty</a> | |
23 </ul> | |
24 </div> | |
25 | |
26 <article> | |
27 <h2>Smarty mode</h2> | |
28 <form><textarea id="code" name="code"> | |
29 {extends file="parent.tpl"} | |
30 {include file="template.tpl"} | |
31 | |
32 {* some example Smarty content *} | |
33 {if isset($name) && $name == 'Blog'} | |
34 This is a {$var}. | |
35 {$integer = 451}, {$array[] = "a"}, {$stringvar = "string"} | |
36 {assign var='bob' value=$var.prop} | |
37 {elseif $name == $foo} | |
38 {function name=menu level=0} | |
39 {foreach $data as $entry} | |
40 {if is_array($entry)} | |
41 - {$entry@key} | |
42 {menu data=$entry level=$level+1} | |
43 {else} | |
44 {$entry} | |
45 {/if} | |
46 {/foreach} | |
47 {/function} | |
48 {/if}</textarea></form> | |
49 | |
50 <p>Mode for Smarty version 2 or 3, which allows for custom delimiter tags.</p> | |
51 | |
52 <p>Several configuration parameters are supported:</p> | |
53 | |
54 <ul> | |
55 <li><code>leftDelimiter</code> and <code>rightDelimiter</code>, | |
56 which should be strings that determine where the Smarty syntax | |
57 starts and ends.</li> | |
58 <li><code>version</code>, which should be 2 or 3.</li> | |
59 <li><code>baseMode</code>, which can be a mode spec | |
60 like <code>"text/html"</code> to set a different background mode.</li> | |
61 </ul> | |
62 | |
63 <p><strong>MIME types defined:</strong> <code>text/x-smarty</code></p> | |
64 | |
65 <h3>Smarty 2, custom delimiters</h3> | |
66 | |
67 <form><textarea id="code2" name="code2"> | |
68 {--extends file="parent.tpl"--} | |
69 {--include file="template.tpl"--} | |
70 | |
71 {--* some example Smarty content *--} | |
72 {--if isset($name) && $name == 'Blog'--} | |
73 This is a {--$var--}. | |
74 {--$integer = 451--}, {--$array[] = "a"--}, {--$stringvar = "string"--} | |
75 {--assign var='bob' value=$var.prop--} | |
76 {--elseif $name == $foo--} | |
77 {--function name=menu level=0--} | |
78 {--foreach $data as $entry--} | |
79 {--if is_array($entry)--} | |
80 - {--$entry@key--} | |
81 {--menu data=$entry level=$level+1--} | |
82 {--else--} | |
83 {--$entry--} | |
84 {--/if--} | |
85 {--/foreach--} | |
86 {--/function--} | |
87 {--/if--}</textarea></form> | |
88 | |
89 <h3>Smarty 3</h3> | |
90 | |
91 <textarea id="code3" name="code3"> | |
92 Nested tags {$foo={counter one=1 two={inception}}+3} are now valid in Smarty 3. | |
93 | |
94 <script> | |
95 function test() { | |
96 console.log("Smarty 3 permits single curly braces followed by whitespace to NOT slip into Smarty mode."); | |
97 } | |
98 </script> | |
99 | |
100 {assign var=foo value=[1,2,3]} | |
101 {assign var=foo value=['y'=>'yellow','b'=>'blue']} | |
102 {assign var=foo value=[1,[9,8],3]} | |
103 | |
104 {$foo=$bar+2} {* a comment *} | |
105 {$foo.bar=1} {* another comment *} | |
106 {$foo = myfunct(($x+$y)*3)} | |
107 {$foo = strlen($bar)} | |
108 {$foo.bar.baz=1}, {$foo[]=1} | |
109 | |
110 Smarty "dot" syntax (note: embedded {} are used to address ambiguities): | |
111 | |
112 {$foo.a.b.c} => $foo['a']['b']['c'] | |
113 {$foo.a.$b.c} => $foo['a'][$b]['c'] | |
114 {$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] | |
115 {$foo.a.{$b.c}} => $foo['a'][$b['c']] | |
116 | |
117 {$object->method1($x)->method2($y)}</textarea> | |
118 | |
119 <script> | |
120 var editor = CodeMirror.fromTextArea(document.getElementById("code"), { | |
121 lineNumbers: true, | |
122 mode: "smarty" | |
123 }); | |
124 var editor = CodeMirror.fromTextArea(document.getElementById("code2"), { | |
125 lineNumbers: true, | |
126 mode: { | |
127 name: "smarty", | |
128 leftDelimiter: "{--", | |
129 rightDelimiter: "--}" | |
130 } | |
131 }); | |
132 var editor = CodeMirror.fromTextArea(document.getElementById("code3"), { | |
133 lineNumbers: true, | |
134 mode: {name: "smarty", version: 3, baseMode: "text/html"} | |
135 }); | |
136 </script> | |
137 | |
138 </article> |