Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #import('dart:html'); | 5 #import('dart:html'); |
| 6 #import('template.dart'); | 6 #import('template.dart'); |
| 7 #import('../lib/file_system_memory.dart'); | 7 #import('../lib/file_system_memory.dart'); |
| 8 | 8 |
| 9 String currSampleTemplate; | 9 String currSampleTemplate; |
| 10 | 10 |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 102 <span>-</span> | 102 <span>-</span> |
| 103 <span>\${age}</span> | 103 <span>\${age}</span> |
| 104 </div> | 104 </div> |
| 105 ${endWith} | 105 ${endWith} |
| 106 </h1> | 106 </h1> |
| 107 </span> | 107 </span> |
| 108 </div> | 108 </div> |
| 109 } | 109 } |
| 110 '''; | 110 '''; |
| 111 | 111 |
| 112 final String complexTemplate = ''' | 112 final String complexTemplate = ''' |
|
jacob314
2012/05/14 19:50:24
I think @''' will let you specify a string literal
| |
| 113 template ProductsForPerson(Person person, var products) { | 113 template ProductsForPerson(Person person, var products) { |
| 114 <div> | 114 <div> |
| 115 ${with} person} | 115 ${with} person person} |
| 116 <div> | 116 <div> |
| 117 <span>\${name}</span> | 117 <span>\${person.name}</span> |
| 118 <span>-</span> | 118 <span>-</span> |
| 119 <span>\${age}</span> | 119 <span>\${person.age}</span> |
| 120 </div> | 120 </div> |
| 121 ${each} products} | 121 ${each} products product} |
| 122 <div> | 122 <div> |
| 123 <span>product=\${name},users=\${users}</span> | 123 <span>product=\${product.name},users=\${product.users}</span> |
| 124 </div> | 124 </div> |
| 125 ${endEach} | 125 ${endEach} |
| 126 ${endWith} | 126 ${endWith} |
| 127 </div> | 127 </div> |
| 128 } | 128 } |
| 129 '''; | 129 '''; |
| 130 | 130 |
| 131 final String complexTemplate2 = ''' | 131 final String complexTemplate2 = ''' |
| 132 template ProductsForPerson(Person person, var products) { | 132 template ProductsForPerson(Person person, var products) { |
| 133 <div> | 133 <div> |
| 134 ${with} person} | 134 ${with} person person} |
| 135 <div> | 135 <div> |
| 136 <span>\${name}</span> | 136 <span>\${person.name}</span> |
| 137 <span>-</span> | 137 <span>-</span> |
| 138 <span>\${age}</span> | 138 <span>\${person.age}</span> |
| 139 </div> | 139 </div> |
| 140 <div> | 140 <div> |
| 141 ${each} products} | 141 ${each} products product} |
| 142 <span>product=\${name},users=\${users}</span> | 142 <span>product=\${product.name},users=\${product.users}</span> |
| 143 ${endEach} | 143 ${endEach} |
| 144 </div> | 144 </div> |
| 145 ${endWith} | 145 ${endWith} |
| 146 </div> | 146 </div> |
| 147 } | 147 } |
| 148 '''; | 148 '''; |
| 149 | 149 |
| 150 final String complexTemplate3 = ''' | 150 final String complexTemplate3 = ''' |
| 151 template ProductsForPerson(Person person, var products) { | 151 template ProductsForPerson(Person person, var products) { |
| 152 css { | 152 css { |
| 153 .sales-item { | 153 .sales-item { |
| 154 font-family: arial; | 154 font-family: arial; |
| 155 background-color: lightgray; | 155 background-color: lightgray; |
| 156 margin-left: 10px; | 156 margin-left: 10px; |
| 157 border-bottom: 1px solid white; | 157 border-bottom: 1px solid white; |
| 158 } | 158 } |
| 159 .ytd-sales { | 159 .ytd-sales { |
| 160 position: absolute; | 160 position: absolute; |
| 161 left: 100px; | 161 left: 100px; |
| 162 } | 162 } |
| 163 } | 163 } |
| 164 <div> | 164 <div> |
| 165 ${with} person} | 165 ${with} person person} |
| 166 <div> | 166 <div> |
| 167 <span>\${name}</span> | 167 <span>\${person.name}</span> |
| 168 <span>-</span> | 168 <span>-</span> |
| 169 <span>\${age}</span> | 169 <span>\${person.age}</span> |
| 170 </div> | 170 </div> |
| 171 <div> | 171 <div> |
| 172 ${each} products} | 172 ${each} products product} |
| 173 <div>product=\${name},users=\${users}</div> | 173 <div>product=\${product.name},users=\${product.users}</div> |
| 174 ${each} products.sales} | 174 ${each} products.sales sale} |
| 175 <div class="sales-item"> | 175 <div class="sales-item"> |
| 176 <span>\${country}</span> | 176 <span>\${sale.country}</span> |
| 177 <span class="ytd-sales">\\\$\${yearly}</span> | 177 <span class="ytd-sales">\\\$\${sale.yearly}</span> |
| 178 </div> | 178 </div> |
| 179 ${endEach} | 179 ${endEach} |
| 180 ${endEach} | 180 ${endEach} |
| 181 </div> | 181 </div> |
| 182 ${endWith} | 182 ${endWith} |
| 183 </div> | 183 </div> |
| 184 } | 184 } |
| 185 | 185 |
| 186 | 186 |
| 187 template NameEntry(String name, int age) { | 187 template NameEntry(String name, int age) { |
| 188 css { | 188 css { |
| 189 .name-item { | 189 .name-item { |
| 190 font-size: 18pt; | 190 font-size: 18pt; |
| 191 font-weight: bold; | 191 font-weight: bold; |
| 192 } | 192 } |
| 193 } | 193 } |
| 194 <div var=topDiv class="name-item" attr="test" attr1=test1 attr2='test2' attr3= test3> | 194 <div var=topDiv class="name-item" attr="test" attr1=test1 attr2='test2' attr3= test3> |
| 195 <span var=spanElem>\${name}</span> | 195 <span var=spanElem>\${name}</span> |
| 196 <span> - </span> | 196 <span> - </span> |
| 197 <span>\${age}</span> | 197 <span>\${age}</span> |
| 198 </div> | 198 </div> |
| 199 } | 199 } |
| 200 '''; | 200 '''; |
| 201 | 201 |
| 202 // Test #each in a #each where the nested #each is a top-level child of the | 202 // Test #each in a #each where the nested #each is a top-level child of the |
| 203 // outer #each. | 203 // outer #each. |
| 204 final String complexTemplate4 = ''' | 204 final String complexTemplate4 = ''' |
| 205 template DivisionSales(var divisions) { | 205 template DivisionSales(var divisions) { |
| 206 <div> | 206 <div> |
| 207 \${#each divisions} | 207 \${#each divisions division} |
| 208 <div> | 208 <div> |
| 209 <span>\${name}</span> | 209 <span>\${division.name}</span> |
| 210 <span>-</span> | 210 <span>-</span> |
| 211 <span>\${id}</span> | 211 <span>\${division.id}</span> |
| 212 </div> | 212 </div> |
| 213 <div> | 213 <div> |
| 214 \${#each divisions.products} | 214 \${#each divisions.products divProduct} |
| 215 <div> | 215 <div> |
| 216 <span var=productItem>▶</span> | 216 <span var=productItem>▶</span> |
| 217 <span>Product</span> | 217 <span>Product</span> |
| 218 <span>\${name}</span> | 218 <span>\${divProduct.name}</span> |
| 219 <span>\${users} users</span> | 219 <span>\${divProduct.users} users</span> |
| 220 </div> | 220 </div> |
| 221 \${#each products.sales} | 221 \${#each products.sales sale} |
| 222 <div> | 222 <div> |
| 223 <span>\${country}</span> | 223 <span>\${sale.country}</span> |
| 224 <span>\\\$\${yearly}</span> | 224 <span>\\\$\${sale.yearly}</span> |
| 225 </div> | 225 </div> |
| 226 \${/each} | 226 \${/each} |
| 227 \${/each} | 227 \${/each} |
| 228 </div> | 228 </div> |
| 229 \${/each} | 229 \${/each} |
| 230 </div> | 230 </div> |
| 231 } | 231 } |
| 232 '''; | 232 '''; |
| 233 | 233 |
| 234 | 234 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 288 border-top: 1px solid white; | 288 border-top: 1px solid white; |
| 289 line-height: 18pt; | 289 line-height: 18pt; |
| 290 padding-left: 5px; | 290 padding-left: 5px; |
| 291 } | 291 } |
| 292 .ytd-sales { | 292 .ytd-sales { |
| 293 position: absolute; | 293 position: absolute; |
| 294 left: 100px; | 294 left: 100px; |
| 295 } | 295 } |
| 296 } | 296 } |
| 297 <div> | 297 <div> |
| 298 \${#each divisions} | 298 \${#each divisions division} |
| 299 <div class="division-item"> | 299 <div class="division-item"> |
| 300 <span>\${name}</span> | 300 <span>\${division.name}</span> |
| 301 <span>-</span> | 301 <span>-</span> |
| 302 <span>\${id}</span> | 302 <span>\${division.id}</span> |
| 303 </div> | 303 </div> |
| 304 <div> | 304 <div> |
| 305 \${#each divisions.products} | 305 \${#each divisions.products divProduct} |
| 306 <div class="product-item"> | 306 <div class="product-item"> |
| 307 <span var=productZippy class="expand-collapse expand">▼</span> | 307 <span var=productZippy class="expand-collapse expand">▼</span> |
| 308 <span class='product-title'>Product</span> | 308 <span class='product-title'>Product</span> |
| 309 <span class="product-name">\${name}</span> | 309 <span class="product-name">\${divProduct.name}</span> |
| 310 <span class="product-users" align=right>\${users} users</span> | 310 <span class="product-users" align=right>\${divProduct.users |
| 311 } users</span> | |
| 311 <div class="show-sales"> | 312 <div class="show-sales"> |
| 312 \${#each products.sales} | 313 \${#each products.sales sale} |
| 313 <div class="sales-item"> | 314 <div class="sales-item"> |
| 314 <span>\${country}</span> | 315 <span>\${sale.country}</span> |
| 315 <span class="ytd-sales">\\\$\${yearly}</span> | 316 <span class="ytd-sales">\\\$\${sale.yearly}</span> |
| 316 </div> | 317 </div> |
| 317 \${/each} | 318 \${/each} |
| 318 </div> | 319 </div> |
| 319 </div> | 320 </div> |
| 320 \${/each} | 321 \${/each} |
| 321 </div> | 322 </div> |
| 322 \${/each} | 323 \${/each} |
| 323 </div> | 324 </div> |
| 324 } | 325 } |
| 325 | 326 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 388 } | 389 } |
| 389 | 390 |
| 390 // Generate the Dart class(es) for all template(s). | 391 // Generate the Dart class(es) for all template(s). |
| 391 // Pass in filename of 'foo' for testing in UITest. | 392 // Pass in filename of 'foo' for testing in UITest. |
| 392 code.add(Codegen.generate(templates, 'foo')); | 393 code.add(Codegen.generate(templates, 'foo')); |
| 393 } catch (final htmlException) { | 394 } catch (final htmlException) { |
| 394 // TODO(terry): TBD | 395 // TODO(terry): TBD |
| 395 print("ERROR unhandled EXCEPTION"); | 396 print("ERROR unhandled EXCEPTION"); |
| 396 } | 397 } |
| 397 } | 398 } |
| 398 | 399 |
| 399 /* | 400 /* |
| 400 if (!debug) { | 401 if (!debug) { |
| 401 try { | 402 try { |
| 402 cssParseAndValidate(cssExpr, cssWorld); | 403 cssParseAndValidate(cssExpr, cssWorld); |
| 403 } catch (final cssException) { | 404 } catch (final cssException) { |
| 404 templateValid = false; | 405 templateValid = false; |
| 405 dumpTree = cssException.toString(); | 406 dumpTree = cssException.toString(); |
| 406 } | 407 } |
| 407 } else if (parseOnly) { | 408 } else if (parseOnly) { |
| 408 try { | 409 try { |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 563 initHtmlWorld(false); | 564 initHtmlWorld(false); |
| 564 | 565 |
| 565 // Don't display any colors in the UI. | 566 // Don't display any colors in the UI. |
| 566 options.useColors = false; | 567 options.useColors = false; |
| 567 | 568 |
| 568 // Replace error handler bring up alert for any problems. | 569 // Replace error handler bring up alert for any problems. |
| 569 world.printHandler = (String msg) { | 570 world.printHandler = (String msg) { |
| 570 window.alert(msg); | 571 window.alert(msg); |
| 571 }; | 572 }; |
| 572 } | 573 } |
| OLD | NEW |