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.
Files changed (233) hide show
  1. data/README.rst +148 -0
  2. data/Rakefile +37 -0
  3. data/lib/tasks/yellow-brick-road_tasks.rake +4 -0
  4. data/lib/yellow-brick-road.rb +6 -0
  5. data/lib/yellow-brick-road/config.rb +15 -0
  6. data/lib/yellow-brick-road/directive_processor.rb +68 -0
  7. data/lib/yellow-brick-road/engine.rb +22 -0
  8. data/lib/yellow-brick-road/soy_processor.rb +56 -0
  9. data/lib/yellow-brick-road/utils.rb +38 -0
  10. data/lib/yellow-brick-road/version.rb +3 -0
  11. data/test/dummy/Rakefile +7 -0
  12. data/test/dummy/app/assets/javascripts/application.js +12 -0
  13. data/test/dummy/app/assets/javascripts/closure-deps.js +4 -0
  14. data/test/dummy/app/assets/javascripts/my-closure/simple.js.soy +14 -0
  15. data/test/dummy/app/assets/javascripts/my-closure/start.js +25 -0
  16. data/test/dummy/app/assets/stylesheets/application.css +7 -0
  17. data/test/dummy/app/controllers/application_controller.rb +7 -0
  18. data/test/dummy/app/helpers/application_helper.rb +2 -0
  19. data/test/dummy/app/views/application/index.html.erb +0 -0
  20. data/test/dummy/app/views/layouts/application.html.erb +18 -0
  21. data/test/dummy/config.ru +4 -0
  22. data/test/dummy/config/application.rb +51 -0
  23. data/test/dummy/config/boot.rb +10 -0
  24. data/test/dummy/config/environment.rb +5 -0
  25. data/test/dummy/config/environments/development.rb +30 -0
  26. data/test/dummy/config/environments/production.rb +60 -0
  27. data/test/dummy/config/environments/test.rb +39 -0
  28. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  29. data/test/dummy/config/initializers/inflections.rb +10 -0
  30. data/test/dummy/config/initializers/mime_types.rb +5 -0
  31. data/test/dummy/config/initializers/secret_token.rb +7 -0
  32. data/test/dummy/config/initializers/session_store.rb +8 -0
  33. data/test/dummy/config/initializers/wrap_parameters.rb +10 -0
  34. data/test/dummy/config/initializers/yellow_brick_road.rb +2 -0
  35. data/test/dummy/config/locales/en.yml +5 -0
  36. data/test/dummy/config/routes.rb +58 -0
  37. data/test/dummy/log/development.log +13924 -0
  38. data/test/dummy/log/test.log +0 -0
  39. data/test/dummy/public/404.html +26 -0
  40. data/test/dummy/public/422.html +26 -0
  41. data/test/dummy/public/500.html +26 -0
  42. data/test/dummy/public/favicon.ico +0 -0
  43. data/test/dummy/script/rails +6 -0
  44. data/test/dummy/tmp/cache/assets/BE0/120/sprockets%2F751842b8c6750008c7310d182600d173 +142 -0
  45. data/test/dummy/tmp/cache/assets/C19/950/sprockets%2F142437f1d8d9424007b4a882a5429333 +1372 -0
  46. data/test/dummy/tmp/cache/assets/C4B/D00/sprockets%2F400f22c081529179ce3d079457de3009 +806 -0
  47. data/test/dummy/tmp/cache/assets/C5A/EE0/sprockets%2Fb711429ed948c503b718d077037780f8 +0 -0
  48. data/test/dummy/tmp/cache/assets/C5B/A80/sprockets%2F508569b474262724c61a461f7777dab7 +1118 -0
  49. data/test/dummy/tmp/cache/assets/C6C/660/sprockets%2F2c298b3b02232a21527680685a3efc30 +9289 -0
  50. data/test/dummy/tmp/cache/assets/C72/8A0/sprockets%2F167b265129e30d87d253c406db305c60 +293 -0
  51. data/test/dummy/tmp/cache/assets/C7E/9F0/sprockets%2F89862076204c62c4593ac20de32da909 +9 -0
  52. data/test/dummy/tmp/cache/assets/C8B/5F0/sprockets%2Fc6a4470b5c21e285e829a99365839b24 +0 -0
  53. data/test/dummy/tmp/cache/assets/C92/D20/sprockets%2F2e618f7805f445889aec94885a500f03 +457 -0
  54. data/test/dummy/tmp/cache/assets/C98/FD0/sprockets%2Fb11442af041f96e87a43a1dc11231745 +283 -0
  55. data/test/dummy/tmp/cache/assets/CA3/520/sprockets%2F5379d7143c6c52b11b88dc0ab5436133 +277 -0
  56. data/test/dummy/tmp/cache/assets/CA5/450/sprockets%2F6bb727c9312a749134ad67323a317f0d +73 -0
  57. data/test/dummy/tmp/cache/assets/CA5/4F0/sprockets%2Feeb7de7771527700af194c0441d29101 +709 -0
  58. data/test/dummy/tmp/cache/assets/CA6/E90/sprockets%2F611f68180f43c4181f06ae5c5f8201e2 +1546 -0
  59. data/test/dummy/tmp/cache/assets/CA7/310/sprockets%2F45664cf816315200b574e029fde6f10a +0 -0
  60. data/test/dummy/tmp/cache/assets/CA9/9D0/sprockets%2F2672e32464cf7267c4ba3d028f54b153 +224 -0
  61. data/test/dummy/tmp/cache/assets/CAB/5A0/sprockets%2F7f50e0289f150c8636ac9253129bc13c +2556 -0
  62. data/test/dummy/tmp/cache/assets/CB5/7E0/sprockets%2F42ff6672683b2029233a800e7539eeee +474 -0
  63. data/test/dummy/tmp/cache/assets/CB6/DC0/sprockets%2F2f9882155bb2d4d3ab5d708951857c60 +494 -0
  64. data/test/dummy/tmp/cache/assets/CBB/680/sprockets%2F1dc336d96fb52df34b458185559922b5 +1018 -0
  65. data/test/dummy/tmp/cache/assets/CBC/640/sprockets%2F67d2e0d9e5129d237e575d2780c64b47 +1260 -0
  66. data/test/dummy/tmp/cache/assets/CBE/550/sprockets%2Fd680cac830e0b3408ba910f0b0421147 +25 -0
  67. data/test/dummy/tmp/cache/assets/CC7/790/sprockets%2F69941f32a12e4f99d4a57f65386d870d +608 -0
  68. data/test/dummy/tmp/cache/assets/CCB/F80/sprockets%2Fa865701ef2ec41155e524772c31a1a2b +1088 -0
  69. data/test/dummy/tmp/cache/assets/CCE/580/sprockets%2F879411ed27ed1c557d57853d8f579b56 +0 -0
  70. data/test/dummy/tmp/cache/assets/CD0/070/sprockets%2F6748fe8481965f260d9c56b7f9f508a2 +1530 -0
  71. data/test/dummy/tmp/cache/assets/CD4/750/sprockets%2Faf3505141ecb3169ce41ce519d136924 +0 -0
  72. data/test/dummy/tmp/cache/assets/CD6/A90/sprockets%2F3f55ac75b9fb8426312116bcb940a580 +2539 -0
  73. data/test/dummy/tmp/cache/assets/CD9/6C0/sprockets%2F5e2458bc52da90ba349a66035e3b6752 +0 -0
  74. data/test/dummy/tmp/cache/assets/CD9/F50/sprockets%2F9008bf696500cfae1d61f045f209181e +256 -0
  75. data/test/dummy/tmp/cache/assets/CDB/B40/sprockets%2F53529a22c994570a0df4742c0bfe61f4 +0 -0
  76. data/test/dummy/tmp/cache/assets/CDC/D10/sprockets%2F1e775b4ff06b4401c07503ce95a839b5 +75 -0
  77. data/test/dummy/tmp/cache/assets/CDE/CD0/sprockets%2F141066798b4acf07053f7e3a6cb4e555 +1613 -0
  78. data/test/dummy/tmp/cache/assets/CE1/760/sprockets%2F245fe11803630fe30d0cf8a869886ab5 +357 -0
  79. data/test/dummy/tmp/cache/assets/CE1/FA0/sprockets%2F863d1650ef066e4a2168bc57c7c0e096 +0 -0
  80. data/test/dummy/tmp/cache/assets/CE2/310/sprockets%2Fd38075d5592ecaf82e43526c03b467c4 +1545 -0
  81. data/test/dummy/tmp/cache/assets/CE2/420/sprockets%2F30f2e8f30477e80cf6416dfe27307c07 +204 -0
  82. data/test/dummy/tmp/cache/assets/CE2/D70/sprockets%2F467c44b63644e0f44dd06a585f36f1a6 +522 -0
  83. data/test/dummy/tmp/cache/assets/CE3/670/sprockets%2Fddd11860b444cd0f9996be0c46762318 +796 -0
  84. data/test/dummy/tmp/cache/assets/CE4/0B0/sprockets%2Ff11535d785c0d34349c64d673bd4b28f +1105 -0
  85. data/test/dummy/tmp/cache/assets/CE4/590/sprockets%2Fd68edcc87a4ae302794093081b45b819 +10 -0
  86. data/test/dummy/tmp/cache/assets/CE4/D60/sprockets%2F61772e4a60b616f74da91b838a2f4f82 +0 -0
  87. data/test/dummy/tmp/cache/assets/CE6/DD0/sprockets%2F2fe073024a2bf26bd98458388b57af37 +1355 -0
  88. data/test/dummy/tmp/cache/assets/CE7/160/sprockets%2Fba1f9939f031b4356ec1869d40fc2747 +1261 -0
  89. data/test/dummy/tmp/cache/assets/CE8/C70/sprockets%2Fc6c9ba3c677b5e2af8520395192c9445 +173 -0
  90. data/test/dummy/tmp/cache/assets/CEA/8B0/sprockets%2Ff77e549cb6d37604105f35d4e67d8c21 +511 -0
  91. data/test/dummy/tmp/cache/assets/CEA/AA0/sprockets%2F5f816982c86d2e6b72b2f5f65c51d070 +1529 -0
  92. data/test/dummy/tmp/cache/assets/CEA/C10/sprockets%2F9dcd541e67c299ab076a44a2183872f8 +0 -0
  93. data/test/dummy/tmp/cache/assets/CF1/5A0/sprockets%2F1a697695edf2bb7b49a2896904218bc7 +115 -0
  94. data/test/dummy/tmp/cache/assets/CF4/480/sprockets%2F5e99c77e93f4a522c84357e62b25e0f7 +43 -0
  95. data/test/dummy/tmp/cache/assets/CF7/460/sprockets%2Fd12ea9733fe3c92456f57f9145569b9c +0 -0
  96. data/test/dummy/tmp/cache/assets/CF7/470/sprockets%2F2897897a166ca3369fecb88f83f211b5 +435 -0
  97. data/test/dummy/tmp/cache/assets/CFA/760/sprockets%2Fa9024adba14091e0635c6874d1db4e22 +0 -0
  98. data/test/dummy/tmp/cache/assets/D01/F30/sprockets%2Fe639a15b6e0cca37d12443b408e1166f +25 -0
  99. data/test/dummy/tmp/cache/assets/D02/9F0/sprockets%2Fb99eae308897fe88cb9414b96824098b +0 -0
  100. data/test/dummy/tmp/cache/assets/D03/330/sprockets%2F1e003cdb3e7dcc9307e84090ad457127 +454 -0
  101. data/test/dummy/tmp/cache/assets/D03/8B0/sprockets%2Ff74632bddf2c0b2018ca7b736309380e +365 -0
  102. data/test/dummy/tmp/cache/assets/D05/0A0/sprockets%2Fe57658220260db13eb5577aef42cb61b +257 -0
  103. data/test/dummy/tmp/cache/assets/D05/920/sprockets%2F909507434dcc270db4853e4c147f0aac +31 -0
  104. data/test/dummy/tmp/cache/assets/D08/510/sprockets%2Fa567be6cb6d7310096f1739b25a5a3f0 +50 -0
  105. data/test/dummy/tmp/cache/assets/D08/9F0/sprockets%2F1d61d2c89ca50957066bacc5b69011f5 +1424 -0
  106. data/test/dummy/tmp/cache/assets/D0A/790/sprockets%2Feb16913e6504c9b0d3be431de39e4751 +300 -0
  107. data/test/dummy/tmp/cache/assets/D0C/C50/sprockets%2Fd6613bee8b40d50459af6b52a7084f34 +796 -0
  108. data/test/dummy/tmp/cache/assets/D0D/030/sprockets%2Fba3f13b4a444679e8bc2549226ec743b +21 -0
  109. data/test/dummy/tmp/cache/assets/D0D/350/sprockets%2F2670bce036d485e15d059c0f1e98f24a +207 -0
  110. data/test/dummy/tmp/cache/assets/D13/270/sprockets%2F497cb163e6317e3fc1565d832f406cfb +348 -0
  111. data/test/dummy/tmp/cache/assets/D13/380/sprockets%2F786d003c9c7fb759dd26c1030c087cf6 +813 -0
  112. data/test/dummy/tmp/cache/assets/D13/7C0/sprockets%2F528d22310a9ab8e6fba08d82844ce795 +0 -0
  113. data/test/dummy/tmp/cache/assets/D15/F60/sprockets%2Fa28394e3f80365b5bc86794dd46daa22 +0 -0
  114. data/test/dummy/tmp/cache/assets/D18/500/sprockets%2Fd22c2d97d1db2154f2f7592906e957ea +1001 -0
  115. data/test/dummy/tmp/cache/assets/D1B/C70/sprockets%2F1c04848b1e1d6e8e33b8581f8c8128ff +223 -0
  116. data/test/dummy/tmp/cache/assets/D1C/600/sprockets%2Fa0601f99147f59ddd6266e6aff077e14 +0 -0
  117. data/test/dummy/tmp/cache/assets/D1E/470/sprockets%2Fb3933e694547b78bf6fb15f44a4623fe +53 -0
  118. data/test/dummy/tmp/cache/assets/D1F/480/sprockets%2F545164168becf42b289efc8708f1db68 +1278 -0
  119. data/test/dummy/tmp/cache/assets/D21/630/sprockets%2F0a14114729c14637f2e8f122acabd1ab +823 -0
  120. data/test/dummy/tmp/cache/assets/D24/A90/sprockets%2F21c8a0d48c51b8585ba03bc112ecd153 +692 -0
  121. data/test/dummy/tmp/cache/assets/D25/D30/sprockets%2F3b937f4c16d2aa0a28fc02a0e922712b +1441 -0
  122. data/test/dummy/tmp/cache/assets/D25/F30/sprockets%2Fe251527c0c018f4b4ad44b2ad7064fb0 +2255 -0
  123. data/test/dummy/tmp/cache/assets/D26/DE0/sprockets%2F761ac1bdb0739cc56fa0c1224b137b09 +0 -0
  124. data/test/dummy/tmp/cache/assets/D2A/C30/sprockets%2F978fe7268754f451c59b9ccb323ffa56 +0 -0
  125. data/test/dummy/tmp/cache/assets/D2B/0F0/sprockets%2Fbf223af03335cfc08a71e549e10c0e27 +2539 -0
  126. data/test/dummy/tmp/cache/assets/D2E/6D0/sprockets%2F9e7fda3affb389313cc50223f01c0324 +0 -0
  127. data/test/dummy/tmp/cache/assets/D2F/110/sprockets%2F3730ffe2ed34c1219d580bd1615ea7b0 +2239 -0
  128. data/test/dummy/tmp/cache/assets/D2F/F10/sprockets%2F9cac242f0bf5ec00079ea3a463e26552 +153 -0
  129. data/test/dummy/tmp/cache/assets/D30/1D0/sprockets%2Fd690a26a0b0ae138c1c48d257a7674bc +589 -0
  130. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  131. data/test/dummy/tmp/cache/assets/D36/940/sprockets%2Fb4ba462ac9f4aac561c36e60367c1378 +572 -0
  132. data/test/dummy/tmp/cache/assets/D37/090/sprockets%2F2f2e71ebbc240014ebf648f0917e854a +798 -0
  133. data/test/dummy/tmp/cache/assets/D3A/440/sprockets%2F6d332243647c841dea36ed822cdfc23e +165 -0
  134. data/test/dummy/tmp/cache/assets/D3B/5A0/sprockets%2F82e05cf8c88ba8cb1c87e50d51372a03 +0 -0
  135. data/test/dummy/tmp/cache/assets/D41/B30/sprockets%2Fba1b93913dd01d83ac9a96df334456f8 +0 -0
  136. data/test/dummy/tmp/cache/assets/D43/D90/sprockets%2F04f3a5926d5a7672456dc7afa73d0c7f +38 -0
  137. data/test/dummy/tmp/cache/assets/D45/1F0/sprockets%2F1bfa855d9c10ff2431a9a548958cc5e4 +83 -0
  138. data/test/dummy/tmp/cache/assets/D45/B10/sprockets%2F643f3d9b216e48df952b7f150a46a7ec +60 -0
  139. data/test/dummy/tmp/cache/assets/D46/040/sprockets%2F199546844e5939721a5afcbcce4ea43a +143 -0
  140. data/test/dummy/tmp/cache/assets/D49/320/sprockets%2Fd8123eb229e34c9f507f7b1876f1c4ee +506 -0
  141. data/test/dummy/tmp/cache/assets/D49/750/sprockets%2Ff41ef1c0832b7294fb15588ff5c783cb +0 -0
  142. data/test/dummy/tmp/cache/assets/D49/930/sprockets%2F1071926698fa55abc71e1b6fd966dfe1 +72 -0
  143. data/test/dummy/tmp/cache/assets/D49/D10/sprockets%2Fb67b8d7cc7579352a91694f9ae10cdb0 +127 -0
  144. data/test/dummy/tmp/cache/assets/D4A/160/sprockets%2Fcbd8988b5e18d153eff6230d72e9046a +516 -0
  145. data/test/dummy/tmp/cache/assets/D4A/2B0/sprockets%2Ffcdf002d38fd938bf7226b46b76706c8 +1101 -0
  146. data/test/dummy/tmp/cache/assets/D4E/2F0/sprockets%2F77cb87ae57f0d8c25cdaa74181a64997 +1441 -0
  147. data/test/dummy/tmp/cache/assets/D4F/060/sprockets%2Fa9e66b39ada7394a29bf44f3a682f665 +511 -0
  148. data/test/dummy/tmp/cache/assets/D50/BD0/sprockets%2F88650dd57ef64075462e6dae757dbe2c +0 -0
  149. data/test/dummy/tmp/cache/assets/D53/CA0/sprockets%2Fa85032e82709a043fbb2ec00e04f2bbd +0 -0
  150. data/test/dummy/tmp/cache/assets/D54/BF0/sprockets%2F91970514ff528e8d2bfd81f1ec83c9c8 +240 -0
  151. data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +10 -0
  152. data/test/dummy/tmp/cache/assets/D56/500/sprockets%2F75ebadd035f1324b194034af92eac3a0 +0 -0
  153. data/test/dummy/tmp/cache/assets/D5A/900/sprockets%2F5729f77d97fdee53b1942cf17f6f05e4 +474 -0
  154. data/test/dummy/tmp/cache/assets/D5A/D50/sprockets%2F81bace3db2c2f1241175ff3c5009d08c +0 -0
  155. data/test/dummy/tmp/cache/assets/D5B/C70/sprockets%2Fe64119a9db7017b7ab3b0da1b6076f0d +44 -0
  156. data/test/dummy/tmp/cache/assets/D5E/4D0/sprockets%2F756f25e4ad861a050cdc41bb8414e4ab +126 -0
  157. data/test/dummy/tmp/cache/assets/D5E/730/sprockets%2Fd30caf70b387c4604326bdda32aeb549 +0 -0
  158. data/test/dummy/tmp/cache/assets/D5E/AA0/sprockets%2F790dd07caaaacb30ceb0174664e90817 +136 -0
  159. data/test/dummy/tmp/cache/assets/D64/D30/sprockets%2Fe4bd8f60a3a446274c3cb2f5d16563ac +590 -0
  160. data/test/dummy/tmp/cache/assets/D66/400/sprockets%2Fecb7401d20daf25605a7afad3a793778 +0 -0
  161. data/test/dummy/tmp/cache/assets/D67/250/sprockets%2F8422eb26855ca9c953a3bf1aeade8004 +0 -0
  162. data/test/dummy/tmp/cache/assets/D69/900/sprockets%2F28ae64f52cb18f77b1a1bd9c51293da4 +0 -0
  163. data/test/dummy/tmp/cache/assets/D6A/870/sprockets%2F1ece6a51b42f9280f4cee9020c94b72e +197 -0
  164. data/test/dummy/tmp/cache/assets/D6B/DD0/sprockets%2F9a0abc735e27fc61dab019788518eba4 +164 -0
  165. data/test/dummy/tmp/cache/assets/D6E/CC0/sprockets%2F8b4fbcec2475e7203b8859baf8e310a3 +0 -0
  166. data/test/dummy/tmp/cache/assets/D72/470/sprockets%2Fbc0c6d850e7c769e83d58eb3e6061b2a +2556 -0
  167. data/test/dummy/tmp/cache/assets/D72/9D0/sprockets%2F9402daf6da6f7eed331a9d78216cb761 +0 -0
  168. data/test/dummy/tmp/cache/assets/D74/070/sprockets%2F91ae68f698a39bd7d0d11150fc46e4cd +418 -0
  169. data/test/dummy/tmp/cache/assets/D74/7F0/sprockets%2F22dad1069ea6a8f29ae757c44e18ec83 +0 -0
  170. data/test/dummy/tmp/cache/assets/D75/3C0/sprockets%2F44e2ae51b97853d8ecda7b264a267c7d +1630 -0
  171. data/test/dummy/tmp/cache/assets/D77/780/sprockets%2Ffa2abdfb0b62867c346f79187b8e42d5 +823 -0
  172. data/test/dummy/tmp/cache/assets/D79/850/sprockets%2F4d540586ed379fd9a70fa0b7ce4f5b27 +306 -0
  173. data/test/dummy/tmp/cache/assets/D7A/B60/sprockets%2F5925c92f48caff053d08853dc69e5bba +0 -0
  174. data/test/dummy/tmp/cache/assets/D81/C90/sprockets%2F19aca5c835efce74878c23e581e2a89e +2239 -0
  175. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +11228 -0
  176. data/test/dummy/tmp/cache/assets/D8B/B10/sprockets%2Fbb7a2305a8f2832631863bbababb67be +301 -0
  177. data/test/dummy/tmp/cache/assets/D92/3B0/sprockets%2F93dc71f411faf72ec8ef0b5d217b51a0 +505 -0
  178. data/test/dummy/tmp/cache/assets/D92/EE0/sprockets%2Ffd051ea0abf6be6970754aa732e40c8b +289 -0
  179. data/test/dummy/tmp/cache/assets/D93/810/sprockets%2F7dc1ac5e1b83ba5144e34cf156d48a8a +471 -0
  180. data/test/dummy/tmp/cache/assets/D94/020/sprockets%2F35cb4ce22488fb5bdd260508ca47a3fb +239 -0
  181. data/test/dummy/tmp/cache/assets/D94/EC0/sprockets%2F8b900fba18f8e046f5f12e6d1f0ac15b +74 -0
  182. data/test/dummy/tmp/cache/assets/D95/470/sprockets%2F5be5d361a52575c433831b5e8cccbace +9273 -0
  183. data/test/dummy/tmp/cache/assets/D97/9D0/sprockets%2F524a2a94a88c1d392dabcba654e365fc +103 -0
  184. data/test/dummy/tmp/cache/assets/D9D/800/sprockets%2Ff8387220eb4dda9b29a37b5deb9f2a40 +54 -0
  185. data/test/dummy/tmp/cache/assets/D9E/DD0/sprockets%2Fb6b4ffad6485eda046b327a196e8c44a +0 -0
  186. data/test/dummy/tmp/cache/assets/DA1/0A0/sprockets%2F359c94aee6ba2e15fc9666aa4de311c8 +166 -0
  187. data/test/dummy/tmp/cache/assets/DA1/0D0/sprockets%2F798de3c28452e164a7fc1a3a6e8cdb4b +652 -0
  188. data/test/dummy/tmp/cache/assets/DA3/CB0/sprockets%2Fdfad6bb1857a8af91f98ba137c18504e +815 -0
  189. data/test/dummy/tmp/cache/assets/DA4/E10/sprockets%2Fbda7705734ace95f12a7d79df9c14af2 +1354 -0
  190. data/test/dummy/tmp/cache/assets/DA5/E30/sprockets%2F2e6707a119e94a784efbadca18d7e8d1 +129 -0
  191. data/test/dummy/tmp/cache/assets/DA6/4B0/sprockets%2F4f7a708b6aa2d42eb577493dea7cef55 +115 -0
  192. data/test/dummy/tmp/cache/assets/DA8/A10/sprockets%2F0ae5bbb4ca200e74db3b64d72c2be120 +0 -0
  193. data/test/dummy/tmp/cache/assets/DA9/3F0/sprockets%2Fdd0af9cfd65fb7d02fe778c8f6015361 +499 -0
  194. data/test/dummy/tmp/cache/assets/DA9/780/sprockets%2Fe3559a635e8f92dec7727a3db2ae7b4c +813 -0
  195. data/test/dummy/tmp/cache/assets/DAC/0E0/sprockets%2F04cef8243a9ef7321846debc977ea8db +607 -0
  196. data/test/dummy/tmp/cache/assets/DB1/260/sprockets%2Fb879ff7530bf8cc175e0c7e70dc4e79b +0 -0
  197. data/test/dummy/tmp/cache/assets/DB4/4C0/sprockets%2F30a76cbd98dedb56742cd8ecaf858757 +0 -0
  198. data/test/dummy/tmp/cache/assets/DBD/7E0/sprockets%2F236fb1ac5ed9f2e3fe32203acc3a842d +0 -0
  199. data/test/dummy/tmp/cache/assets/DC2/DF0/sprockets%2Fe233bcaba8beff15626c35cb5e0e0936 +845 -0
  200. data/test/dummy/tmp/cache/assets/DC4/600/sprockets%2F59c96aa6c1cbebc61bff6c050a5351d7 +225 -0
  201. data/test/dummy/tmp/cache/assets/DC5/030/sprockets%2Fcb2fe864a0177eec19017c43ce9aa4ad +187 -0
  202. data/test/dummy/tmp/cache/assets/DC8/A60/sprockets%2F9fcb9f5c3f679ce749ee4c3f93869ba6 +74 -0
  203. data/test/dummy/tmp/cache/assets/DCB/D40/sprockets%2Ffd5542bfb7660a8d8cac3a2e46fb01f8 +828 -0
  204. data/test/dummy/tmp/cache/assets/DCC/020/sprockets%2F0c129c5f2784c96fa1dc3da6c19c1efc +128 -0
  205. data/test/dummy/tmp/cache/assets/DCF/520/sprockets%2F975162fb97a3ec7033db5f2fdba4fcd3 +70 -0
  206. data/test/dummy/tmp/cache/assets/DD0/000/sprockets%2F0d5d631cce6f0b078bb29cf98b3d78bb +276 -0
  207. data/test/dummy/tmp/cache/assets/DD0/C90/sprockets%2F84eeca4ef8f5eb29b13f7e1ea3c71324 +591 -0
  208. data/test/dummy/tmp/cache/assets/DD6/710/sprockets%2F9e83f2ebbe3e349efca2de390e15d635 +204 -0
  209. data/test/dummy/tmp/cache/assets/DE1/830/sprockets%2Fd23d3cafef2e2a9055bc103dffc1a023 +208 -0
  210. data/test/dummy/tmp/cache/assets/DEB/470/sprockets%2Fae2de0fcbc2214b71d3f2a875d2bc8c3 +2255 -0
  211. data/test/dummy/tmp/cache/assets/DEE/690/sprockets%2F5d824bcadef29060cc13eed71af4b4d0 +550 -0
  212. data/test/dummy/tmp/cache/assets/DF0/5D0/sprockets%2F25a875eb0a5d4c49bcc3fa39ea0adb26 +567 -0
  213. data/test/dummy/tmp/cache/assets/DF3/E20/sprockets%2Fada770c49a5d6b38d1cc43ed4d51c1fc +0 -0
  214. data/test/dummy/tmp/cache/assets/DF5/C80/sprockets%2F03ad7d7b3a8feba9ed9be82ae2083b20 +340 -0
  215. data/test/dummy/tmp/cache/assets/DF6/560/sprockets%2Fafceb2b55eb108efe4446dfb02b519b8 +0 -0
  216. data/test/dummy/tmp/cache/assets/DFC/030/sprockets%2Fcbdd3679eaba219b4e1ff20677af1c6f +1371 -0
  217. data/test/dummy/tmp/cache/assets/E00/970/sprockets%2F8bc6dde8d05c382dd07cbcec70f54e09 +378 -0
  218. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  219. data/test/dummy/tmp/cache/assets/E12/2F0/sprockets%2F5c45062ecfbe512dcba176ba6ddacc00 +523 -0
  220. data/test/dummy/tmp/cache/assets/E21/5D0/sprockets%2Fd4fe6d611bfb0e63c04de5dbfb128a8a +0 -0
  221. data/test/dummy/tmp/cache/assets/E22/770/sprockets%2F2ccebcabfbb9b59159e4b73b3b30a74d +208 -0
  222. data/test/dummy/tmp/cache/assets/E31/A90/sprockets%2F26b98bbbc15eee9b370c7dcde88d16aa +394 -0
  223. data/test/dummy/tmp/cache/assets/E31/E30/sprockets%2Ffbdafcc4e2f44bb9fc653bcf9625b750 +284 -0
  224. data/test/dummy/tmp/cache/assets/E37/1C0/sprockets%2Fa5eb45fc86dafe2bee4e4fa3f53c4785 +0 -0
  225. data/test/dummy/tmp/cache/assets/E4C/960/sprockets%2F13fd6e4bfdf031acb3dedca8d0f407b4 +1277 -0
  226. data/test/dummy/tmp/cache/assets/E88/330/sprockets%2Fe02d0adb5529ffafcea1b9e5ccf69a5b +669 -0
  227. data/test/dummy/tmp/pids/server.pid +1 -0
  228. data/test/dummy/tmp/simple.js.js +20 -0
  229. data/test/dummy/tmp/soy-1325274421.js +20 -0
  230. data/test/dummy/tmp/soy-1325286267.js +20 -0
  231. data/test/test_helper.rb +10 -0
  232. data/test/yellow-brick-road_test.rb +7 -0
  233. metadata +538 -0
