openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

index.html (3973B)


      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 type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
     12 <div id=nav>
     13   <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></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/codemirror">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>