└── readme.md /readme.md: -------------------------------------------------------------------------------- 1 |

2 | Logo 3 |

4 | 5 |

Soy Cheat Sheet

6 | 7 | A collection of cool hidden and not so hidden features, to be used as a quick reference so that you turn coffee into code much faster :) 8 | 9 | ## Table of Contents 10 | 11 | * [Namespace](#namespace) 12 | * [Template](#template) 13 | * [Parameters](#parameters) 14 | * [Parameter Types](#parameter-types) 15 | * [Call](#call) 16 | * [Variables](#variables) 17 | * [Conditionals](#conditionals) 18 | * [Loops](#loops) 19 | * [Special Characters](#special-characters) 20 | * [Functions](#functions) 21 | 22 | ## Namespace 23 | 24 | ```soy 25 | {namespace foo} 26 | ``` 27 | 28 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#namespace "Namespace") 29 | 30 | ## Template 31 | 32 | ```soy 33 | /** 34 | * 35 | */ 36 | {template .hello} 37 | Hello world 38 | {/template} 39 | ``` 40 | 41 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#template "Template") 42 | 43 | ## Parameters 44 | 45 | ###### required 46 | 47 | ```soy 48 | /** 49 | * 50 | */ 51 | {template .hello} 52 | {@param name: string} 53 | 54 | Hello {$name} 55 | {/template} 56 | ``` 57 | 58 | ###### optional 59 | 60 | ```soy 61 | /** 62 | * 63 | */ 64 | {template .hello} 65 | {@param? name: string} 66 | 67 | Hello {$name} 68 | {/template} 69 | ``` 70 | 71 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#param "Parameters") 72 | 73 | ## Parameter Types 74 | 75 | ###### primitive types 76 | 77 | ``` 78 | string 79 | bool 80 | int 81 | float 82 | number 83 | ``` 84 | 85 | ###### other types 86 | 87 | ``` 88 | any 89 | ? 90 | null 91 | html 92 | ``` 93 | 94 | ###### complex types 95 | 96 | ``` 97 | list // List 98 | map // Map 99 | [a:KeyType, b:ValueType] // Record 100 | Type1|Type2 // Union 101 | ``` 102 | 103 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#parameter-type-expressions "Parameter Types") 104 | 105 | ## Call 106 | 107 | ```soy 108 | {call .hello} 109 | {param name: 'Jon' /} 110 | {/call} 111 | ``` 112 | 113 | ```soy 114 | {call .hello} 115 | {param name: $name /} 116 | {param lastName: $lastName /} 117 | {/call} 118 | ``` 119 | 120 | ```soy 121 | {call .hello data="all" /} 122 | ``` 123 | 124 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#call "Call") 125 | 126 | ## Variables 127 | 128 | ```soy 129 | {let $name: 'Jon' /} 130 | ``` 131 | 132 | ```soy 133 | {let $names: [ 134 | ['first': 'Jon', 'last': 'Snow'], 135 | ['first': 'Arya', 'last': 'Stark'] 136 | ] /} 137 | ``` 138 | 139 | ###### kind 140 | 141 | ```soy 142 | {let $name kind="text"} 143 | Jon 144 | {/let} 145 | ``` 146 | 147 | ```soy 148 | {let $name kind="html"} 149 |

Jon

150 | {/let} 151 | ``` 152 | 153 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#let "Let") 154 | 155 | ## Conditionals 156 | 157 | ###### if 158 | 159 | ```soy 160 | {if $name} 161 | Hello {$name} 162 | {/if} 163 | ``` 164 | 165 | ###### if and 166 | 167 | ```soy 168 | {if $name and $lastName} 169 | Hello {$name} {$lastName} 170 | {/if} 171 | ``` 172 | 173 | ###### if not 174 | 175 | ```soy 176 | {if not $name} 177 | Hello there 178 | {/if} 179 | ``` 180 | 181 | ###### else 182 | 183 | ```soy 184 | {if $name} 185 | Hello {$name} 186 | {else} 187 | Hello there 188 | {/if} 189 | ``` 190 | 191 | ###### elseif 192 | 193 | ```soy 194 | {if $gender == 'Male'} 195 | Hello Sir 196 | {elseif $gender == 'Female'} 197 | Hello Madam 198 | {/if} 199 | ``` 200 | 201 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#if "If / Else / ElseIf") 202 | 203 | ###### switch 204 | 205 | ```soy 206 | {switch $gender} 207 | {case 'Male'} 208 | Hello Sir 209 | {case 'Female'} 210 | Hello Madam 211 | {default} 212 | Hello Human 213 | {/switch} 214 | ``` 215 | 216 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#switch "Switch") 217 | 218 | ###### elvis 219 | 220 | ```soy 221 | Hello {$name ?: 'there'} 222 | ``` 223 | 224 | ###### ternary 225 | 226 | ```soy 227 | {$name ? 'Hello {$name}' : 'Hello there'} 228 | ``` 229 | 230 | > [See Docs](https://developers.google.com/closure/templates/docs/concepts#operators "Operators") 231 | 232 | ## Loops 233 | 234 | ###### foreach 235 | 236 | ```soy 237 | {foreach $name in $names} 238 | Hello {$name} 239 | {/foreach} 240 | ``` 241 | 242 | ###### ifempty 243 | 244 | ```soy 245 | {foreach $name in $names} 246 | Hello {$name} 247 | {ifempty} 248 | Hello there 249 | {/foreach} 250 | ``` 251 | 252 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#foreach "Foreach / Ifempty") 253 | 254 | ## Special Characters 255 | 256 | ###### literal 257 | 258 | ```soy 259 | {literal} 260 |
261 | 	function() {
262 | 		console.log('Hello');
263 | 	}
264 | 	
265 | {/literal} 266 | ``` 267 | 268 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#literal "Literal") 269 | 270 | ###### miscellaneous 271 | 272 | ```soy 273 | {sp} // space 274 | {nil} // empty string 275 | {\n} // newline 276 | {\r} // carriage return 277 | {\t} // tab 278 | {lb} // left brace 279 | {rb} // right brace 280 | ``` 281 | 282 | > [See Docs](https://developers.google.com/closure/templates/docs/commands#specialcharacters "Special Characters") 283 | 284 | ## Functions 285 | 286 | ###### any 287 | 288 | ```soy 289 | {isNonnull(value)} 290 | ``` 291 | 292 | ###### string 293 | 294 | ```soy 295 | {strContains(string, subString)} 296 | ``` 297 | 298 | ###### number 299 | 300 | ```soy 301 | {ceiling(number)} 302 | {floor(number)} 303 | {max(number, number)} 304 | {min(number, number)} 305 | {randomInt(number)} 306 | {round(number)} 307 | ``` 308 | 309 | ###### foreach 310 | 311 | ```soy 312 | {index($var)} 313 | {isFirst($var)} 314 | {isLast($var)} 315 | ``` 316 | 317 | ###### list 318 | 319 | ```soy 320 | {length(list)} 321 | ``` 322 | 323 | ###### map 324 | 325 | ```soy 326 | {augmentMap(map1, map2)} 327 | {keys(map)} 328 | ``` 329 | 330 | > [See Docs](https://developers.google.com/closure/templates/docs/functions "Functions") 331 | --------------------------------------------------------------------------------