github.com/elliott5/community@v0.14.1-0.20160709191136-823126fb026a/app/public/codemirror/mode/smarty/index.html (about)

     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>