@@ -0,0 +1,567 @@
1
+ o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1325441614.879183: @value{I"
2
+ class:EFI"BundledAsset;
3
+ FI"id;
4
+ F"%410740c14d526abdc51bc9b8f42ff524I"logical_path;
5
+ FI"$closure/goog/datasource/expr.js;
6
+ TI"
7
+ F"q/Volumes/Development/dev-web/yellow-brick-road/vendor/assets/closure-library/closure/goog/datasource/expr.jsI"content_type;
8
+ FI"application/javascript;
9
+ FI"
10
+ mtime;
11
+ FI"2011-12-30T02:16:24+00:00;
12
+ FI" body;
13
+ FI"�9// Copyright 2006 The Closure Library Authors. All Rights Reserved.
14
+ //
15
+ // Licensed under the Apache License, Version 2.0 (the "License");
16
+ // you may not use this file except in compliance with the License.
17
+ // You may obtain a copy of the License at
18
+ //
19
+ // http://www.apache.org/licenses/LICENSE-2.0
20
+ //
21
+ // Unless required by applicable law or agreed to in writing, software
22
+ // distributed under the License is distributed on an "AS-IS" BASIS,
23
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
+ // See the License for the specific language governing permissions and
25
+ // limitations under the License.
26
+
27
+ /**
28
+ * @fileoverview
29
+ * Expression evaluation utilities. Expression format is very similar to XPath.
30
+ *
31
+ * Expression details:
32
+ * - Of format A/B/C, which will evaluate getChildNode('A').getChildNode('B').
33
+ * getChildNodes('C')|getChildNodeValue('C')|getChildNode('C') depending on
34
+ * call
35
+ * - If expression ends with '/name()', will get the name() of the node
36
+ * referenced by the preceding path.
37
+ * - If expression ends with '/count()', will get the count() of the nodes that
38
+ * match the expression referenced by the preceding path.
39
+ * - If expression ends with '?', the value is OK to evaluate to null. This is
40
+ * not enforced by the expression evaluation functions, instead it is
41
+ * provided as a flag for client code which may ignore depending on usage
42
+ * - If expression has [INDEX], will use getChildNodes().getByIndex(INDEX)
43
+ *
44
+ */
45
+
46
+
47
+
48
+ goog.provide('goog.ds.Expr');
49
+
50
+ goog.require('goog.ds.BasicNodeList');
51
+ goog.require('goog.ds.EmptyNodeList');
52
+ goog.require('goog.string');
53
+
54
+
55
+
56
+ /**
57
+ * Create a new expression. An expression uses a string expression language, and
58
+ * from this string and a passed in DataNode can evaluate to a value, DataNode,
59
+ * or a DataNodeList.
60
+ *
61
+ * @param {string=} opt_expr The string expression.
62
+ * @constructor
63
+ */
64
+ goog.ds.Expr = function(opt_expr) {
65
+ if (opt_expr) {
66
+ this.setSource_(opt_expr);
67
+ }
68
+ };
69
+
70
+
71
+ /**
72
+ * Set the source expression text & parse
73
+ *
74
+ * @param {string} expr The string expression source.
75
+ * @param {Array=} opt_parts Array of the parts of an expression.
76
+ * @param {goog.ds.Expr=} opt_childExpr Optional child of this expression,
77
+ * passed in as a hint for processing.
78
+ * @param {goog.ds.Expr=} opt_prevExpr Optional preceding expression
79
+ * (i.e. $A/B/C is previous expression to B/C) passed in as a hint for
80
+ * processing.
81
+ * @private
82
+ */
83
+ goog.ds.Expr.prototype.setSource_ = function(expr, opt_parts,
84
+ opt_childExpr, opt_prevExpr) {
85
+ this.src_ = expr;
86
+
87
+ if (!opt_childExpr && !opt_prevExpr) {
88
+ // Check whether it can be empty
89
+ if (goog.string.endsWith(expr, goog.ds.Expr.String_.CAN_BE_EMPTY)) {
90
+ this.canBeEmpty_ = true;
91
+ expr = expr.substring(0, expr.length - 1);
92
+ }
93
+
94
+ // Check whether this is an node function
95
+ if (goog.string.endsWith(expr, '()')) {
96
+ if (goog.string.endsWith(expr, goog.ds.Expr.String_.NAME_EXPR) ||
97
+ goog.string.endsWith(expr, goog.ds.Expr.String_.COUNT_EXPR) ||
98
+ goog.string.endsWith(expr, goog.ds.Expr.String_.POSITION_EXPR)) {
99
+ var lastPos = expr.lastIndexOf(goog.ds.Expr.String_.SEPARATOR);
100
+ if (lastPos != -1) {
101
+ this.exprFn_ = expr.substring(lastPos + 1);
102
+ expr = expr.substring(0, lastPos);
103
+ } else {
104
+ this.exprFn_ = expr;
105
+ expr = goog.ds.Expr.String_.CURRENT_NODE_EXPR;
106
+ }
107
+ if (this.exprFn_ == goog.ds.Expr.String_.COUNT_EXPR) {
108
+ this.isCount_ = true;
109
+ }
110
+ }
111
+ }
112
+ }
113
+
114
+ // Split into component parts
115
+ this.parts_ = opt_parts || expr.split('/');
116
+ this.size_ = this.parts_.length;
117
+ this.last_ = this.parts_[this.size_ - 1];
118
+ this.root_ = this.parts_[0];
119
+
120
+ if (this.size_ == 1) {
121
+ this.rootExpr_ = this;
122
+ this.isAbsolute_ = goog.string.startsWith(expr, '$');
123
+ } else {
124
+ this.rootExpr_ = goog.ds.Expr.createInternal_(this.root_, null,
125
+ this, null);
126
+ this.isAbsolute_ = this.rootExpr_.isAbsolute_;
127
+ this.root_ = this.rootExpr_.root_;
128
+ }
129
+
130
+ if (this.size_ == 1 && !this.isAbsolute_) {
131
+ // Check whether expression maps to current node, for convenience
132
+ this.isCurrent_ = (expr == goog.ds.Expr.String_.CURRENT_NODE_EXPR ||
133
+ expr == goog.ds.Expr.String_.EMPTY_EXPR);
134
+
135
+ // Whether this expression is just an attribute (i.e. '@foo')
136
+ this.isJustAttribute_ =
137
+ goog.string.startsWith(expr, goog.ds.Expr.String_.ATTRIBUTE_START);
138
+
139
+ // Check whether this is a common node expression
140
+ this.isAllChildNodes_ = expr == goog.ds.Expr.String_.ALL_CHILD_NODES_EXPR;
141
+ this.isAllAttributes_ = expr == goog.ds.Expr.String_.ALL_ATTRIBUTES_EXPR;
142
+ this.isAllElements_ = expr == goog.ds.Expr.String_.ALL_ELEMENTS_EXPR;
143
+ }
144
+ };
145
+
146
+
147
+ /**
148
+ * Get the source data path for the expression
149
+ * @return {string} The path.
150
+ */
151
+ goog.ds.Expr.prototype.getSource = function() {
152
+ return this.src_;
153
+ };
154
+
155
+
156
+ /**
157
+ * Gets the last part of the expression.
158
+ * @return {?string} Last part of the expression.
159
+ */
160
+ goog.ds.Expr.prototype.getLast = function() {
161
+ return this.last_;
162
+ };
163
+
164
+
165
+ /**
166
+ * Gets the parent expression of this expression, or null if this is top level
167
+ * @return {goog.ds.Expr} The parent.
168
+ */
169
+ goog.ds.Expr.prototype.getParent = function() {
170
+ if (!this.parentExprSet_) {
171
+ if (this.size_ > 1) {
172
+ this.parentExpr_ = goog.ds.Expr.createInternal_(null,
173
+ this.parts_.slice(0, this.parts_.length - 1), this, null);
174
+ }
175
+ this.parentExprSet_ = true;
176
+ }
177
+ return this.parentExpr_;
178
+ };
179
+
180
+
181
+ /**
182
+ * Gets the parent expression of this expression, or null if this is top level
183
+ * @return {goog.ds.Expr} The parent.
184
+ */
185
+ goog.ds.Expr.prototype.getNext = function() {
186
+ if (!this.nextExprSet_) {
187
+ if (this.size_ > 1) {
188
+ this.nextExpr_ = goog.ds.Expr.createInternal_(null, this.parts_.slice(1),
189
+ null, this);
190
+ }
191
+ this.nextExprSet_ = true;
192
+ }
193
+ return this.nextExpr_;
194
+ };
195
+
196
+
197
+ /**
198
+ * Evaluate an expression on a data node, and return a value
199
+ * Recursively walks through child nodes to evaluate
200
+ * TODO(user) Support other expression functions
201
+ *
202
+ * @param {goog.ds.DataNode=} opt_ds Optional datasource to evaluate against.
203
+ * If not provided, evaluates against DataManager global root.
204
+ * @return {*} Value of the node, or null if doesn't exist.
205
+ */
206
+ goog.ds.Expr.prototype.getValue = function(opt_ds) {
207
+ if (opt_ds == null) {
208
+ opt_ds = goog.ds.DataManager.getInstance();
209
+ } else if (this.isAbsolute_) {
210
+ opt_ds = opt_ds.getDataRoot ? opt_ds.getDataRoot() :
211
+ goog.ds.DataManager.getInstance();
212
+ }
213
+
214
+ if (this.isCount_) {
215
+ var nodes = this.getNodes(opt_ds);
216
+ return nodes.getCount();
217
+ }
218
+
219
+ if (this.size_ == 1) {
220
+ return opt_ds.getChildNodeValue(this.root_);
221
+ } else if (this.size_ == 0) {
222
+ return opt_ds.get();
223
+ }
224
+
225
+ var nextDs = opt_ds.getChildNode(this.root_);
226
+
227
+ if (nextDs == null) {
228
+ return null;
229
+ } else {
230
+ return this.getNext().getValue(nextDs);
231
+ }
232
+ };
233
+
234
+
235
+ /**
236
+ * Evaluate an expression on a data node, and return matching nodes
237
+ * Recursively walks through child nodes to evaluate
238
+ *
239
+ * @param {goog.ds.DataNode=} opt_ds Optional datasource to evaluate against.
240
+ * If not provided, evaluates against data root.
241
+ * @param {boolean=} opt_canCreate If true, will try to create new nodes.
242
+ * @return {goog.ds.DataNodeList} Matching nodes.
243
+ */
244
+ goog.ds.Expr.prototype.getNodes = function(opt_ds, opt_canCreate) {
245
+ return /** @type {goog.ds.DataNodeList} */(this.getNodes_(opt_ds,
246
+ false, opt_canCreate));
247
+ };
248
+
249
+
250
+ /**
251
+ * Evaluate an expression on a data node, and return the first matching node
252
+ * Recursively walks through child nodes to evaluate
253
+ *
254
+ * @param {goog.ds.DataNode=} opt_ds Optional datasource to evaluate against.
255
+ * If not provided, evaluates against DataManager global root.
256
+ * @param {boolean=} opt_canCreate If true, will try to create new nodes.
257
+ * @return {goog.ds.DataNode} Matching nodes, or null if doesn't exist.
258
+ */
259
+ goog.ds.Expr.prototype.getNode = function(opt_ds, opt_canCreate) {
260
+ return /** @type {goog.ds.DataNode} */(this.getNodes_(opt_ds,
261
+ true, opt_canCreate));
262
+ };
263
+
264
+
265
+ /**
266
+ * Evaluate an expression on a data node, and return the first matching node
267
+ * Recursively walks through child nodes to evaluate
268
+ *
269
+ * @param {goog.ds.DataNode=} opt_ds Optional datasource to evaluate against.
270
+ * If not provided, evaluates against DataManager global root.
271
+ * @param {boolean=} opt_selectOne Whether to return single matching DataNode
272
+ * or matching nodes in DataNodeList.
273
+ * @param {boolean=} opt_canCreate If true, will try to create new nodes.
274
+ * @return {goog.ds.DataNode|goog.ds.DataNodeList} Matching node or nodes,
275
+ * depending on value of opt_selectOne.
276
+ * @private
277
+ */
278
+ goog.ds.Expr.prototype.getNodes_ = function(opt_ds, opt_selectOne,
279
+ opt_canCreate) {
280
+ if (opt_ds == null) {
281
+ opt_ds = goog.ds.DataManager.getInstance();
282
+ } else if (this.isAbsolute_) {
283
+ opt_ds = opt_ds.getDataRoot ? opt_ds.getDataRoot() :
284
+ goog.ds.DataManager.getInstance();
285
+ }
286
+
287
+ if (this.size_ == 0 && opt_selectOne) {
288
+ return opt_ds;
289
+ } else if (this.size_ == 0 && !opt_selectOne) {
290
+ return new goog.ds.BasicNodeList([opt_ds]);
291
+ } else if (this.size_ == 1) {
292
+ if (opt_selectOne) {
293
+ return opt_ds.getChildNode(this.root_, opt_canCreate);
294
+ }
295
+ else {
296
+ var possibleListChild = opt_ds.getChildNode(this.root_);
297
+ if (possibleListChild && possibleListChild.isList()) {
298
+ return possibleListChild.getChildNodes();
299
+ } else {
300
+ return opt_ds.getChildNodes(this.root_);
301
+ }
302
+ }
303
+ } else {
304
+ var nextDs = opt_ds.getChildNode(this.root_, opt_canCreate);
305
+ if (nextDs == null && opt_selectOne) {
306
+ return null;
307
+ } else if (nextDs == null && !opt_selectOne) {
308
+ return new goog.ds.EmptyNodeList();
309
+ }
310
+ return this.getNext().getNodes_(nextDs, opt_selectOne, opt_canCreate);
311
+ }
312
+ };
313
+
314
+
315
+ /**
316
+ * Whether the expression can be null.
317
+ *
318
+ * @type {boolean}
319
+ * @private
320
+ */
321
+ goog.ds.Expr.prototype.canBeEmpty_ = false;
322
+
323
+
324
+ /**
325
+ * The parsed paths in the expression
326
+ *
327
+ * @type {Array.<string>}
328
+ * @private
329
+ */
330
+ goog.ds.Expr.prototype.parts_ = [];
331
+
332
+
333
+ /**
334
+ * Number of paths in the expression
335
+ *
336
+ * @type {?number}
337
+ * @private
338
+ */
339
+ goog.ds.Expr.prototype.size_ = null;
340
+
341
+
342
+ /**
343
+ * The root node path in the expression
344
+ *
345
+ * @type {string}
346
+ * @private
347
+ */
348
+ goog.ds.Expr.prototype.root_;
349
+
350
+
351
+ /**
352
+ * The last path in the expression
353
+ *
354
+ * @type {?string}
355
+ * @private
356
+ */
357
+ goog.ds.Expr.prototype.last_ = null;
358
+
359
+
360
+ /**
361
+ * Whether the expression evaluates to current node
362
+ *
363
+ * @type {boolean}
364
+ * @private
365
+ */
366
+ goog.ds.Expr.prototype.isCurrent_ = false;
367
+
368
+
369
+ /**
370
+ * Whether the expression is just an attribute
371
+ *
372
+ * @type {boolean}
373
+ * @private
374
+ */
375
+ goog.ds.Expr.prototype.isJustAttribute_ = false;
376
+
377
+
378
+ /**
379
+ * Does this expression select all DOM-style child nodes (element and text)
380
+ *
381
+ * @type {boolean}
382
+ * @private
383
+ */
384
+ goog.ds.Expr.prototype.isAllChildNodes_ = false;
385
+
386
+
387
+ /**
388
+ * Does this expression select all DOM-style attribute nodes (starts with '@')
389
+ *
390
+ * @type {boolean}
391
+ * @private
392
+ */
393
+ goog.ds.Expr.prototype.isAllAttributes_ = false;
394
+
395
+
396
+ /**
397
+ * Does this expression select all DOM-style element child nodes
398
+ *
399
+ * @type {boolean}
400
+ * @private
401
+ */
402
+ goog.ds.Expr.prototype.isAllElements_ = false;
403
+
404
+
405
+ /**
406
+ * The function used by this expression
407
+ *
408
+ * @type {?string}
409
+ * @private
410
+ */
411
+ goog.ds.Expr.prototype.exprFn_ = null;
412
+
413
+
414
+ /**
415
+ * Cached value for the parent expression.
416
+ * @type {goog.ds.Expr?}
417
+ * @private
418
+ */
419
+ goog.ds.Expr.prototype.parentExpr_ = null;
420
+
421
+
422
+ /**
423
+ * Cached value for the next expression.
424
+ * @type {goog.ds.Expr?}
425
+ * @private
426
+ */
427
+ goog.ds.Expr.prototype.nextExpr_ = null;
428
+
429
+
430
+ /**
431
+ * Create an expression from a string, can use cached values
432
+ *
433
+ * @param {string} expr The expression string.
434
+ * @return {goog.ds.Expr} The expression object.
435
+ */
436
+ goog.ds.Expr.create = function(expr) {
437
+ var result = goog.ds.Expr.cache_[expr];
438
+
439
+ if (result == null) {
440
+ result = new goog.ds.Expr(expr);
441
+ goog.ds.Expr.cache_[expr] = result;
442
+ }
443
+ return result;
444
+ };
445
+
446
+
447
+ /**
448
+ * Create an expression from a string, can use cached values
449
+ * Uses hints from related expressions to help in creation
450
+ *
451
+ * @param {?string=} opt_expr The string expression source.
452
+ * @param {Array=} opt_parts Array of the parts of an expression.
453
+ * @param {goog.ds.Expr=} opt_childExpr Optional child of this expression,
454
+ * passed in as a hint for processing.
455
+ * @param {goog.ds.Expr=} opt_prevExpr Optional preceding expression
456
+ * (i.e. $A/B/C is previous expression to B/C) passed in as a hint for
457
+ * processing.
458
+ * @return {goog.ds.Expr} The expression object.
459
+ * @private
460
+ */
461
+ goog.ds.Expr.createInternal_ = function(opt_expr, opt_parts, opt_childExpr,
462
+ opt_prevExpr) {
463
+ var expr = opt_expr || opt_parts.join('/');
464
+ var result = goog.ds.Expr.cache_[expr];
465
+
466
+ if (result == null) {
467
+ result = new goog.ds.Expr();
468
+ result.setSource_(expr, opt_parts, opt_childExpr, opt_prevExpr);
469
+ goog.ds.Expr.cache_[expr] = result;
470
+ }
471
+ return result;
472
+ };
473
+
474
+
475
+ /**
476
+ * Cache of pre-parsed expressions
477
+ * @private
478
+ */
479
+ goog.ds.Expr.cache_ = {};
480
+
481
+
482
+ /**
483
+ * Commonly used strings in expressions.
484
+ * @enum {string}
485
+ * @private
486
+ */
487
+ goog.ds.Expr.String_ = {
488
+ SEPARATOR: '/',
489
+ CURRENT_NODE_EXPR: '.',
490
+ EMPTY_EXPR: '',
491
+ ATTRIBUTE_START: '@',
492
+ ALL_CHILD_NODES_EXPR: '*|text()',
493
+ ALL_ATTRIBUTES_EXPR: '@*',
494
+ ALL_ELEMENTS_EXPR: '*',
495
+ NAME_EXPR: 'name()',
496
+ COUNT_EXPR: 'count()',
497
+ POSITION_EXPR: 'position()',
498
+ INDEX_START: '[',
499
+ INDEX_END: ']',
500
+ CAN_BE_EMPTY: '?'
501
+ };
502
+
503
+
504
+ /**
505
+ * Standard expressions
506
+ */
507
+
508
+
509
+ /**
510
+ * The current node
511
+ */
512
+ goog.ds.Expr.CURRENT = goog.ds.Expr.create(
513
+ goog.ds.Expr.String_.CURRENT_NODE_EXPR);
514
+
515
+
516
+ /**
517
+ * For DOM interop - all DOM child nodes (text + element).
518
+ * Text nodes have dataName #text
519
+ */
520
+ goog.ds.Expr.ALL_CHILD_NODES =
521
+ goog.ds.Expr.create(goog.ds.Expr.String_.ALL_CHILD_NODES_EXPR);
522
+
523
+
524
+ /**
525
+ * For DOM interop - all DOM element child nodes
526
+ */
527
+ goog.ds.Expr.ALL_ELEMENTS =
528
+ goog.ds.Expr.create(goog.ds.Expr.String_.ALL_ELEMENTS_EXPR);
529
+
530
+
531
+ /**
532
+ * For DOM interop - all DOM attribute nodes
533
+ * Attribute nodes have dataName starting with "@"
534
+ */
535
+ goog.ds.Expr.ALL_ATTRIBUTES =
536
+ goog.ds.Expr.create(goog.ds.Expr.String_.ALL_ATTRIBUTES_EXPR);
537
+
538
+
539
+ /**
540
+ * Get the dataName of a node
541
+ */
542
+ goog.ds.Expr.NAME = goog.ds.Expr.create(goog.ds.Expr.String_.NAME_EXPR);
543
+
544
+
545
+ /**
546
+ * Get the count of nodes matching an expression
547
+ */
548
+ goog.ds.Expr.COUNT = goog.ds.Expr.create(goog.ds.Expr.String_.COUNT_EXPR);
549
+
550
+
551
+ /**
552
+ * Get the position of the "current" node in the current node list
553
+ * This will only apply for datasources that support the concept of a current
554
+ * node (none exist yet). This is similar to XPath position() and concept of
555
+ * current node
556
+ */
557
+ goog.ds.Expr.POSITION = goog.ds.Expr.create(goog.ds.Expr.String_.POSITION_EXPR);
558
+ ;
559
+ FI"asset_paths;
560
+ F["q/Volumes/Development/dev-web/yellow-brick-road/vendor/assets/closure-library/closure/goog/datasource/expr.jsI"dependency_paths;
561
+ F[{I" path;
562
+ F"q/Volumes/Development/dev-web/yellow-brick-road/vendor/assets/closure-library/closure/goog/datasource/expr.jsI"
563
+ mtime;
564
+ FIu: Time
565
+ T: offsetiI"hexdigest;
566
+ F"%5cc520deea294b79341dd0595eb4e46eI"
567
+ F"%46dde6621c301f4928e3b34efee9e3b5