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,289 @@
1
+ o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1325441615.511877: @value{ I" length:EFi�I" digest;
2
+ F"%3ffeaa2b07af2f922d3c0853706bea72I" source;
3
+ FI"�// 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 A timer class to which other classes and objects can
19
+ * listen on. This is only an abstraction above setInterval.
20
+ *
21
+ * @see ../demos/timers.html
22
+ */
23
+
24
+
25
+ goog.provide('goog.Timer');
26
+
27
+ goog.require('goog.events.EventTarget');
28
+
29
+
30
+
31
+ /**
32
+ * Class for handling timing events.
33
+ *
34
+ * @param {number=} opt_interval Number of ms between ticks (Default: 1ms).
35
+ * @param {Object=} opt_timerObject An object that has setTimeout, setInterval,
36
+ * clearTimeout and clearInterval (eg Window).
37
+ * @constructor
38
+ * @extends {goog.events.EventTarget}
39
+ */
40
+ goog.Timer = function(opt_interval, opt_timerObject) {
41
+ goog.events.EventTarget.call(this);
42
+
43
+ /**
44
+ * Number of ms between ticks
45
+ * @type {number}
46
+ * @private
47
+ */
48
+ this.interval_ = opt_interval || 1;
49
+
50
+ /**
51
+ * An object that implements setTimout, setInterval, clearTimeout and
52
+ * clearInterval. We default to the window object. Changing this on
53
+ * goog.Timer.prototype changes the object for all timer instances which can
54
+ * be useful if your environment has some other implementation of timers than
55
+ * the window object.
56
+ * @type {Object}
57
+ * @private
58
+ */
59
+ this.timerObject_ = opt_timerObject || goog.Timer.defaultTimerObject;
60
+
61
+ /**
62
+ * Cached tick_ bound to the object for later use in the timer.
63
+ * @type {Function}
64
+ * @private
65
+ */
66
+ this.boundTick_ = goog.bind(this.tick_, this);
67
+
68
+ /**
69
+ * Firefox browser often fires the timer event sooner
70
+ * (sometimes MUCH sooner) than the requested timeout. So we
71
+ * compare the time to when the event was last fired, and
72
+ * reschedule if appropriate. See also goog.Timer.intervalScale
73
+ * @type {number}
74
+ * @private
75
+ */
76
+ this.last_ = goog.now();
77
+ };
78
+ goog.inherits(goog.Timer, goog.events.EventTarget);
79
+
80
+
81
+ /**
82
+ * Maximum timeout value.
83
+ *
84
+ * Timeout values too big to fit into a signed 32-bit integer may cause
85
+ * overflow in FF, Safari, and Chrome, resulting in the timeout being
86
+ * scheduled immediately. It makes more sense simply not to schedule these
87
+ * timeouts, since 24.8 days is beyond a reasonable expectation for the
88
+ * browser to stay open.
89
+ *
90
+ * @type {number}
91
+ * @private
92
+ */
93
+ goog.Timer.MAX_TIMEOUT_ = 2147483647;
94
+
95
+
96
+ /**
97
+ * Whether this timer is enabled
98
+ * @type {boolean}
99
+ */
100
+ goog.Timer.prototype.enabled = false;
101
+
102
+
103
+ /**
104
+ * An object that implements setTimout, setInterval, clearTimeout and
105
+ * clearInterval. We default to the window object. Changing this on
106
+ * goog.Timer.prototype changes the object for all timer instances which can be
107
+ * useful if your environment has some other implementation of timers than the
108
+ * window object.
109
+ * @type {Object}
110
+ */
111
+ goog.Timer.defaultTimerObject = goog.global['window'];
112
+
113
+
114
+ /**
115
+ * A variable that controls the timer error correction. If the
116
+ * timer is called before the requested interval times
117
+ * intervalScale, which often happens on mozilla, the timer is
118
+ * rescheduled. See also this.last_
119
+ * @type {number}
120
+ */
121
+ goog.Timer.intervalScale = 0.8;
122
+
123
+
124
+ /**
125
+ * Variable for storing the result of setInterval
126
+ * @type {?number}
127
+ * @private
128
+ */
129
+ goog.Timer.prototype.timer_ = null;
130
+
131
+
132
+ /**
133
+ * Gets the interval of the timer.
134
+ * @return {number} interval Number of ms between ticks.
135
+ */
136
+ goog.Timer.prototype.getInterval = function() {
137
+ return this.interval_;
138
+ };
139
+
140
+
141
+ /**
142
+ * Sets the interval of the timer.
143
+ * @param {number} interval Number of ms between ticks.
144
+ */
145
+ goog.Timer.prototype.setInterval = function(interval) {
146
+ this.interval_ = interval;
147
+ if (this.timer_ && this.enabled) {
148
+ // Stop and then start the timer to reset the interval.
149
+ this.stop();
150
+ this.start();
151
+ } else if (this.timer_) {
152
+ this.stop();
153
+ }
154
+ };
155
+
156
+
157
+ /**
158
+ * Callback for the setTimeout used by the timer
159
+ * @private
160
+ */
161
+ goog.Timer.prototype.tick_ = function() {
162
+ if (this.enabled) {
163
+ var elapsed = goog.now() - this.last_;
164
+ if (elapsed > 0 &&
165
+ elapsed < this.interval_ * goog.Timer.intervalScale) {
166
+ this.timer_ = this.timerObject_.setTimeout(this.boundTick_,
167
+ this.interval_ - elapsed);
168
+ return;
169
+ }
170
+
171
+ this.dispatchTick();
172
+ // The timer could be stopped in the timer event handler.
173
+ if (this.enabled) {
174
+ this.timer_ = this.timerObject_.setTimeout(this.boundTick_,
175
+ this.interval_);
176
+ this.last_ = goog.now();
177
+ }
178
+ }
179
+ };
180
+
181
+
182
+ /**
183
+ * Dispatches the TICK event. This is its own method so subclasses can override.
184
+ */
185
+ goog.Timer.prototype.dispatchTick = function() {
186
+ this.dispatchEvent(goog.Timer.TICK);
187
+ };
188
+
189
+
190
+ /**
191
+ * Starts the timer.
192
+ */
193
+ goog.Timer.prototype.start = function() {
194
+ this.enabled = true;
195
+
196
+ // If there is no interval already registered, start it now
197
+ if (!this.timer_) {
198
+ // IMPORTANT!
199
+ // window.setInterval in FireFox has a bug - it fires based on
200
+ // absolute time, rather than on relative time. What this means
201
+ // is that if a computer is sleeping/hibernating for 24 hours
202
+ // and the timer interval was configured to fire every 1000ms,
203
+ // then after the PC wakes up the timer will fire, in rapid
204
+ // succession, 3600*24 times.
205
+ // This bug is described here and is already fixed, but it will
206
+ // take time to propagate, so for now I am switching this over
207
+ // to setTimeout logic.
208
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=376643
209
+ //
210
+ this.timer_ = this.timerObject_.setTimeout(this.boundTick_,
211
+ this.interval_);
212
+ this.last_ = goog.now();
213
+ }
214
+ };
215
+
216
+
217
+ /**
218
+ * Stops the timer.
219
+ */
220
+ goog.Timer.prototype.stop = function() {
221
+ this.enabled = false;
222
+ if (this.timer_) {
223
+ this.timerObject_.clearTimeout(this.timer_);
224
+ this.timer_ = null;
225
+ }
226
+ };
227
+
228
+
229
+ /** @override */
230
+ goog.Timer.prototype.disposeInternal = function() {
231
+ goog.Timer.superClass_.disposeInternal.call(this);
232
+ this.stop();
233
+ delete this.timerObject_;
234
+ };
235
+
236
+
237
+ /**
238
+ * Constant for the timer's event type
239
+ * @type {string}
240
+ */
241
+ goog.Timer.TICK = 'tick';
242
+
243
+
244
+ /**
245
+ * Calls the given function once, after the optional pause.
246
+ *
247
+ * The function is always called asynchronously, even if the delay is 0. This
248
+ * is a common trick to schedule a function to run after a batch of browser
249
+ * event processing.
250
+ *
251
+ * @param {Function} listener Function or object that has a handleEvent method.
252
+ * @param {number=} opt_delay Milliseconds to wait; default is 0.
253
+ * @param {Object=} opt_handler Object in whose scope to call the listener.
254
+ * @return {number} A handle to the timer ID.
255
+ */
256
+ goog.Timer.callOnce = function(listener, opt_delay, opt_handler) {
257
+ if (goog.isFunction(listener)) {
258
+ if (opt_handler) {
259
+ listener = goog.bind(listener, opt_handler);
260
+ }
261
+ } else if (listener && typeof listener.handleEvent == 'function') {
262
+ // using typeof to prevent strict js warning
263
+ listener = goog.bind(listener.handleEvent, listener);
264
+ } else {
265
+ throw Error('Invalid listener argument');
266
+ }
267
+
268
+ if (opt_delay > goog.Timer.MAX_TIMEOUT_) {
269
+ // Timeouts greater than MAX_INT return immediately due to integer
270
+ // overflow in many browsers. Since MAX_INT is 24.8 days, just don't
271
+ // schedule anything at all.
272
+ return -1;
273
+ } else {
274
+ return goog.Timer.defaultTimerObject.setTimeout(
275
+ listener, opt_delay || 0);
276
+ }
277
+ };
278
+
279
+
280
+ /**
281
+ * Clears a timeout initiated by callOnce
282
+ * @param {?number} timerId a timer ID.
283
+ */
284
+ goog.Timer.clear = function(timerId) {
285
+ goog.Timer.defaultTimerObject.clearTimeout(timerId);
286
+ };
287
+ ;
288
+ FI"
289
+ F"%0cb154728da0c1a71b298b7b43f7ffbc
@@ -0,0 +1,471 @@
1
+ o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1325441613.665856: @value{I"
2
+ class:EFI"BundledAsset;
3
+ FI"id;
4
+ F"%d9b401a21ee54cec0d591d4be0556305I"logical_path;
5
+ FI" closure/goog/structs/map.js;
6
+ TI"
7
+ F"m/Volumes/Development/dev-web/yellow-brick-road/vendor/assets/closure-library/closure/goog/structs/map.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""0// 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 Datastructure: Hash Map.
29
+ *
30
+ * @author arv@google.com (Erik Arvidsson)
31
+ * @author jonp@google.com (Jon Perlow) Optimized for IE6
32
+ *
33
+ * This file contains an implementation of a Map structure. It implements a lot
34
+ * of the methods used in goog.structs so those functions work on hashes. For
35
+ * convenience with common usage the methods accept any type for the key, though
36
+ * internally they will be cast to strings.
37
+ */
38
+
39
+
40
+
41
+ goog.provide('goog.structs.Map');
42
+
43
+ goog.require('goog.iter.Iterator');
44
+ goog.require('goog.iter.StopIteration');
45
+ goog.require('goog.object');
46
+ goog.require('goog.structs');
47
+
48
+
49
+
50
+ /**
51
+ * Class for Hash Map datastructure.
52
+ * @param {*=} opt_map Map or Object to initialize the map with.
53
+ * @param {...*} var_args If 2 or more arguments are present then they
54
+ * will be used as key-value pairs.
55
+ * @constructor
56
+ */
57
+ goog.structs.Map = function(opt_map, var_args) {
58
+
59
+ /**
60
+ * Underlying JS object used to implement the map.
61
+ * @type {!Object}
62
+ * @private
63
+ */
64
+ this.map_ = {};
65
+
66
+ /**
67
+ * An array of keys. This is necessary for two reasons:
68
+ * 1. Iterating the keys using for (var key in this.map_) allocates an
69
+ * object for every key in IE which is really bad for IE6 GC perf.
70
+ * 2. Without a side data structure, we would need to escape all the keys
71
+ * as that would be the only way we could tell during iteration if the
72
+ * key was an internal key or a property of the object.
73
+ *
74
+ * This array can contain deleted keys so it's necessary to check the map
75
+ * as well to see if the key is still in the map (this doesn't require a
76
+ * memory allocation in IE).
77
+ * @type {!Array.<string>}
78
+ * @private
79
+ */
80
+ this.keys_ = [];
81
+
82
+ var argLength = arguments.length;
83
+
84
+ if (argLength > 1) {
85
+ if (argLength % 2) {
86
+ throw Error('Uneven number of arguments');
87
+ }
88
+ for (var i = 0; i < argLength; i += 2) {
89
+ this.set(arguments[i], arguments[i + 1]);
90
+ }
91
+ } else if (opt_map) {
92
+ this.addAll(/** @type {Object} */ (opt_map));
93
+ }
94
+ };
95
+
96
+
97
+ /**
98
+ * The number of key value pairs in the map.
99
+ * @private
100
+ * @type {number}
101
+ */
102
+ goog.structs.Map.prototype.count_ = 0;
103
+
104
+
105
+ /**
106
+ * Version used to detect changes while iterating.
107
+ * @private
108
+ * @type {number}
109
+ */
110
+ goog.structs.Map.prototype.version_ = 0;
111
+
112
+
113
+ /**
114
+ * @return {number} The number of key-value pairs in the map.
115
+ */
116
+ goog.structs.Map.prototype.getCount = function() {
117
+ return this.count_;
118
+ };
119
+
120
+
121
+ /**
122
+ * Returns the values of the map.
123
+ * @return {!Array} The values in the map.
124
+ */
125
+ goog.structs.Map.prototype.getValues = function() {
126
+ this.cleanupKeysArray_();
127
+
128
+ var rv = [];
129
+ for (var i = 0; i < this.keys_.length; i++) {
130
+ var key = this.keys_[i];
131
+ rv.push(this.map_[key]);
132
+ }
133
+ return rv;
134
+ };
135
+
136
+
137
+ /**
138
+ * Returns the keys of the map.
139
+ * @return {!Array.<string>} Array of string values.
140
+ */
141
+ goog.structs.Map.prototype.getKeys = function() {
142
+ this.cleanupKeysArray_();
143
+ return /** @type {!Array.<string>} */ (this.keys_.concat());
144
+ };
145
+
146
+
147
+ /**
148
+ * Whether the map contains the given key.
149
+ * @param {*} key The key to check for.
150
+ * @return {boolean} Whether the map contains the key.
151
+ */
152
+ goog.structs.Map.prototype.containsKey = function(key) {
153
+ return goog.structs.Map.hasKey_(this.map_, key);
154
+ };
155
+
156
+
157
+ /**
158
+ * Whether the map contains the given value. This is O(n).
159
+ * @param {*} val The value to check for.
160
+ * @return {boolean} Whether the map contains the value.
161
+ */
162
+ goog.structs.Map.prototype.containsValue = function(val) {
163
+ for (var i = 0; i < this.keys_.length; i++) {
164
+ var key = this.keys_[i];
165
+ if (goog.structs.Map.hasKey_(this.map_, key) && this.map_[key] == val) {
166
+ return true;
167
+ }
168
+ }
169
+ return false;
170
+ };
171
+
172
+
173
+ /**
174
+ * Whether this map is equal to the argument map.
175
+ * @param {goog.structs.Map} otherMap The map against which to test equality.
176
+ * @param {function(*, *) : boolean=} opt_equalityFn Optional equality function
177
+ * to test equality of values. If not specified, this will test whether
178
+ * the values contained in each map are identical objects.
179
+ * @return {boolean} Whether the maps are equal.
180
+ */
181
+ goog.structs.Map.prototype.equals = function(otherMap, opt_equalityFn) {
182
+ if (this === otherMap) {
183
+ return true;
184
+ }
185
+
186
+ if (this.count_ != otherMap.getCount()) {
187
+ return false;
188
+ }
189
+
190
+ var equalityFn = opt_equalityFn || goog.structs.Map.defaultEquals;
191
+
192
+ this.cleanupKeysArray_();
193
+ for (var key, i = 0; key = this.keys_[i]; i++) {
194
+ if (!equalityFn(this.get(key), otherMap.get(key))) {
195
+ return false;
196
+ }
197
+ }
198
+
199
+ return true;
200
+ };
201
+
202
+
203
+ /**
204
+ * Default equality test for values.
205
+ * @param {*} a The first value.
206
+ * @param {*} b The second value.
207
+ * @return {boolean} Whether a and b reference the same object.
208
+ */
209
+ goog.structs.Map.defaultEquals = function(a, b) {
210
+ return a === b;
211
+ };
212
+
213
+
214
+ /**
215
+ * @return {boolean} Whether the map is empty.
216
+ */
217
+ goog.structs.Map.prototype.isEmpty = function() {
218
+ return this.count_ == 0;
219
+ };
220
+
221
+
222
+ /**
223
+ * Removes all key-value pairs from the map.
224
+ */
225
+ goog.structs.Map.prototype.clear = function() {
226
+ this.map_ = {};
227
+ this.keys_.length = 0;
228
+ this.count_ = 0;
229
+ this.version_ = 0;
230
+ };
231
+
232
+
233
+ /**
234
+ * Removes a key-value pair based on the key. This is O(logN) amortized due to
235
+ * updating the keys array whenever the count becomes half the size of the keys
236
+ * in the keys array.
237
+ * @param {*} key The key to remove.
238
+ * @return {boolean} Whether object was removed.
239
+ */
240
+ goog.structs.Map.prototype.remove = function(key) {
241
+ if (goog.structs.Map.hasKey_(this.map_, key)) {
242
+ delete this.map_[key];
243
+ this.count_--;
244
+ this.version_++;
245
+
246
+ // clean up the keys array if the threshhold is hit
247
+ if (this.keys_.length > 2 * this.count_) {
248
+ this.cleanupKeysArray_();
249
+ }
250
+
251
+ return true;
252
+ }
253
+ return false;
254
+ };
255
+
256
+
257
+ /**
258
+ * Cleans up the temp keys array by removing entries that are no longer in the
259
+ * map.
260
+ * @private
261
+ */
262
+ goog.structs.Map.prototype.cleanupKeysArray_ = function() {
263
+ if (this.count_ != this.keys_.length) {
264
+ // First remove keys that are no longer in the map.
265
+ var srcIndex = 0;
266
+ var destIndex = 0;
267
+ while (srcIndex < this.keys_.length) {
268
+ var key = this.keys_[srcIndex];
269
+ if (goog.structs.Map.hasKey_(this.map_, key)) {
270
+ this.keys_[destIndex++] = key;
271
+ }
272
+ srcIndex++;
273
+ }
274
+ this.keys_.length = destIndex;
275
+ }
276
+
277
+ if (this.count_ != this.keys_.length) {
278
+ // If the count still isn't correct, that means we have duplicates. This can
279
+ // happen when the same key is added and removed multiple times. Now we have
280
+ // to allocate one extra Object to remove the duplicates. This could have
281
+ // been done in the first pass, but in the common case, we can avoid
282
+ // allocating an extra object by only doing this when necessary.
283
+ var seen = {};
284
+ var srcIndex = 0;
285
+ var destIndex = 0;
286
+ while (srcIndex < this.keys_.length) {
287
+ var key = this.keys_[srcIndex];
288
+ if (!(goog.structs.Map.hasKey_(seen, key))) {
289
+ this.keys_[destIndex++] = key;
290
+ seen[key] = 1;
291
+ }
292
+ srcIndex++;
293
+ }
294
+ this.keys_.length = destIndex;
295
+ }
296
+ };
297
+
298
+
299
+ /**
300
+ * Returns the value for the given key. If the key is not found and the default
301
+ * value is not given this will return {@code undefined}.
302
+ * @param {*} key The key to get the value for.
303
+ * @param {*=} opt_val The value to return if no item is found for the given
304
+ * key, defaults to undefined.
305
+ * @return {*} The value for the given key.
306
+ */
307
+ goog.structs.Map.prototype.get = function(key, opt_val) {
308
+ if (goog.structs.Map.hasKey_(this.map_, key)) {
309
+ return this.map_[key];
310
+ }
311
+ return opt_val;
312
+ };
313
+
314
+
315
+ /**
316
+ * Adds a key-value pair to the map.
317
+ * @param {*} key The key.
318
+ * @param {*} value The value to add.
319
+ */
320
+ goog.structs.Map.prototype.set = function(key, value) {
321
+ if (!(goog.structs.Map.hasKey_(this.map_, key))) {
322
+ this.count_++;
323
+ this.keys_.push(key);
324
+ // Only change the version if we add a new key.
325
+ this.version_++;
326
+ }
327
+ this.map_[key] = value;
328
+ };
329
+
330
+
331
+ /**
332
+ * Adds multiple key-value pairs from another goog.structs.Map or Object.
333
+ * @param {Object} map Object containing the data to add.
334
+ */
335
+ goog.structs.Map.prototype.addAll = function(map) {
336
+ var keys, values;
337
+ if (map instanceof goog.structs.Map) {
338
+ keys = map.getKeys();
339
+ values = map.getValues();
340
+ } else {
341
+ keys = goog.object.getKeys(map);
342
+ values = goog.object.getValues(map);
343
+ }
344
+ // we could use goog.array.forEach here but I don't want to introduce that
345
+ // dependency just for this.
346
+ for (var i = 0; i < keys.length; i++) {
347
+ this.set(keys[i], values[i]);
348
+ }
349
+ };
350
+
351
+
352
+ /**
353
+ * Clones a map and returns a new map.
354
+ * @return {!goog.structs.Map} A new map with the same key-value pairs.
355
+ */
356
+ goog.structs.Map.prototype.clone = function() {
357
+ return new goog.structs.Map(this);
358
+ };
359
+
360
+
361
+ /**
362
+ * Returns a new map in which all the keys and values are interchanged
363
+ * (keys become values and values become keys). If multiple keys map to the
364
+ * same value, the chosen transposed value is implementation-dependent.
365
+ *
366
+ * It acts very similarly to {goog.object.transpose(Object)}.
367
+ *
368
+ * @return {!goog.structs.Map} The transposed map.
369
+ */
370
+ goog.structs.Map.prototype.transpose = function() {
371
+ var transposed = new goog.structs.Map();
372
+ for (var i = 0; i < this.keys_.length; i++) {
373
+ var key = this.keys_[i];
374
+ var value = this.map_[key];
375
+ transposed.set(value, key);
376
+ }
377
+
378
+ return transposed;
379
+ };
380
+
381
+
382
+ /**
383
+ * @return {!Object} Object representation of the map.
384
+ */
385
+ goog.structs.Map.prototype.toObject = function() {
386
+ this.cleanupKeysArray_();
387
+ var obj = {};
388
+ for (var i = 0; i < this.keys_.length; i++) {
389
+ var key = this.keys_[i];
390
+ obj[key] = this.map_[key];
391
+ }
392
+ return obj;
393
+ };
394
+
395
+
396
+ /**
397
+ * Returns an iterator that iterates over the keys in the map. Removal of keys
398
+ * while iterating might have undesired side effects.
399
+ * @return {!goog.iter.Iterator} An iterator over the keys in the map.
400
+ */
401
+ goog.structs.Map.prototype.getKeyIterator = function() {
402
+ return this.__iterator__(true);
403
+ };
404
+
405
+
406
+ /**
407
+ * Returns an iterator that iterates over the values in the map. Removal of
408
+ * keys while iterating might have undesired side effects.
409
+ * @return {!goog.iter.Iterator} An iterator over the values in the map.
410
+ */
411
+ goog.structs.Map.prototype.getValueIterator = function() {
412
+ return this.__iterator__(false);
413
+ };
414
+
415
+
416
+ /**
417
+ * Returns an iterator that iterates over the values or the keys in the map.
418
+ * This throws an exception if the map was mutated since the iterator was
419
+ * created.
420
+ * @param {boolean=} opt_keys True to iterate over the keys. False to iterate
421
+ * over the values. The default value is false.
422
+ * @return {!goog.iter.Iterator} An iterator over the values or keys in the map.
423
+ */
424
+ goog.structs.Map.prototype.__iterator__ = function(opt_keys) {
425
+ // Clean up keys to minimize the risk of iterating over dead keys.
426
+ this.cleanupKeysArray_();
427
+
428
+ var i = 0;
429
+ var keys = this.keys_;
430
+ var map = this.map_;
431
+ var version = this.version_;
432
+ var selfObj = this;
433
+
434
+ var newIter = new goog.iter.Iterator;
435
+ newIter.next = function() {
436
+ while (true) {
437
+ if (version != selfObj.version_) {
438
+ throw Error('The map has changed since the iterator was created');
439
+ }
440
+ if (i >= keys.length) {
441
+ throw goog.iter.StopIteration;
442
+ }
443
+ var key = keys[i++];
444
+ return opt_keys ? key : map[key];
445
+ }
446
+ };
447
+ return newIter;
448
+ };
449
+
450
+
451
+ /**
452
+ * Safe way to test for hasOwnProperty. It even allows testing for
453
+ * 'hasOwnProperty'.
454
+ * @param {Object} obj The object to test for presence of the given key.
455
+ * @param {*} key The key to check for.
456
+ * @return {boolean} Whether the object has the key.
457
+ * @private
458
+ */
459
+ goog.structs.Map.hasKey_ = function(obj, key) {
460
+ return Object.prototype.hasOwnProperty.call(obj, key);
461
+ };
462
+ ;
463
+ FI"asset_paths;
464
+ F["m/Volumes/Development/dev-web/yellow-brick-road/vendor/assets/closure-library/closure/goog/structs/map.jsI"dependency_paths;
465
+ F[{I" path;
466
+ F"m/Volumes/Development/dev-web/yellow-brick-road/vendor/assets/closure-library/closure/goog/structs/map.jsI"
467
+ mtime;
468
+ FIu: Time
469
+ T: offsetiI"hexdigest;
470
+ F"%869baa5b4d1cf84f1b563684b38a86efI"
471
+ F"%46dde6621c301f4928e3b34efee9e3b5