yellow-brick-road 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rst +148 -0
- data/Rakefile +37 -0
- data/lib/tasks/yellow-brick-road_tasks.rake +4 -0
- data/lib/yellow-brick-road.rb +6 -0
- data/lib/yellow-brick-road/config.rb +15 -0
- data/lib/yellow-brick-road/directive_processor.rb +68 -0
- data/lib/yellow-brick-road/engine.rb +22 -0
- data/lib/yellow-brick-road/soy_processor.rb +56 -0
- data/lib/yellow-brick-road/utils.rb +38 -0
- data/lib/yellow-brick-road/version.rb +3 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +12 -0
- data/test/dummy/app/assets/javascripts/closure-deps.js +4 -0
- data/test/dummy/app/assets/javascripts/my-closure/simple.js.soy +14 -0
- data/test/dummy/app/assets/javascripts/my-closure/start.js +25 -0
- data/test/dummy/app/assets/stylesheets/application.css +7 -0
- data/test/dummy/app/controllers/application_controller.rb +7 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/application/index.html.erb +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +18 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +51 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +30 -0
- data/test/dummy/config/environments/production.rb +60 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +10 -0
- data/test/dummy/config/initializers/yellow_brick_road.rb +2 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/log/development.log +13924 -0
- data/test/dummy/log/test.log +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/tmp/cache/assets/BE0/120/sprockets%2F751842b8c6750008c7310d182600d173 +142 -0
- data/test/dummy/tmp/cache/assets/C19/950/sprockets%2F142437f1d8d9424007b4a882a5429333 +1372 -0
- data/test/dummy/tmp/cache/assets/C4B/D00/sprockets%2F400f22c081529179ce3d079457de3009 +806 -0
- data/test/dummy/tmp/cache/assets/C5A/EE0/sprockets%2Fb711429ed948c503b718d077037780f8 +0 -0
- data/test/dummy/tmp/cache/assets/C5B/A80/sprockets%2F508569b474262724c61a461f7777dab7 +1118 -0
- data/test/dummy/tmp/cache/assets/C6C/660/sprockets%2F2c298b3b02232a21527680685a3efc30 +9289 -0
- data/test/dummy/tmp/cache/assets/C72/8A0/sprockets%2F167b265129e30d87d253c406db305c60 +293 -0
- data/test/dummy/tmp/cache/assets/C7E/9F0/sprockets%2F89862076204c62c4593ac20de32da909 +9 -0
- data/test/dummy/tmp/cache/assets/C8B/5F0/sprockets%2Fc6a4470b5c21e285e829a99365839b24 +0 -0
- data/test/dummy/tmp/cache/assets/C92/D20/sprockets%2F2e618f7805f445889aec94885a500f03 +457 -0
- data/test/dummy/tmp/cache/assets/C98/FD0/sprockets%2Fb11442af041f96e87a43a1dc11231745 +283 -0
- data/test/dummy/tmp/cache/assets/CA3/520/sprockets%2F5379d7143c6c52b11b88dc0ab5436133 +277 -0
- data/test/dummy/tmp/cache/assets/CA5/450/sprockets%2F6bb727c9312a749134ad67323a317f0d +73 -0
- data/test/dummy/tmp/cache/assets/CA5/4F0/sprockets%2Feeb7de7771527700af194c0441d29101 +709 -0
- data/test/dummy/tmp/cache/assets/CA6/E90/sprockets%2F611f68180f43c4181f06ae5c5f8201e2 +1546 -0
- data/test/dummy/tmp/cache/assets/CA7/310/sprockets%2F45664cf816315200b574e029fde6f10a +0 -0
- data/test/dummy/tmp/cache/assets/CA9/9D0/sprockets%2F2672e32464cf7267c4ba3d028f54b153 +224 -0
- data/test/dummy/tmp/cache/assets/CAB/5A0/sprockets%2F7f50e0289f150c8636ac9253129bc13c +2556 -0
- data/test/dummy/tmp/cache/assets/CB5/7E0/sprockets%2F42ff6672683b2029233a800e7539eeee +474 -0
- data/test/dummy/tmp/cache/assets/CB6/DC0/sprockets%2F2f9882155bb2d4d3ab5d708951857c60 +494 -0
- data/test/dummy/tmp/cache/assets/CBB/680/sprockets%2F1dc336d96fb52df34b458185559922b5 +1018 -0
- data/test/dummy/tmp/cache/assets/CBC/640/sprockets%2F67d2e0d9e5129d237e575d2780c64b47 +1260 -0
- data/test/dummy/tmp/cache/assets/CBE/550/sprockets%2Fd680cac830e0b3408ba910f0b0421147 +25 -0
- data/test/dummy/tmp/cache/assets/CC7/790/sprockets%2F69941f32a12e4f99d4a57f65386d870d +608 -0
- data/test/dummy/tmp/cache/assets/CCB/F80/sprockets%2Fa865701ef2ec41155e524772c31a1a2b +1088 -0
- data/test/dummy/tmp/cache/assets/CCE/580/sprockets%2F879411ed27ed1c557d57853d8f579b56 +0 -0
- data/test/dummy/tmp/cache/assets/CD0/070/sprockets%2F6748fe8481965f260d9c56b7f9f508a2 +1530 -0
- data/test/dummy/tmp/cache/assets/CD4/750/sprockets%2Faf3505141ecb3169ce41ce519d136924 +0 -0
- data/test/dummy/tmp/cache/assets/CD6/A90/sprockets%2F3f55ac75b9fb8426312116bcb940a580 +2539 -0
- data/test/dummy/tmp/cache/assets/CD9/6C0/sprockets%2F5e2458bc52da90ba349a66035e3b6752 +0 -0
- data/test/dummy/tmp/cache/assets/CD9/F50/sprockets%2F9008bf696500cfae1d61f045f209181e +256 -0
- data/test/dummy/tmp/cache/assets/CDB/B40/sprockets%2F53529a22c994570a0df4742c0bfe61f4 +0 -0
- data/test/dummy/tmp/cache/assets/CDC/D10/sprockets%2F1e775b4ff06b4401c07503ce95a839b5 +75 -0
- data/test/dummy/tmp/cache/assets/CDE/CD0/sprockets%2F141066798b4acf07053f7e3a6cb4e555 +1613 -0
- data/test/dummy/tmp/cache/assets/CE1/760/sprockets%2F245fe11803630fe30d0cf8a869886ab5 +357 -0
- data/test/dummy/tmp/cache/assets/CE1/FA0/sprockets%2F863d1650ef066e4a2168bc57c7c0e096 +0 -0
- data/test/dummy/tmp/cache/assets/CE2/310/sprockets%2Fd38075d5592ecaf82e43526c03b467c4 +1545 -0
- data/test/dummy/tmp/cache/assets/CE2/420/sprockets%2F30f2e8f30477e80cf6416dfe27307c07 +204 -0
- data/test/dummy/tmp/cache/assets/CE2/D70/sprockets%2F467c44b63644e0f44dd06a585f36f1a6 +522 -0
- data/test/dummy/tmp/cache/assets/CE3/670/sprockets%2Fddd11860b444cd0f9996be0c46762318 +796 -0
- data/test/dummy/tmp/cache/assets/CE4/0B0/sprockets%2Ff11535d785c0d34349c64d673bd4b28f +1105 -0
- data/test/dummy/tmp/cache/assets/CE4/590/sprockets%2Fd68edcc87a4ae302794093081b45b819 +10 -0
- data/test/dummy/tmp/cache/assets/CE4/D60/sprockets%2F61772e4a60b616f74da91b838a2f4f82 +0 -0
- data/test/dummy/tmp/cache/assets/CE6/DD0/sprockets%2F2fe073024a2bf26bd98458388b57af37 +1355 -0
- data/test/dummy/tmp/cache/assets/CE7/160/sprockets%2Fba1f9939f031b4356ec1869d40fc2747 +1261 -0
- data/test/dummy/tmp/cache/assets/CE8/C70/sprockets%2Fc6c9ba3c677b5e2af8520395192c9445 +173 -0
- data/test/dummy/tmp/cache/assets/CEA/8B0/sprockets%2Ff77e549cb6d37604105f35d4e67d8c21 +511 -0
- data/test/dummy/tmp/cache/assets/CEA/AA0/sprockets%2F5f816982c86d2e6b72b2f5f65c51d070 +1529 -0
- data/test/dummy/tmp/cache/assets/CEA/C10/sprockets%2F9dcd541e67c299ab076a44a2183872f8 +0 -0
- data/test/dummy/tmp/cache/assets/CF1/5A0/sprockets%2F1a697695edf2bb7b49a2896904218bc7 +115 -0
- data/test/dummy/tmp/cache/assets/CF4/480/sprockets%2F5e99c77e93f4a522c84357e62b25e0f7 +43 -0
- data/test/dummy/tmp/cache/assets/CF7/460/sprockets%2Fd12ea9733fe3c92456f57f9145569b9c +0 -0
- data/test/dummy/tmp/cache/assets/CF7/470/sprockets%2F2897897a166ca3369fecb88f83f211b5 +435 -0
- data/test/dummy/tmp/cache/assets/CFA/760/sprockets%2Fa9024adba14091e0635c6874d1db4e22 +0 -0
- data/test/dummy/tmp/cache/assets/D01/F30/sprockets%2Fe639a15b6e0cca37d12443b408e1166f +25 -0
- data/test/dummy/tmp/cache/assets/D02/9F0/sprockets%2Fb99eae308897fe88cb9414b96824098b +0 -0
- data/test/dummy/tmp/cache/assets/D03/330/sprockets%2F1e003cdb3e7dcc9307e84090ad457127 +454 -0
- data/test/dummy/tmp/cache/assets/D03/8B0/sprockets%2Ff74632bddf2c0b2018ca7b736309380e +365 -0
- data/test/dummy/tmp/cache/assets/D05/0A0/sprockets%2Fe57658220260db13eb5577aef42cb61b +257 -0
- data/test/dummy/tmp/cache/assets/D05/920/sprockets%2F909507434dcc270db4853e4c147f0aac +31 -0
- data/test/dummy/tmp/cache/assets/D08/510/sprockets%2Fa567be6cb6d7310096f1739b25a5a3f0 +50 -0
- data/test/dummy/tmp/cache/assets/D08/9F0/sprockets%2F1d61d2c89ca50957066bacc5b69011f5 +1424 -0
- data/test/dummy/tmp/cache/assets/D0A/790/sprockets%2Feb16913e6504c9b0d3be431de39e4751 +300 -0
- data/test/dummy/tmp/cache/assets/D0C/C50/sprockets%2Fd6613bee8b40d50459af6b52a7084f34 +796 -0
- data/test/dummy/tmp/cache/assets/D0D/030/sprockets%2Fba3f13b4a444679e8bc2549226ec743b +21 -0
- data/test/dummy/tmp/cache/assets/D0D/350/sprockets%2F2670bce036d485e15d059c0f1e98f24a +207 -0
- data/test/dummy/tmp/cache/assets/D13/270/sprockets%2F497cb163e6317e3fc1565d832f406cfb +348 -0
- data/test/dummy/tmp/cache/assets/D13/380/sprockets%2F786d003c9c7fb759dd26c1030c087cf6 +813 -0
- data/test/dummy/tmp/cache/assets/D13/7C0/sprockets%2F528d22310a9ab8e6fba08d82844ce795 +0 -0
- data/test/dummy/tmp/cache/assets/D15/F60/sprockets%2Fa28394e3f80365b5bc86794dd46daa22 +0 -0
- data/test/dummy/tmp/cache/assets/D18/500/sprockets%2Fd22c2d97d1db2154f2f7592906e957ea +1001 -0
- data/test/dummy/tmp/cache/assets/D1B/C70/sprockets%2F1c04848b1e1d6e8e33b8581f8c8128ff +223 -0
- data/test/dummy/tmp/cache/assets/D1C/600/sprockets%2Fa0601f99147f59ddd6266e6aff077e14 +0 -0
- data/test/dummy/tmp/cache/assets/D1E/470/sprockets%2Fb3933e694547b78bf6fb15f44a4623fe +53 -0
- data/test/dummy/tmp/cache/assets/D1F/480/sprockets%2F545164168becf42b289efc8708f1db68 +1278 -0
- data/test/dummy/tmp/cache/assets/D21/630/sprockets%2F0a14114729c14637f2e8f122acabd1ab +823 -0
- data/test/dummy/tmp/cache/assets/D24/A90/sprockets%2F21c8a0d48c51b8585ba03bc112ecd153 +692 -0
- data/test/dummy/tmp/cache/assets/D25/D30/sprockets%2F3b937f4c16d2aa0a28fc02a0e922712b +1441 -0
- data/test/dummy/tmp/cache/assets/D25/F30/sprockets%2Fe251527c0c018f4b4ad44b2ad7064fb0 +2255 -0
- data/test/dummy/tmp/cache/assets/D26/DE0/sprockets%2F761ac1bdb0739cc56fa0c1224b137b09 +0 -0
- data/test/dummy/tmp/cache/assets/D2A/C30/sprockets%2F978fe7268754f451c59b9ccb323ffa56 +0 -0
- data/test/dummy/tmp/cache/assets/D2B/0F0/sprockets%2Fbf223af03335cfc08a71e549e10c0e27 +2539 -0
- data/test/dummy/tmp/cache/assets/D2E/6D0/sprockets%2F9e7fda3affb389313cc50223f01c0324 +0 -0
- data/test/dummy/tmp/cache/assets/D2F/110/sprockets%2F3730ffe2ed34c1219d580bd1615ea7b0 +2239 -0
- data/test/dummy/tmp/cache/assets/D2F/F10/sprockets%2F9cac242f0bf5ec00079ea3a463e26552 +153 -0
- data/test/dummy/tmp/cache/assets/D30/1D0/sprockets%2Fd690a26a0b0ae138c1c48d257a7674bc +589 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D36/940/sprockets%2Fb4ba462ac9f4aac561c36e60367c1378 +572 -0
- data/test/dummy/tmp/cache/assets/D37/090/sprockets%2F2f2e71ebbc240014ebf648f0917e854a +798 -0
- data/test/dummy/tmp/cache/assets/D3A/440/sprockets%2F6d332243647c841dea36ed822cdfc23e +165 -0
- data/test/dummy/tmp/cache/assets/D3B/5A0/sprockets%2F82e05cf8c88ba8cb1c87e50d51372a03 +0 -0
- data/test/dummy/tmp/cache/assets/D41/B30/sprockets%2Fba1b93913dd01d83ac9a96df334456f8 +0 -0
- data/test/dummy/tmp/cache/assets/D43/D90/sprockets%2F04f3a5926d5a7672456dc7afa73d0c7f +38 -0
- data/test/dummy/tmp/cache/assets/D45/1F0/sprockets%2F1bfa855d9c10ff2431a9a548958cc5e4 +83 -0
- data/test/dummy/tmp/cache/assets/D45/B10/sprockets%2F643f3d9b216e48df952b7f150a46a7ec +60 -0
- data/test/dummy/tmp/cache/assets/D46/040/sprockets%2F199546844e5939721a5afcbcce4ea43a +143 -0
- data/test/dummy/tmp/cache/assets/D49/320/sprockets%2Fd8123eb229e34c9f507f7b1876f1c4ee +506 -0
- data/test/dummy/tmp/cache/assets/D49/750/sprockets%2Ff41ef1c0832b7294fb15588ff5c783cb +0 -0
- data/test/dummy/tmp/cache/assets/D49/930/sprockets%2F1071926698fa55abc71e1b6fd966dfe1 +72 -0
- data/test/dummy/tmp/cache/assets/D49/D10/sprockets%2Fb67b8d7cc7579352a91694f9ae10cdb0 +127 -0
- data/test/dummy/tmp/cache/assets/D4A/160/sprockets%2Fcbd8988b5e18d153eff6230d72e9046a +516 -0
- data/test/dummy/tmp/cache/assets/D4A/2B0/sprockets%2Ffcdf002d38fd938bf7226b46b76706c8 +1101 -0
- data/test/dummy/tmp/cache/assets/D4E/2F0/sprockets%2F77cb87ae57f0d8c25cdaa74181a64997 +1441 -0
- data/test/dummy/tmp/cache/assets/D4F/060/sprockets%2Fa9e66b39ada7394a29bf44f3a682f665 +511 -0
- data/test/dummy/tmp/cache/assets/D50/BD0/sprockets%2F88650dd57ef64075462e6dae757dbe2c +0 -0
- data/test/dummy/tmp/cache/assets/D53/CA0/sprockets%2Fa85032e82709a043fbb2ec00e04f2bbd +0 -0
- data/test/dummy/tmp/cache/assets/D54/BF0/sprockets%2F91970514ff528e8d2bfd81f1ec83c9c8 +240 -0
- data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +10 -0
- data/test/dummy/tmp/cache/assets/D56/500/sprockets%2F75ebadd035f1324b194034af92eac3a0 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/900/sprockets%2F5729f77d97fdee53b1942cf17f6f05e4 +474 -0
- data/test/dummy/tmp/cache/assets/D5A/D50/sprockets%2F81bace3db2c2f1241175ff3c5009d08c +0 -0
- data/test/dummy/tmp/cache/assets/D5B/C70/sprockets%2Fe64119a9db7017b7ab3b0da1b6076f0d +44 -0
- data/test/dummy/tmp/cache/assets/D5E/4D0/sprockets%2F756f25e4ad861a050cdc41bb8414e4ab +126 -0
- data/test/dummy/tmp/cache/assets/D5E/730/sprockets%2Fd30caf70b387c4604326bdda32aeb549 +0 -0
- data/test/dummy/tmp/cache/assets/D5E/AA0/sprockets%2F790dd07caaaacb30ceb0174664e90817 +136 -0
- data/test/dummy/tmp/cache/assets/D64/D30/sprockets%2Fe4bd8f60a3a446274c3cb2f5d16563ac +590 -0
- data/test/dummy/tmp/cache/assets/D66/400/sprockets%2Fecb7401d20daf25605a7afad3a793778 +0 -0
- data/test/dummy/tmp/cache/assets/D67/250/sprockets%2F8422eb26855ca9c953a3bf1aeade8004 +0 -0
- data/test/dummy/tmp/cache/assets/D69/900/sprockets%2F28ae64f52cb18f77b1a1bd9c51293da4 +0 -0
- data/test/dummy/tmp/cache/assets/D6A/870/sprockets%2F1ece6a51b42f9280f4cee9020c94b72e +197 -0
- data/test/dummy/tmp/cache/assets/D6B/DD0/sprockets%2F9a0abc735e27fc61dab019788518eba4 +164 -0
- data/test/dummy/tmp/cache/assets/D6E/CC0/sprockets%2F8b4fbcec2475e7203b8859baf8e310a3 +0 -0
- data/test/dummy/tmp/cache/assets/D72/470/sprockets%2Fbc0c6d850e7c769e83d58eb3e6061b2a +2556 -0
- data/test/dummy/tmp/cache/assets/D72/9D0/sprockets%2F9402daf6da6f7eed331a9d78216cb761 +0 -0
- data/test/dummy/tmp/cache/assets/D74/070/sprockets%2F91ae68f698a39bd7d0d11150fc46e4cd +418 -0
- data/test/dummy/tmp/cache/assets/D74/7F0/sprockets%2F22dad1069ea6a8f29ae757c44e18ec83 +0 -0
- data/test/dummy/tmp/cache/assets/D75/3C0/sprockets%2F44e2ae51b97853d8ecda7b264a267c7d +1630 -0
- data/test/dummy/tmp/cache/assets/D77/780/sprockets%2Ffa2abdfb0b62867c346f79187b8e42d5 +823 -0
- data/test/dummy/tmp/cache/assets/D79/850/sprockets%2F4d540586ed379fd9a70fa0b7ce4f5b27 +306 -0
- data/test/dummy/tmp/cache/assets/D7A/B60/sprockets%2F5925c92f48caff053d08853dc69e5bba +0 -0
- data/test/dummy/tmp/cache/assets/D81/C90/sprockets%2F19aca5c835efce74878c23e581e2a89e +2239 -0
- data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +11228 -0
- data/test/dummy/tmp/cache/assets/D8B/B10/sprockets%2Fbb7a2305a8f2832631863bbababb67be +301 -0
- data/test/dummy/tmp/cache/assets/D92/3B0/sprockets%2F93dc71f411faf72ec8ef0b5d217b51a0 +505 -0
- data/test/dummy/tmp/cache/assets/D92/EE0/sprockets%2Ffd051ea0abf6be6970754aa732e40c8b +289 -0
- data/test/dummy/tmp/cache/assets/D93/810/sprockets%2F7dc1ac5e1b83ba5144e34cf156d48a8a +471 -0
- data/test/dummy/tmp/cache/assets/D94/020/sprockets%2F35cb4ce22488fb5bdd260508ca47a3fb +239 -0
- data/test/dummy/tmp/cache/assets/D94/EC0/sprockets%2F8b900fba18f8e046f5f12e6d1f0ac15b +74 -0
- data/test/dummy/tmp/cache/assets/D95/470/sprockets%2F5be5d361a52575c433831b5e8cccbace +9273 -0
- data/test/dummy/tmp/cache/assets/D97/9D0/sprockets%2F524a2a94a88c1d392dabcba654e365fc +103 -0
- data/test/dummy/tmp/cache/assets/D9D/800/sprockets%2Ff8387220eb4dda9b29a37b5deb9f2a40 +54 -0
- data/test/dummy/tmp/cache/assets/D9E/DD0/sprockets%2Fb6b4ffad6485eda046b327a196e8c44a +0 -0
- data/test/dummy/tmp/cache/assets/DA1/0A0/sprockets%2F359c94aee6ba2e15fc9666aa4de311c8 +166 -0
- data/test/dummy/tmp/cache/assets/DA1/0D0/sprockets%2F798de3c28452e164a7fc1a3a6e8cdb4b +652 -0
- data/test/dummy/tmp/cache/assets/DA3/CB0/sprockets%2Fdfad6bb1857a8af91f98ba137c18504e +815 -0
- data/test/dummy/tmp/cache/assets/DA4/E10/sprockets%2Fbda7705734ace95f12a7d79df9c14af2 +1354 -0
- data/test/dummy/tmp/cache/assets/DA5/E30/sprockets%2F2e6707a119e94a784efbadca18d7e8d1 +129 -0
- data/test/dummy/tmp/cache/assets/DA6/4B0/sprockets%2F4f7a708b6aa2d42eb577493dea7cef55 +115 -0
- data/test/dummy/tmp/cache/assets/DA8/A10/sprockets%2F0ae5bbb4ca200e74db3b64d72c2be120 +0 -0
- data/test/dummy/tmp/cache/assets/DA9/3F0/sprockets%2Fdd0af9cfd65fb7d02fe778c8f6015361 +499 -0
- data/test/dummy/tmp/cache/assets/DA9/780/sprockets%2Fe3559a635e8f92dec7727a3db2ae7b4c +813 -0
- data/test/dummy/tmp/cache/assets/DAC/0E0/sprockets%2F04cef8243a9ef7321846debc977ea8db +607 -0
- data/test/dummy/tmp/cache/assets/DB1/260/sprockets%2Fb879ff7530bf8cc175e0c7e70dc4e79b +0 -0
- data/test/dummy/tmp/cache/assets/DB4/4C0/sprockets%2F30a76cbd98dedb56742cd8ecaf858757 +0 -0
- data/test/dummy/tmp/cache/assets/DBD/7E0/sprockets%2F236fb1ac5ed9f2e3fe32203acc3a842d +0 -0
- data/test/dummy/tmp/cache/assets/DC2/DF0/sprockets%2Fe233bcaba8beff15626c35cb5e0e0936 +845 -0
- data/test/dummy/tmp/cache/assets/DC4/600/sprockets%2F59c96aa6c1cbebc61bff6c050a5351d7 +225 -0
- data/test/dummy/tmp/cache/assets/DC5/030/sprockets%2Fcb2fe864a0177eec19017c43ce9aa4ad +187 -0
- data/test/dummy/tmp/cache/assets/DC8/A60/sprockets%2F9fcb9f5c3f679ce749ee4c3f93869ba6 +74 -0
- data/test/dummy/tmp/cache/assets/DCB/D40/sprockets%2Ffd5542bfb7660a8d8cac3a2e46fb01f8 +828 -0
- data/test/dummy/tmp/cache/assets/DCC/020/sprockets%2F0c129c5f2784c96fa1dc3da6c19c1efc +128 -0
- data/test/dummy/tmp/cache/assets/DCF/520/sprockets%2F975162fb97a3ec7033db5f2fdba4fcd3 +70 -0
- data/test/dummy/tmp/cache/assets/DD0/000/sprockets%2F0d5d631cce6f0b078bb29cf98b3d78bb +276 -0
- data/test/dummy/tmp/cache/assets/DD0/C90/sprockets%2F84eeca4ef8f5eb29b13f7e1ea3c71324 +591 -0
- data/test/dummy/tmp/cache/assets/DD6/710/sprockets%2F9e83f2ebbe3e349efca2de390e15d635 +204 -0
- data/test/dummy/tmp/cache/assets/DE1/830/sprockets%2Fd23d3cafef2e2a9055bc103dffc1a023 +208 -0
- data/test/dummy/tmp/cache/assets/DEB/470/sprockets%2Fae2de0fcbc2214b71d3f2a875d2bc8c3 +2255 -0
- data/test/dummy/tmp/cache/assets/DEE/690/sprockets%2F5d824bcadef29060cc13eed71af4b4d0 +550 -0
- data/test/dummy/tmp/cache/assets/DF0/5D0/sprockets%2F25a875eb0a5d4c49bcc3fa39ea0adb26 +567 -0
- data/test/dummy/tmp/cache/assets/DF3/E20/sprockets%2Fada770c49a5d6b38d1cc43ed4d51c1fc +0 -0
- data/test/dummy/tmp/cache/assets/DF5/C80/sprockets%2F03ad7d7b3a8feba9ed9be82ae2083b20 +340 -0
- data/test/dummy/tmp/cache/assets/DF6/560/sprockets%2Fafceb2b55eb108efe4446dfb02b519b8 +0 -0
- data/test/dummy/tmp/cache/assets/DFC/030/sprockets%2Fcbdd3679eaba219b4e1ff20677af1c6f +1371 -0
- data/test/dummy/tmp/cache/assets/E00/970/sprockets%2F8bc6dde8d05c382dd07cbcec70f54e09 +378 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E12/2F0/sprockets%2F5c45062ecfbe512dcba176ba6ddacc00 +523 -0
- data/test/dummy/tmp/cache/assets/E21/5D0/sprockets%2Fd4fe6d611bfb0e63c04de5dbfb128a8a +0 -0
- data/test/dummy/tmp/cache/assets/E22/770/sprockets%2F2ccebcabfbb9b59159e4b73b3b30a74d +208 -0
- data/test/dummy/tmp/cache/assets/E31/A90/sprockets%2F26b98bbbc15eee9b370c7dcde88d16aa +394 -0
- data/test/dummy/tmp/cache/assets/E31/E30/sprockets%2Ffbdafcc4e2f44bb9fc653bcf9625b750 +284 -0
- data/test/dummy/tmp/cache/assets/E37/1C0/sprockets%2Fa5eb45fc86dafe2bee4e4fa3f53c4785 +0 -0
- data/test/dummy/tmp/cache/assets/E4C/960/sprockets%2F13fd6e4bfdf031acb3dedca8d0f407b4 +1277 -0
- data/test/dummy/tmp/cache/assets/E88/330/sprockets%2Fe02d0adb5529ffafcea1b9e5ccf69a5b +669 -0
- data/test/dummy/tmp/pids/server.pid +1 -0
- data/test/dummy/tmp/simple.js.js +20 -0
- data/test/dummy/tmp/soy-1325274421.js +20 -0
- data/test/dummy/tmp/soy-1325286267.js +20 -0
- data/test/test_helper.rb +10 -0
- data/test/yellow-brick-road_test.rb +7 -0
- metadata +538 -0
data/README.rst
ADDED
@@ -0,0 +1,148 @@
|
|
1
|
+
Yellow Brick Road
|
2
|
+
=================
|
3
|
+
|
4
|
+
Closure library on rails
|
5
|
+
------------------------
|
6
|
+
|
7
|
+
.. image:: http://i.imgur.com/BeZpM.jpg
|
8
|
+
:align: right
|
9
|
+
|
10
|
+
Yellow-brick-road is a set of tools to integrate google `closure library <http://code.google.com/closure/library/>`_ and `soy closure template <http://code.google.com/closure/templates/>`_ into rails. This gem can be used for:
|
11
|
+
|
12
|
+
* Automatic dependency generation of a closure-library based application, just add the ``//= require_closure_root`` directive.
|
13
|
+
|
14
|
+
* Using soy templates as part of the closure-library.
|
15
|
+
|
16
|
+
* Using stand-alone soy templates without closure-library, just configure the gem add the ``.js.soy`` file in assets directory, and it gets compiled automatically.
|
17
|
+
|
18
|
+
Setup
|
19
|
+
+++++
|
20
|
+
|
21
|
+
To use yellow-brick-road in rails, add the gem to ``Gemfile``:
|
22
|
+
|
23
|
+
::
|
24
|
+
|
25
|
+
gem 'yellow-brick-road',
|
26
|
+
:git => 'git://github.com/alitn/yellow-brick-road.git',
|
27
|
+
:submodules => true
|
28
|
+
|
29
|
+
A copy of the closure library comes with the gem as a git submodule. The ``:submodules => true`` option is required to clone this copy.
|
30
|
+
|
31
|
+
Integrating closure library
|
32
|
+
+++++++++++++++++++++++++++
|
33
|
+
|
34
|
+
Yellow-brick-road provides a `sprockets <https://github.com/sstephenson/sprockets>`_ directive for requiring a closure root. Given ``my-closure-app/`` as a closure app directory, it can be required by:
|
35
|
+
|
36
|
+
::
|
37
|
+
|
38
|
+
//= require_closure_root ./my-closure-app
|
39
|
+
|
40
|
+
This renders a couple of script tags:
|
41
|
+
|
42
|
+
::
|
43
|
+
|
44
|
+
<script src="/assets/closure/goog/base.js" type="text/javascript"></script>
|
45
|
+
<script src="/assets/closure-deps.js" type="text/javascript"></script>
|
46
|
+
|
47
|
+
The former tag is the base requirement for closure library.
|
48
|
+
|
49
|
+
The latter tag, generated using `depswriter.py <http://code.google.com/closure/library/docs/depswriter.html>`_, is the dependency structure of the closure application. When the required closure root is modified, this dependency file is regenerated. It is safe to ignore this file in source revision control.
|
50
|
+
|
51
|
+
Soy templates used with closure-library
|
52
|
+
+++++++++++++++++++++++++++++++++++++++
|
53
|
+
|
54
|
+
Requiring a ``.js.soy`` template works out-of-the-box:
|
55
|
+
|
56
|
+
::
|
57
|
+
|
58
|
+
//= require simple.js.soy
|
59
|
+
|
60
|
+
By default, it is assumed that soy templates are used as part of the closure-library. The gem adds the ``soyutils_usegoog.js`` file to closure dependency search path, and the soy templates get compiled with these options:
|
61
|
+
|
62
|
+
::
|
63
|
+
|
64
|
+
--shouldProvideRequireSoyNamespaces
|
65
|
+
--cssHandlingScheme goog
|
66
|
+
--shouldGenerateJsdoc
|
67
|
+
|
68
|
+
This means that a template like this:
|
69
|
+
|
70
|
+
::
|
71
|
+
|
72
|
+
{namespace myproject.templates}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Greets a person using "Hello" by default.
|
76
|
+
* @param name The name of the person.
|
77
|
+
* @param? greetingWord Optional greeting word to use instead of "Hello".
|
78
|
+
*/
|
79
|
+
{template .hello}
|
80
|
+
{if not $greetingWord}
|
81
|
+
Hello {$name}!
|
82
|
+
{else}
|
83
|
+
{$greetingWord} {$name}!
|
84
|
+
{/if}
|
85
|
+
{/template}
|
86
|
+
|
87
|
+
is compiled to:
|
88
|
+
|
89
|
+
::
|
90
|
+
|
91
|
+
// This file was automatically generated from simple.js.soy.
|
92
|
+
// Please don't edit this file by hand.
|
93
|
+
|
94
|
+
goog.provide('myproject.templates');
|
95
|
+
|
96
|
+
goog.require('soy');
|
97
|
+
goog.require('soy.StringBuilder');
|
98
|
+
|
99
|
+
|
100
|
+
/**
|
101
|
+
* @param {Object.<string, *>=} opt_data
|
102
|
+
* @param {soy.StringBuilder=} opt_sb
|
103
|
+
* @return {string}
|
104
|
+
* @notypecheck
|
105
|
+
*/
|
106
|
+
myproject.templates.hello = function(opt_data, opt_sb) {
|
107
|
+
var output = opt_sb || new soy.StringBuilder();
|
108
|
+
output.append((! opt_data.greetingWord) ? 'Hello ' + soy.$$escapeHtml(opt_data.name) + '!' :
|
109
|
+
soy.$$escapeHtml(opt_data.greetingWord) + ' ' + soy.$$escapeHtml(opt_data.name) + '!');
|
110
|
+
return opt_sb ? '' : output.toString();
|
111
|
+
};
|
112
|
+
|
113
|
+
Standalone Soy templates
|
114
|
+
++++++++++++++++++++++++
|
115
|
+
|
116
|
+
Yellow-brick-road can also be used for automatic compilation of soy templates without the use of closure-library. This helps to integrate soy templates with other javascript frameworks like backbone.js.
|
117
|
+
|
118
|
+
To do this, add this line to a rails initializer, eg ``config/initializers/yellow_brick_road.rb``:
|
119
|
+
|
120
|
+
::
|
121
|
+
|
122
|
+
YellowBrickRoad::Config.standalone_soy = true
|
123
|
+
|
124
|
+
Then require the soy javascript utility, which is shipped with the gem:
|
125
|
+
|
126
|
+
::
|
127
|
+
|
128
|
+
//= require soyutils.js
|
129
|
+
//= require simple.js.soy
|
130
|
+
|
131
|
+
In this case, the above template is compiled to:
|
132
|
+
|
133
|
+
::
|
134
|
+
|
135
|
+
// This file was automatically generated from simple.js.soy.
|
136
|
+
// Please don't edit this file by hand.
|
137
|
+
|
138
|
+
if (typeof myproject == 'undefined') { var myproject = {}; }
|
139
|
+
if (typeof myproject.templates == 'undefined') { myproject.templates = {}; }
|
140
|
+
|
141
|
+
|
142
|
+
myproject.templates.hello = function(opt_data, opt_sb) {
|
143
|
+
var output = opt_sb || new soy.StringBuilder();
|
144
|
+
output.append((! opt_data.greetingWord) ? 'Hello ' + soy.$$escapeHtml(opt_data.name) + '!' :
|
145
|
+
soy.$$escapeHtml(opt_data.greetingWord) + ' ' + soy.$$escapeHtml(opt_data.name) + '!');
|
146
|
+
return opt_sb ? '' : output.toString();
|
147
|
+
};
|
148
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'YellowBrickRoad'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Bundler::GemHelper.install_tasks
|
26
|
+
|
27
|
+
require 'rake/testtask'
|
28
|
+
|
29
|
+
Rake::TestTask.new(:test) do |t|
|
30
|
+
t.libs << 'lib'
|
31
|
+
t.libs << 'test'
|
32
|
+
t.pattern = 'test/**/*_test.rb'
|
33
|
+
t.verbose = false
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
task :default => :test
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module YellowBrickRoad
|
2
|
+
module Config
|
3
|
+
mattr_accessor :standalone_soy
|
4
|
+
@@stand_alone_soy = false
|
5
|
+
end
|
6
|
+
|
7
|
+
# Constants.
|
8
|
+
ROOT = File.expand_path File.join(File.dirname(__FILE__), '..', '..')
|
9
|
+
VENDOR_ASSETS_ROOT = File.join ROOT, 'vendor'
|
10
|
+
CLOSURE_LIBRARY_ROOT = File.join VENDOR_ASSETS_ROOT, 'closure-library'
|
11
|
+
CLOSURE_LIBRARY_BASE = File.join CLOSURE_LIBRARY_ROOT, 'closure', 'goog', 'base.js'
|
12
|
+
CLOSURE_SOYUTILS_ROOT = File.join VENDOR_ASSETS_ROOT, 'closure-soyutils'
|
13
|
+
CLOSURE_SOYUTILS_USEGOOG_ROOT = File.join VENDOR_ASSETS_ROOT, 'closure-soyutils-usegoog'
|
14
|
+
CLOSURE_DEPSWRITER = File.join CLOSURE_LIBRARY_ROOT, 'closure', 'bin', 'build', 'depswriter.py'
|
15
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'sprockets/directive_processor.rb'
|
2
|
+
|
3
|
+
module YellowBrickRoad
|
4
|
+
class ClosureBuilderProcessor < Sprockets::DirectiveProcessor
|
5
|
+
|
6
|
+
def prepare
|
7
|
+
super
|
8
|
+
@closure_roots = []
|
9
|
+
@closure_deps_file = Rails.root.join 'app', 'assets', 'javascripts', 'closure-deps.js'
|
10
|
+
@has_executed_closure_builder = false
|
11
|
+
end
|
12
|
+
|
13
|
+
def process_require_closure_root_directive path
|
14
|
+
context.require_asset CLOSURE_LIBRARY_BASE
|
15
|
+
context.require_asset @closure_deps_file
|
16
|
+
|
17
|
+
if relative? path
|
18
|
+
closure_root = pathname.dirname.join(path).expand_path
|
19
|
+
|
20
|
+
unless (stats = stat(closure_root)) && stats.directory?
|
21
|
+
raise ArgumentError, 'require_closure_root argument must be a directory'
|
22
|
+
end
|
23
|
+
|
24
|
+
context.depend_on closure_root
|
25
|
+
|
26
|
+
each_entry closure_root do |pathname|
|
27
|
+
context.depend_on pathname
|
28
|
+
end
|
29
|
+
else
|
30
|
+
# The path must be relative and start with a `./`.
|
31
|
+
raise ArgumentError, 'require_closure_root argument must be a relative path'
|
32
|
+
end
|
33
|
+
|
34
|
+
@closure_roots << closure_root.to_s
|
35
|
+
end
|
36
|
+
|
37
|
+
def process_directives
|
38
|
+
super
|
39
|
+
generate_closure_dependencies
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def generate_closure_dependencies
|
45
|
+
return nil if @closure_roots.empty? || @has_executed_closure_builder
|
46
|
+
|
47
|
+
if !Config.standalone_soy
|
48
|
+
@closure_roots.unshift << CLOSURE_SOYUTILS_USEGOOG_ROOT
|
49
|
+
end
|
50
|
+
|
51
|
+
closure_roots_with_prefix = @closure_roots.map { |cr| "'#{cr} ../../'" }
|
52
|
+
|
53
|
+
result = Utils::run_command CLOSURE_DEPSWRITER,
|
54
|
+
command_options: {
|
55
|
+
root_with_prefix: closure_roots_with_prefix,
|
56
|
+
output_file: @closure_deps_file
|
57
|
+
},
|
58
|
+
command_error_message: 'An error occured while running closure depswriter.py.'
|
59
|
+
|
60
|
+
@has_executed_closure_builder = true
|
61
|
+
Rails.logger.info "Executed closure depswriter.py on root paths: #{@closure_roots.join(', ')}"
|
62
|
+
|
63
|
+
|
64
|
+
result
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module YellowBrickRoad
|
2
|
+
CONFIG = ActiveSupport::OrderedOptions.new
|
3
|
+
|
4
|
+
class Engine < Rails::Engine
|
5
|
+
|
6
|
+
initializer :yellow_brick_road do |app|
|
7
|
+
app.assets.append_path CLOSURE_LIBRARY_ROOT
|
8
|
+
|
9
|
+
if Config.standalone_soy
|
10
|
+
app.assets.append_path CLOSURE_SOYUTILS_ROOT
|
11
|
+
else
|
12
|
+
app.assets.append_path CLOSURE_SOYUTILS_USEGOOG_ROOT
|
13
|
+
end
|
14
|
+
|
15
|
+
app.assets.unregister_processor 'application/javascript', Sprockets::DirectiveProcessor
|
16
|
+
app.assets.register_processor 'application/javascript', ClosureBuilderProcessor
|
17
|
+
|
18
|
+
app.assets.register_engine '.soy', SoyProcessor
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'tilt'
|
2
|
+
require 'closure'
|
3
|
+
|
4
|
+
module YellowBrickRoad
|
5
|
+
class SoyProcessor < Tilt::Template
|
6
|
+
|
7
|
+
def self.default_mime_type
|
8
|
+
'application/javascript'
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.default_namespace
|
12
|
+
'this.SOY'
|
13
|
+
end
|
14
|
+
|
15
|
+
def prepare
|
16
|
+
@namespace = self.class.default_namespace
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :namespace
|
20
|
+
|
21
|
+
def evaluate scope, locals, &block
|
22
|
+
# Since SoyToJsSrcCompiler does not provide a stdout access to
|
23
|
+
# the output, the output is written to a tempfile.
|
24
|
+
tempoutput = Rails.root.join 'tmp', "soy-#{Time.now.to_i.to_s}.js"
|
25
|
+
|
26
|
+
compiler_args = []
|
27
|
+
if !Config.standalone_soy
|
28
|
+
compiler_args = compiler_args | %w{
|
29
|
+
--shouldProvideRequireSoyNamespaces
|
30
|
+
--cssHandlingScheme goog
|
31
|
+
--shouldGenerateJsdoc
|
32
|
+
}
|
33
|
+
end
|
34
|
+
compiler_args << "--outputPathFormat" << tempoutput
|
35
|
+
compiler_args << file
|
36
|
+
compile compiler_args
|
37
|
+
|
38
|
+
@output = IO.read tempoutput
|
39
|
+
File.delete tempoutput
|
40
|
+
|
41
|
+
@output
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def compile args
|
47
|
+
args = args.collect {|a| a.to_s } # for bools and numerics
|
48
|
+
|
49
|
+
out, err = Closure.run_java Closure.config.soy_js_jar, 'com.google.template.soy.SoyToJsSrcCompiler', args
|
50
|
+
unless err.empty?
|
51
|
+
raise err
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
3
|
+
module YellowBrickRoad
|
4
|
+
class Utils
|
5
|
+
|
6
|
+
def self.run_command command, options
|
7
|
+
options = {
|
8
|
+
command_options: {},
|
9
|
+
command_error_message: "An error occured while running command: #{command}"
|
10
|
+
}.merge options
|
11
|
+
|
12
|
+
command_options = self.serialize_options options[:command_options]
|
13
|
+
command_string = [command, command_options].flatten.join(' ')
|
14
|
+
|
15
|
+
begin
|
16
|
+
stdin, stdout, stderr = Open3.popen3 command_string
|
17
|
+
rescue StandardError => error
|
18
|
+
raise "#{options[:command_error_message]}\n\n#{error.message}"
|
19
|
+
end
|
20
|
+
|
21
|
+
stdout.readlines
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def self.serialize_options options
|
27
|
+
options.map do |k, v|
|
28
|
+
if v.is_a?(Array)
|
29
|
+
v.uniq!
|
30
|
+
v.map {|v2| ["--#{k}", v2.to_s]}
|
31
|
+
else
|
32
|
+
["--#{k}", v.to_s]
|
33
|
+
end
|
34
|
+
end.flatten
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
data/test/dummy/Rakefile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
3
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
4
|
+
|
5
|
+
require File.expand_path('../config/application', __FILE__)
|
6
|
+
|
7
|
+
Dummy::Application.load_tasks
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
|
+
// the compiled file.
|
6
|
+
//
|
7
|
+
//= require jquery
|
8
|
+
//= require jquery_ujs
|
9
|
+
//= require_closure_root ./my-closure
|
10
|
+
//= require ./my-closure/simple.js.soy
|
11
|
+
//= require ./my-closure/start
|
12
|
+
//
|
@@ -0,0 +1,4 @@
|
|
1
|
+
// This file was autogenerated by /Volumes/Development/dev-web/yellow-brick-road/vendor/closure-library/closure/bin/build/depswriter.py.
|
2
|
+
// Please do not edit.
|
3
|
+
goog.addDependency('../../soyutils_usegoog.js', ['soy', 'soy.StringBuilder', 'soy.esc', 'soydata', 'soydata.SanitizedHtml', 'soydata.SanitizedHtmlAttribute', 'soydata.SanitizedJsStrChars', 'soydata.SanitizedUri'], ['goog.asserts', 'goog.dom.DomHelper', 'goog.format', 'goog.i18n.BidiFormatter', 'goog.i18n.bidi', 'goog.soy', 'goog.string', 'goog.string.StringBuffer']);
|
4
|
+
goog.addDependency('../../start.js', ['myproject.start'], ['goog.dom', 'myproject.templates']);
|
@@ -0,0 +1,14 @@
|
|
1
|
+
{namespace myproject.templates}
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Greets a person using "Hello" by default.
|
5
|
+
* @param name The name of the person.
|
6
|
+
* @param? greetingWord Optional greeting word to use instead of "Hello".
|
7
|
+
*/
|
8
|
+
{template .hello}
|
9
|
+
{if not $greetingWord}
|
10
|
+
Hello {$name}!
|
11
|
+
{else}
|
12
|
+
{$greetingWord} {$name}!
|
13
|
+
{/if}
|
14
|
+
{/template}
|