mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
3.9 KiB
138 lines
3.9 KiB
<!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>
|
|
|