* Added coding style modes to SimpleMDE * Moved the CodeMirror addon from simplemd to codemirror directory
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!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>
 |