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,550 @@
1
+ o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1325441614.895406: @value{ I" length:EFi�9I" digest;
2
+ F"%e433d4e5623bc992da5b6f0a8cc4e955I" source;
3
+ FI"�9// Copyright 2006 The Closure Library Authors. All Rights Reserved.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS-IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ /**
18
+ * @fileoverview
19
+ * Expression evaluation utilities. Expression format is very similar to XPath.
20
+ *
21
+ * Expression details:
22
+ * - Of format A/B/C, which will evaluate getChildNode('A').getChildNode('B').
23
+ * getChildNodes('C')|getChildNodeValue('C')|getChildNode('C') depending on
24
+ * call
25
+ * - If expression ends with '/name()', will get the name() of the node
26
+ * referenced by the preceding path.
27
+ * - If expression ends with '/count()', will get the count() of the nodes that
28
+ * match the expression referenced by the preceding path.
29
+ * - If expression ends with '?', the value is OK to evaluate to null. This is
30
+ * not enforced by the expression evaluation functions, instead it is
31
+ * provided as a flag for client code which may ignore depending on usage
32
+ * - If expression has [INDEX], will use getChildNodes().getByIndex(INDEX)
33
+ *
34
+ */
35
+
36
+
37
+
38
+ goog.provide('goog.ds.Expr');
39
+
40
+ goog.require('goog.ds.BasicNodeList');
41
+ goog.require('goog.ds.EmptyNodeList');
42
+ goog.require('goog.string');
43
+
44
+
45
+
46
+ /**
47
+ * Create a new expression. An expression uses a string expression language, and
48
+ * from this string and a passed in DataNode can evaluate to a value, DataNode,
49
+ * or a DataNodeList.
50
+ *
51
+ * @param {string=} opt_expr The string expression.
52
+ * @constructor
53
+ */
54
+ goog.ds.Expr = function(opt_expr) {
55
+ if (opt_expr) {
56
+ this.setSource_(opt_expr);
57
+ }
58
+ };
59
+
60
+
61
+ /**
62
+ * Set the source expression text & parse
63
+ *
64
+ * @param {string} expr The string expression source.
65
+ * @param {Array=} opt_parts Array of the parts of an expression.
66
+ * @param {goog.ds.Expr=} opt_childExpr Optional child of this expression,
67
+ * passed in as a hint for processing.
68
+ * @param {goog.ds.Expr=} opt_prevExpr Optional preceding expression
69
+ * (i.e. $A/B/C is previous expression to B/C) passed in as a hint for
70
+ * processing.
71
+ * @private
72
+ */
73
+ goog.ds.Expr.prototype.setSource_ = function(expr, opt_parts,
74
+ opt_childExpr, opt_prevExpr) {
75
+ this.src_ = expr;
76
+
77
+ if (!opt_childExpr && !opt_prevExpr) {
78
+ // Check whether it can be empty
79
+ if (goog.string.endsWith(expr, goog.ds.Expr.String_.CAN_BE_EMPTY)) {
80
+ this.canBeEmpty_ = true;
81
+ expr = expr.substring(0, expr.length - 1);
82
+ }
83
+
84
+ // Check whether this is an node function
85
+ if (goog.string.endsWith(expr, '()')) {
86
+ if (goog.string.endsWith(expr, goog.ds.Expr.String_.NAME_EXPR) ||
87
+ goog.string.endsWith(expr, goog.ds.Expr.String_.COUNT_EXPR) ||
88
+ goog.string.endsWith(expr, goog.ds.Expr.String_.POSITION_EXPR)) {
89
+ var lastPos = expr.lastIndexOf(goog.ds.Expr.String_.SEPARATOR);
90
+ if (lastPos != -1) {
91
+ this.exprFn_ = expr.substring(lastPos + 1);
92
+ expr = expr.substring(0, lastPos);
93
+ } else {
94
+ this.exprFn_ = expr;
95
+ expr = goog.ds.Expr.String_.CURRENT_NODE_EXPR;
96
+ }
97
+ if (this.exprFn_ == goog.ds.Expr.String_.COUNT_EXPR) {
98
+ this.isCount_ = true;
99
+ }
100
+ }
101
+ }
102
+ }
103
+
104
+ // Split into component parts
105
+ this.parts_ = opt_parts || expr.split('/');
106
+ this.size_ = this.parts_.length;
107
+ this.last_ = this.parts_[this.size_ - 1];
108
+ this.root_ = this.parts_[0];
109
+
110
+ if (this.size_ == 1) {
111
+ this.rootExpr_ = this;
112
+ this.isAbsolute_ = goog.string.startsWith(expr, '$');
113
+ } else {
114
+ this.rootExpr_ = goog.ds.Expr.createInternal_(this.root_, null,
115
+ this, null);
116
+ this.isAbsolute_ = this.rootExpr_.isAbsolute_;
117
+ this.root_ = this.rootExpr_.root_;
118
+ }
119
+
120
+ if (this.size_ == 1 && !this.isAbsolute_) {
121
+ // Check whether expression maps to current node, for convenience
122
+ this.isCurrent_ = (expr == goog.ds.Expr.String_.CURRENT_NODE_EXPR ||
123
+ expr == goog.ds.Expr.String_.EMPTY_EXPR);
124
+
125
+ // Whether this expression is just an attribute (i.e. '@foo')
126
+ this.isJustAttribute_ =
127
+ goog.string.startsWith(expr, goog.ds.Expr.String_.ATTRIBUTE_START);
128
+
129
+ // Check whether this is a common node expression
130
+ this.isAllChildNodes_ = expr == goog.ds.Expr.String_.ALL_CHILD_NODES_EXPR;
131
+ this.isAllAttributes_ = expr == goog.ds.Expr.String_.ALL_ATTRIBUTES_EXPR;
132
+ this.isAllElements_ = expr == goog.ds.Expr.String_.ALL_ELEMENTS_EXPR;
133
+ }
134
+ };
135
+
136
+
137
+ /**
138
+ * Get the source data path for the expression
139
+ * @return {string} The path.
140
+ */
141
+ goog.ds.Expr.prototype.getSource = function() {
142
+ return this.src_;
143
+ };
144
+
145
+
146
+ /**
147
+ * Gets the last part of the expression.
148
+ * @return {?string} Last part of the expression.
149
+ */
150
+ goog.ds.Expr.prototype.getLast = function() {
151
+ return this.last_;
152
+ };
153
+
154
+
155
+ /**
156
+ * Gets the parent expression of this expression, or null if this is top level
157
+ * @return {goog.ds.Expr} The parent.
158
+ */
159
+ goog.ds.Expr.prototype.getParent = function() {
160
+ if (!this.parentExprSet_) {
161
+ if (this.size_ > 1) {
162
+ this.parentExpr_ = goog.ds.Expr.createInternal_(null,
163
+ this.parts_.slice(0, this.parts_.length - 1), this, null);
164
+ }
165
+ this.parentExprSet_ = true;
166
+ }
167
+ return this.parentExpr_;
168
+ };
169
+
170
+
171
+ /**
172
+ * Gets the parent expression of this expression, or null if this is top level
173
+ * @return {goog.ds.Expr} The parent.
174
+ */
175
+ goog.ds.Expr.prototype.getNext = function() {
176
+ if (!this.nextExprSet_) {
177
+ if (this.size_ > 1) {
178
+ this.nextExpr_ = goog.ds.Expr.createInternal_(null, this.parts_.slice(1),
179
+ null, this);
180
+ }
181
+ this.nextExprSet_ = true;
182
+ }
183
+ return this.nextExpr_;
184
+ };
185
+
186
+
187
+ /**
188
+ * Evaluate an expression on a data node, and return a value
189
+ * Recursively walks through child nodes to evaluate
190
+ * TODO(user) Support other expression functions
191
+ *
192
+ * @param {goog.ds.DataNode=} opt_ds Optional datasource to evaluate against.
193
+ * If not provided, evaluates against DataManager global root.
194
+ * @return {*} Value of the node, or null if doesn't exist.
195
+ */
196
+ goog.ds.Expr.prototype.getValue = function(opt_ds) {
197
+ if (opt_ds == null) {
198
+ opt_ds = goog.ds.DataManager.getInstance();
199
+ } else if (this.isAbsolute_) {
200
+ opt_ds = opt_ds.getDataRoot ? opt_ds.getDataRoot() :
201
+ goog.ds.DataManager.getInstance();
202
+ }
203
+
204
+ if (this.isCount_) {
205
+ var nodes = this.getNodes(opt_ds);
206
+ return nodes.getCount();
207
+ }
208
+
209
+ if (this.size_ == 1) {
210
+ return opt_ds.getChildNodeValue(this.root_);
211
+ } else if (this.size_ == 0) {
212
+ return opt_ds.get();
213
+ }
214
+
215
+ var nextDs = opt_ds.getChildNode(this.root_);
216
+
217
+ if (nextDs == null) {
218
+ return null;
219
+ } else {
220
+ return this.getNext().getValue(nextDs);
221
+ }
222
+ };
223
+
224
+
225
+ /**
226
+ * Evaluate an expression on a data node, and return matching nodes
227
+ * Recursively walks through child nodes to evaluate
228
+ *
229
+ * @param {goog.ds.DataNode=} opt_ds Optional datasource to evaluate against.
230
+ * If not provided, evaluates against data root.
231
+ * @param {boolean=} opt_canCreate If true, will try to create new nodes.
232
+ * @return {goog.ds.DataNodeList} Matching nodes.
233
+ */
234
+ goog.ds.Expr.prototype.getNodes = function(opt_ds, opt_canCreate) {
235
+ return /** @type {goog.ds.DataNodeList} */(this.getNodes_(opt_ds,
236
+ false, opt_canCreate));
237
+ };
238
+
239
+
240
+ /**
241
+ * Evaluate an expression on a data node, and return the first matching node
242
+ * Recursively walks through child nodes to evaluate
243
+ *
244
+ * @param {goog.ds.DataNode=} opt_ds Optional datasource to evaluate against.
245
+ * If not provided, evaluates against DataManager global root.
246
+ * @param {boolean=} opt_canCreate If true, will try to create new nodes.
247
+ * @return {goog.ds.DataNode} Matching nodes, or null if doesn't exist.
248
+ */
249
+ goog.ds.Expr.prototype.getNode = function(opt_ds, opt_canCreate) {
250
+ return /** @type {goog.ds.DataNode} */(this.getNodes_(opt_ds,
251
+ true, opt_canCreate));
252
+ };
253
+
254
+
255
+ /**
256
+ * Evaluate an expression on a data node, and return the first matching node
257
+ * Recursively walks through child nodes to evaluate
258
+ *
259
+ * @param {goog.ds.DataNode=} opt_ds Optional datasource to evaluate against.
260
+ * If not provided, evaluates against DataManager global root.
261
+ * @param {boolean=} opt_selectOne Whether to return single matching DataNode
262
+ * or matching nodes in DataNodeList.
263
+ * @param {boolean=} opt_canCreate If true, will try to create new nodes.
264
+ * @return {goog.ds.DataNode|goog.ds.DataNodeList} Matching node or nodes,
265
+ * depending on value of opt_selectOne.
266
+ * @private
267
+ */
268
+ goog.ds.Expr.prototype.getNodes_ = function(opt_ds, opt_selectOne,
269
+ opt_canCreate) {
270
+ if (opt_ds == null) {
271
+ opt_ds = goog.ds.DataManager.getInstance();
272
+ } else if (this.isAbsolute_) {
273
+ opt_ds = opt_ds.getDataRoot ? opt_ds.getDataRoot() :
274
+ goog.ds.DataManager.getInstance();
275
+ }
276
+
277
+ if (this.size_ == 0 && opt_selectOne) {
278
+ return opt_ds;
279
+ } else if (this.size_ == 0 && !opt_selectOne) {
280
+ return new goog.ds.BasicNodeList([opt_ds]);
281
+ } else if (this.size_ == 1) {
282
+ if (opt_selectOne) {
283
+ return opt_ds.getChildNode(this.root_, opt_canCreate);
284
+ }
285
+ else {
286
+ var possibleListChild = opt_ds.getChildNode(this.root_);
287
+ if (possibleListChild && possibleListChild.isList()) {
288
+ return possibleListChild.getChildNodes();
289
+ } else {
290
+ return opt_ds.getChildNodes(this.root_);
291
+ }
292
+ }
293
+ } else {
294
+ var nextDs = opt_ds.getChildNode(this.root_, opt_canCreate);
295
+ if (nextDs == null && opt_selectOne) {
296
+ return null;
297
+ } else if (nextDs == null && !opt_selectOne) {
298
+ return new goog.ds.EmptyNodeList();
299
+ }
300
+ return this.getNext().getNodes_(nextDs, opt_selectOne, opt_canCreate);
301
+ }
302
+ };
303
+
304
+
305
+ /**
306
+ * Whether the expression can be null.
307
+ *
308
+ * @type {boolean}
309
+ * @private
310
+ */
311
+ goog.ds.Expr.prototype.canBeEmpty_ = false;
312
+
313
+
314
+ /**
315
+ * The parsed paths in the expression
316
+ *
317
+ * @type {Array.<string>}
318
+ * @private
319
+ */
320
+ goog.ds.Expr.prototype.parts_ = [];
321
+
322
+
323
+ /**
324
+ * Number of paths in the expression
325
+ *
326
+ * @type {?number}
327
+ * @private
328
+ */
329
+ goog.ds.Expr.prototype.size_ = null;
330
+
331
+
332
+ /**
333
+ * The root node path in the expression
334
+ *
335
+ * @type {string}
336
+ * @private
337
+ */
338
+ goog.ds.Expr.prototype.root_;
339
+
340
+
341
+ /**
342
+ * The last path in the expression
343
+ *
344
+ * @type {?string}
345
+ * @private
346
+ */
347
+ goog.ds.Expr.prototype.last_ = null;
348
+
349
+
350
+ /**
351
+ * Whether the expression evaluates to current node
352
+ *
353
+ * @type {boolean}
354
+ * @private
355
+ */
356
+ goog.ds.Expr.prototype.isCurrent_ = false;
357
+
358
+
359
+ /**
360
+ * Whether the expression is just an attribute
361
+ *
362
+ * @type {boolean}
363
+ * @private
364
+ */
365
+ goog.ds.Expr.prototype.isJustAttribute_ = false;
366
+
367
+
368
+ /**
369
+ * Does this expression select all DOM-style child nodes (element and text)
370
+ *
371
+ * @type {boolean}
372
+ * @private
373
+ */
374
+ goog.ds.Expr.prototype.isAllChildNodes_ = false;
375
+
376
+
377
+ /**
378
+ * Does this expression select all DOM-style attribute nodes (starts with '@')
379
+ *
380
+ * @type {boolean}
381
+ * @private
382
+ */
383
+ goog.ds.Expr.prototype.isAllAttributes_ = false;
384
+
385
+
386
+ /**
387
+ * Does this expression select all DOM-style element child nodes
388
+ *
389
+ * @type {boolean}
390
+ * @private
391
+ */
392
+ goog.ds.Expr.prototype.isAllElements_ = false;
393
+
394
+
395
+ /**
396
+ * The function used by this expression
397
+ *
398
+ * @type {?string}
399
+ * @private
400
+ */
401
+ goog.ds.Expr.prototype.exprFn_ = null;
402
+
403
+
404
+ /**
405
+ * Cached value for the parent expression.
406
+ * @type {goog.ds.Expr?}
407
+ * @private
408
+ */
409
+ goog.ds.Expr.prototype.parentExpr_ = null;
410
+
411
+
412
+ /**
413
+ * Cached value for the next expression.
414
+ * @type {goog.ds.Expr?}
415
+ * @private
416
+ */
417
+ goog.ds.Expr.prototype.nextExpr_ = null;
418
+
419
+
420
+ /**
421
+ * Create an expression from a string, can use cached values
422
+ *
423
+ * @param {string} expr The expression string.
424
+ * @return {goog.ds.Expr} The expression object.
425
+ */
426
+ goog.ds.Expr.create = function(expr) {
427
+ var result = goog.ds.Expr.cache_[expr];
428
+
429
+ if (result == null) {
430
+ result = new goog.ds.Expr(expr);
431
+ goog.ds.Expr.cache_[expr] = result;
432
+ }
433
+ return result;
434
+ };
435
+
436
+
437
+ /**
438
+ * Create an expression from a string, can use cached values
439
+ * Uses hints from related expressions to help in creation
440
+ *
441
+ * @param {?string=} opt_expr The string expression source.
442
+ * @param {Array=} opt_parts Array of the parts of an expression.
443
+ * @param {goog.ds.Expr=} opt_childExpr Optional child of this expression,
444
+ * passed in as a hint for processing.
445
+ * @param {goog.ds.Expr=} opt_prevExpr Optional preceding expression
446
+ * (i.e. $A/B/C is previous expression to B/C) passed in as a hint for
447
+ * processing.
448
+ * @return {goog.ds.Expr} The expression object.
449
+ * @private
450
+ */
451
+ goog.ds.Expr.createInternal_ = function(opt_expr, opt_parts, opt_childExpr,
452
+ opt_prevExpr) {
453
+ var expr = opt_expr || opt_parts.join('/');
454
+ var result = goog.ds.Expr.cache_[expr];
455
+
456
+ if (result == null) {
457
+ result = new goog.ds.Expr();
458
+ result.setSource_(expr, opt_parts, opt_childExpr, opt_prevExpr);
459
+ goog.ds.Expr.cache_[expr] = result;
460
+ }
461
+ return result;
462
+ };
463
+
464
+
465
+ /**
466
+ * Cache of pre-parsed expressions
467
+ * @private
468
+ */
469
+ goog.ds.Expr.cache_ = {};
470
+
471
+
472
+ /**
473
+ * Commonly used strings in expressions.
474
+ * @enum {string}
475
+ * @private
476
+ */
477
+ goog.ds.Expr.String_ = {
478
+ SEPARATOR: '/',
479
+ CURRENT_NODE_EXPR: '.',
480
+ EMPTY_EXPR: '',
481
+ ATTRIBUTE_START: '@',
482
+ ALL_CHILD_NODES_EXPR: '*|text()',
483
+ ALL_ATTRIBUTES_EXPR: '@*',
484
+ ALL_ELEMENTS_EXPR: '*',
485
+ NAME_EXPR: 'name()',
486
+ COUNT_EXPR: 'count()',
487
+ POSITION_EXPR: 'position()',
488
+ INDEX_START: '[',
489
+ INDEX_END: ']',
490
+ CAN_BE_EMPTY: '?'
491
+ };
492
+
493
+
494
+ /**
495
+ * Standard expressions
496
+ */
497
+
498
+
499
+ /**
500
+ * The current node
501
+ */
502
+ goog.ds.Expr.CURRENT = goog.ds.Expr.create(
503
+ goog.ds.Expr.String_.CURRENT_NODE_EXPR);
504
+
505
+
506
+ /**
507
+ * For DOM interop - all DOM child nodes (text + element).
508
+ * Text nodes have dataName #text
509
+ */
510
+ goog.ds.Expr.ALL_CHILD_NODES =
511
+ goog.ds.Expr.create(goog.ds.Expr.String_.ALL_CHILD_NODES_EXPR);
512
+
513
+
514
+ /**
515
+ * For DOM interop - all DOM element child nodes
516
+ */
517
+ goog.ds.Expr.ALL_ELEMENTS =
518
+ goog.ds.Expr.create(goog.ds.Expr.String_.ALL_ELEMENTS_EXPR);
519
+
520
+
521
+ /**
522
+ * For DOM interop - all DOM attribute nodes
523
+ * Attribute nodes have dataName starting with "@"
524
+ */
525
+ goog.ds.Expr.ALL_ATTRIBUTES =
526
+ goog.ds.Expr.create(goog.ds.Expr.String_.ALL_ATTRIBUTES_EXPR);
527
+
528
+
529
+ /**
530
+ * Get the dataName of a node
531
+ */
532
+ goog.ds.Expr.NAME = goog.ds.Expr.create(goog.ds.Expr.String_.NAME_EXPR);
533
+
534
+
535
+ /**
536
+ * Get the count of nodes matching an expression
537
+ */
538
+ goog.ds.Expr.COUNT = goog.ds.Expr.create(goog.ds.Expr.String_.COUNT_EXPR);
539
+
540
+
541
+ /**
542
+ * Get the position of the "current" node in the current node list
543
+ * This will only apply for datasources that support the concept of a current
544
+ * node (none exist yet). This is similar to XPath position() and concept of
545
+ * current node
546
+ */
547
+ goog.ds.Expr.POSITION = goog.ds.Expr.create(goog.ds.Expr.String_.POSITION_EXPR);
548
+ ;
549
+ FI"
550
+ F"%410740c14d526abdc51bc9b8f42ff524