File indexing completed on 2025-02-02 03:54:44
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>highlight.jsonnet</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Jsonnet) - Theme (Breeze Dark)"/> 0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre> 0007 <span style="font-weight:bold">local</span> utils <span style="color:#3f8058">=</span> <span style="font-weight:bold">import</span> <span style="color:#f44f4f">'utils.libsonnet'</span><span style="color:#3f8058">;</span> 0008 0009 <span style="color:#7a7c7d">/* A C-style</span> 0010 <span style="color:#7a7c7d"> comment.</span> 0011 <span style="color:#7a7c7d">*/</span> 0012 <span style="color:#7a7c7d"># A Python-style comment.</span> 0013 0014 <span style="color:#7a7c7d">// Define a "local" function.</span> 0015 <span style="color:#7a7c7d">// Default arguments are like Python:</span> 0016 <span style="font-weight:bold">local</span> <span style="color:#8e44ad">my_function</span><span style="color:#3f8058">(</span>x<span style="color:#3f8058">,</span> y<span style="color:#3f8058">=</span><span style="color:#f67400">10</span><span style="color:#3f8058">)</span> <span style="color:#3f8058">=</span> x <span style="color:#3f8058">+</span> y<span style="color:#3f8058">;</span> 0017 0018 <span style="font-weight:bold">local</span> object <span style="color:#3f8058">=</span> <span style="color:#3f8058">{</span> 0019 <span style="color:#7a7c7d">// A method</span> 0020 <span style="color:#8e44ad">my_method</span><span style="color:#3f8058">(</span>x<span style="color:#3f8058">):</span> x <span style="color:#3f8058">*</span> x<span style="color:#3f8058">,</span> 0021 <span style="color:#3f8058">};</span> 0022 0023 <span style="font-weight:bold">local</span> string1 <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'Farmer</span><span style="color:#3daee9">\'</span><span style="color:#f44f4f">s Gin'</span><span style="color:#3f8058">;</span> 0024 <span style="font-weight:bold">local</span> string_newline1 <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'this is</span> 0025 <span style="color:#f44f4f">a valid string</span> 0026 <span style="color:#f44f4f">with newlines'</span><span style="color:#3f8058">;</span> 0027 <span style="font-weight:bold">local</span> string_newline2 <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"this is</span> 0028 <span style="color:#f44f4f">also</span> 0029 <span style="color:#f44f4f">a valid string"</span><span style="color:#3f8058">;</span> 0030 0031 <span style="font-weight:bold">local</span> timcollins <span style="color:#3f8058">=</span> <span style="color:#f44f4f">|||</span> 0032 <span style="color:#f44f4f"> The Tom Collins is essentially gin and</span> 0033 <span style="color:#f44f4f"> lemonade. The bitters add complexity.</span> 0034 <span style="color:#f44f4f">|||</span><span style="color:#3f8058">;</span> 0035 0036 <span style="font-weight:bold">local</span> obj <span style="color:#3f8058">=</span> <span style="color:#3f8058">{</span> 0037 <span style="color:#f44f4f">"foo"</span><span style="color:#3f8058">:</span> <span style="color:#f67400">1</span><span style="color:#3f8058">,</span> 0038 <span style="color:#f44f4f">"bar"</span><span style="color:#3f8058">:</span> <span style="color:#3f8058">{</span> 0039 <span style="color:#f44f4f">"arr"</span><span style="color:#3f8058">:</span> <span style="color:#3f8058">[</span><span style="color:#f67400">1</span><span style="color:#3f8058">,</span> <span style="color:#f67400">2</span><span style="color:#3f8058">,</span> <span style="color:#f67400">3</span><span style="color:#3f8058">],</span> 0040 <span style="color:#f44f4f">"number"</span><span style="color:#3f8058">:</span> <span style="color:#f67400">10</span> <span style="color:#3f8058">+</span> <span style="color:#f67400">7</span><span style="color:#3f8058">,</span> 0041 <span style="color:#3f8058">},</span> 0042 <span style="color:#3f8058">};</span> 0043 0044 <span style="color:#7a7c7d">// Define a local function.</span> 0045 <span style="color:#7a7c7d">// Default arguments are like Python:</span> 0046 <span style="font-weight:bold">local</span> <span style="color:#8e44ad">my_function</span><span style="color:#3f8058">(</span>x<span style="color:#3f8058">,</span> y<span style="color:#3f8058">=</span><span style="color:#f67400">10</span><span style="color:#3f8058">)</span> <span style="color:#3f8058">=</span> x <span style="color:#3f8058">+</span> y<span style="color:#3f8058">;</span> 0047 0048 <span style="color:#7a7c7d">// Define a local multiline function.</span> 0049 <span style="font-weight:bold">local</span> <span style="color:#8e44ad">multiline_function</span><span style="color:#3f8058">(</span>x<span style="color:#3f8058">)</span> <span style="color:#3f8058">=</span> 0050 <span style="color:#7a7c7d">// One can nest locals.</span> 0051 <span style="font-weight:bold">local</span> temp <span style="color:#3f8058">=</span> x <span style="color:#3f8058">*</span> <span style="color:#f67400">2</span><span style="color:#3f8058">;</span> 0052 <span style="color:#7a7c7d">// Every local ends with a semi-colon.</span> 0053 <span style="color:#3f8058">[</span>temp<span style="color:#3f8058">,</span> temp <span style="color:#3f8058">+</span> <span style="color:#f67400">1</span><span style="color:#3f8058">];</span> 0054 0055 <span style="font-weight:bold">local</span> object <span style="color:#3f8058">=</span> <span style="color:#3f8058">{</span> 0056 <span style="color:#7a7c7d">// A method</span> 0057 <span style="color:#8e44ad">my_method</span><span style="color:#3f8058">(</span>x<span style="color:#3f8058">):</span> x <span style="color:#3f8058">*</span> x<span style="color:#3f8058">,</span> 0058 <span style="color:#3f8058">};</span> 0059 0060 <span style="font-weight:bold">local</span> large <span style="color:#3f8058">=</span> true<span style="color:#3f8058">;</span> 0061 0062 <span style="color:#3f8058">{</span> 0063 0064 <span style="color:#7a7c7d">// Functions are first class citizens.</span> 0065 call_inline_function<span style="color:#3f8058">:</span> 0066 <span style="color:#3f8058">(</span><span style="color:#8e44ad">function</span><span style="color:#3f8058">(</span>x<span style="color:#3f8058">)</span> x <span style="color:#3f8058">*</span> x<span style="color:#3f8058">)(</span><span style="color:#f67400">5</span><span style="color:#3f8058">),</span> 0067 0068 call_multiline_function<span style="color:#3f8058">:</span> <span style="color:#8e44ad">multiline_function</span><span style="color:#3f8058">(</span><span style="color:#f67400">4</span><span style="color:#3f8058">),</span> 0069 0070 <span style="color:#7a7c7d">// Using the variable fetches the function,</span> 0071 <span style="color:#7a7c7d">// the parens call the function.</span> 0072 call<span style="color:#3f8058">:</span> <span style="color:#8e44ad">my_function</span><span style="color:#3f8058">(</span><span style="color:#f67400">2</span><span style="color:#3f8058">),</span> 0073 0074 <span style="color:#7a7c7d">// Like python, parameters can be named at</span> 0075 <span style="color:#7a7c7d">// call time.</span> 0076 named_params<span style="color:#3f8058">:</span> <span style="color:#8e44ad">my_function</span><span style="color:#3f8058">(</span>x<span style="color:#3f8058">=</span><span style="color:#f67400">2</span><span style="color:#3f8058">),</span> 0077 <span style="color:#7a7c7d">// This allows changing their order</span> 0078 named_params2<span style="color:#3f8058">:</span> <span style="color:#8e44ad">my_function</span><span style="color:#3f8058">(</span>y<span style="color:#3f8058">=</span><span style="color:#f67400">3</span><span style="color:#3f8058">,</span> x<span style="color:#3f8058">=</span><span style="color:#f67400">2</span><span style="color:#3f8058">),</span> 0079 0080 <span style="color:#7a7c7d">// object.my_method returns the function,</span> 0081 <span style="color:#7a7c7d">// which is then called like any other.</span> 0082 call_method1<span style="color:#3f8058">:</span> object<span style="color:#3f8058">.</span><span style="color:#8e44ad">my_method</span><span style="color:#3f8058">(</span><span style="color:#f67400">3</span><span style="color:#3f8058">),</span> 0083 0084 standard_lib<span style="color:#3f8058">:</span> 0085 <span style="font-weight:bold">std</span><span style="color:#3f8058">.</span><span style="color:#8e44ad">join</span><span style="color:#3f8058">(</span><span style="color:#f44f4f">' '</span><span style="color:#3f8058">,</span> <span style="font-weight:bold">std</span><span style="color:#3f8058">.</span><span style="color:#8e44ad">split</span><span style="color:#3f8058">(</span><span style="color:#f44f4f">"foo/bar"</span><span style="color:#3f8058">,</span> <span style="color:#f44f4f">'/'</span><span style="color:#3f8058">)),</span> 0086 len<span style="color:#3f8058">:</span> <span style="color:#3f8058">[</span> 0087 <span style="font-weight:bold">std</span><span style="color:#3f8058">.</span><span style="color:#8e44ad">length</span><span style="color:#3f8058">(</span><span style="color:#f44f4f">'hello'</span><span style="color:#3f8058">),</span> 0088 <span style="font-weight:bold">std</span><span style="color:#3f8058">.</span><span style="color:#8e44ad">length</span><span style="color:#3f8058">([</span><span style="color:#f67400">1</span><span style="color:#3f8058">,</span> <span style="color:#f67400">2</span><span style="color:#3f8058">,</span> <span style="color:#f67400">3</span><span style="color:#3f8058">]),</span> 0089 <span style="color:#3f8058">],</span> 0090 0091 cocktails<span style="color:#3f8058">:</span> <span style="color:#3f8058">{</span> 0092 <span style="font-weight:bold">local</span> factor <span style="color:#3f8058">=</span> <span style="color:#fdbc4b;font-weight:bold">if</span> large <span style="color:#fdbc4b;font-weight:bold">then</span> <span style="color:#f67400">2</span> <span style="color:#fdbc4b;font-weight:bold">else</span> <span style="color:#f67400">1</span><span style="color:#3f8058">,</span> 0093 0094 <span style="color:#7a7c7d">// Ingredient quantities are in fl oz.</span> 0095 <span style="color:#f44f4f">'Tom Collins'</span><span style="color:#3f8058">:</span> <span style="color:#3f8058">{</span> 0096 ingredients<span style="color:#3f8058">:</span> <span style="color:#3f8058">[</span> 0097 <span style="color:#3f8058">{</span> kind<span style="color:#3f8058">:</span> string1<span style="color:#3f8058">,</span> qty<span style="color:#3f8058">:</span> <span style="color:#f67400">1.5</span><span style="color:#3f8058">*</span>factor <span style="color:#3f8058">},</span> 0098 <span style="color:#3f8058">{</span> kind<span style="color:#3f8058">:</span> <span style="color:#f44f4f">'Lemon'</span><span style="color:#3f8058">,</span> qty<span style="color:#3f8058">:</span> <span style="color:#f67400">1</span> <span style="color:#3f8058">},</span> 0099 <span style="color:#3f8058">{</span> kind<span style="color:#3f8058">:</span> <span style="color:#f44f4f">'Simple Syrup'</span><span style="color:#3f8058">,</span> qty<span style="color:#3f8058">:</span> <span style="color:#f67400">0.5E+1</span> <span style="color:#3f8058">},</span> 0100 <span style="color:#3f8058">{</span> kind<span style="color:#3f8058">:</span> <span style="color:#f44f4f">'Soda'</span><span style="color:#3f8058">,</span> qty<span style="color:#3f8058">:</span> <span style="color:#f67400">2</span> <span style="color:#3f8058">},</span> 0101 <span style="color:#3f8058">{</span> kind<span style="color:#3f8058">:</span> <span style="color:#f44f4f">'Angostura'</span><span style="color:#3f8058">,</span> qty<span style="color:#3f8058">:</span> <span style="color:#f44f4f">'dash'</span> <span style="color:#3f8058">},</span> 0102 <span style="color:#3f8058">],</span> 0103 garnish<span style="color:#3f8058">:</span> <span style="color:#f44f4f">'Maraschino Cherry'</span><span style="color:#3f8058">,</span> 0104 served<span style="color:#3f8058">:</span> <span style="color:#f44f4f">'Tall'</span><span style="color:#3f8058">,</span> 0105 description<span style="color:#3f8058">:</span> timcollins<span style="color:#3f8058">,</span> 0106 <span style="color:#3f8058">},</span> 0107 <span style="color:#3f8058">},</span> 0108 <span style="color:#3f8058">}</span> 0109 </pre></body></html>