compass 0.13.alpha.0 → 0.13.alpha.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (367) hide show
  1. data/README.markdown +6 -4
  2. data/Rakefile +9 -0
  3. data/VERSION.yml +2 -2
  4. data/bin/compass +2 -1
  5. data/features/command_line.feature +5 -27
  6. data/features/step_definitions/command_line_steps.rb +3 -2
  7. data/frameworks/compass/stylesheets/compass/_css3.scss +3 -0
  8. data/frameworks/compass/stylesheets/compass/_support.scss +6 -0
  9. data/frameworks/compass/stylesheets/compass/css3/_animation.scss +77 -76
  10. data/frameworks/compass/stylesheets/compass/css3/_appearance.scss +15 -9
  11. data/frameworks/compass/stylesheets/compass/css3/_background-clip.scss +35 -36
  12. data/frameworks/compass/stylesheets/compass/css3/_background-origin.scss +36 -34
  13. data/frameworks/compass/stylesheets/compass/css3/_background-size.scss +15 -15
  14. data/frameworks/compass/stylesheets/compass/css3/_border-radius.scss +30 -48
  15. data/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss +22 -27
  16. data/frameworks/compass/stylesheets/compass/css3/_box-sizing.scss +13 -8
  17. data/frameworks/compass/stylesheets/compass/css3/_box.scss +60 -82
  18. data/frameworks/compass/stylesheets/compass/css3/_columns.scss +145 -25
  19. data/frameworks/compass/stylesheets/compass/css3/_filter.scss +44 -0
  20. data/frameworks/compass/stylesheets/compass/css3/_hyphenation.scss +77 -0
  21. data/frameworks/compass/stylesheets/compass/css3/_images.scss +2 -2
  22. data/frameworks/compass/stylesheets/compass/css3/_inline-block.scss +14 -8
  23. data/frameworks/compass/stylesheets/compass/css3/_selection.scss +31 -0
  24. data/frameworks/compass/stylesheets/compass/css3/_shared.scss +207 -21
  25. data/frameworks/compass/stylesheets/compass/css3/_text-shadow.scss +52 -13
  26. data/frameworks/compass/stylesheets/compass/css3/_transform.scss +14 -14
  27. data/frameworks/compass/stylesheets/compass/css3/_transition.scss +127 -60
  28. data/frameworks/compass/stylesheets/compass/css3/_user-interface.scss +35 -15
  29. data/frameworks/compass/stylesheets/compass/typography/_units.scss +152 -0
  30. data/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +174 -98
  31. data/frameworks/compass/stylesheets/compass/typography/lists/_horizontal-list.scss +5 -3
  32. data/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss +6 -3
  33. data/frameworks/compass/stylesheets/compass/typography/text/_ellipsis.scss +1 -1
  34. data/frameworks/compass/stylesheets/compass/typography/text/_replacement.scss +35 -9
  35. data/frameworks/compass/stylesheets/compass/utilities/general/_float.scss +7 -3
  36. data/frameworks/compass/stylesheets/compass/utilities/general/_hacks.scss +2 -2
  37. data/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +25 -10
  38. data/frameworks/compass/stylesheets/compass/utilities/tables/_borders.scss +14 -9
  39. data/lib/compass.rb +2 -2
  40. data/lib/compass/actions.rb +5 -1
  41. data/lib/compass/commands/project_base.rb +7 -1
  42. data/lib/compass/commands/update_project.rb +2 -2
  43. data/lib/compass/commands/watch_project.rb +6 -86
  44. data/lib/compass/compiler.rb +6 -0
  45. data/lib/compass/configuration/data.rb +1 -1
  46. data/lib/compass/configuration/helpers.rb +2 -0
  47. data/lib/compass/exec/global_options_parser.rb +1 -1
  48. data/lib/compass/exec/project_options_parser.rb +4 -0
  49. data/lib/compass/logger.rb +2 -0
  50. data/lib/compass/sass_extensions/functions/colors.rb +14 -0
  51. data/lib/compass/sass_extensions/functions/constants.rb +9 -0
  52. data/lib/compass/sass_extensions/functions/gradient_support.rb +44 -5
  53. data/lib/compass/sass_extensions/functions/image_size.rb +2 -1
  54. data/lib/compass/sass_extensions/functions/math.rb +14 -2
  55. data/lib/compass/sass_extensions/functions/sprites.rb +81 -14
  56. data/lib/compass/sass_extensions/functions/urls.rb +29 -2
  57. data/lib/compass/sass_extensions/sprites.rb +2 -0
  58. data/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +5 -1
  59. data/lib/compass/sass_extensions/sprites/image.rb +7 -2
  60. data/lib/compass/sass_extensions/sprites/image_methods.rb +5 -2
  61. data/lib/compass/sass_extensions/sprites/images.rb +29 -0
  62. data/lib/compass/sass_extensions/sprites/layout.rb +39 -0
  63. data/lib/compass/sass_extensions/sprites/layout/diagonal.rb +42 -0
  64. data/lib/compass/sass_extensions/sprites/layout/horizontal.rb +66 -0
  65. data/lib/compass/sass_extensions/sprites/layout/smart.rb +33 -0
  66. data/lib/compass/sass_extensions/sprites/layout/vertical.rb +68 -0
  67. data/lib/compass/sass_extensions/sprites/layout_methods.rb +9 -115
  68. data/lib/compass/sass_extensions/sprites/sprite_map.rb +5 -0
  69. data/lib/compass/sass_extensions/sprites/sprite_methods.rb +9 -5
  70. data/lib/compass/sprite_importer.rb +3 -3
  71. data/lib/compass/sprite_importer/content.erb +14 -12
  72. data/lib/compass/version.rb +2 -1
  73. data/lib/compass/watcher.rb +11 -0
  74. data/lib/compass/watcher/compiler.rb +59 -0
  75. data/lib/compass/watcher/project_watcher.rb +108 -0
  76. data/lib/compass/watcher/watch.rb +33 -0
  77. data/test/fixtures/stylesheets/busted_font_urls/config.rb +32 -0
  78. data/test/fixtures/stylesheets/busted_font_urls/css/screen.css +7 -0
  79. data/{examples/css3/extensions/fancy-fonts/templates/project/bgrove.ttf → test/fixtures/stylesheets/busted_font_urls/fonts/feed.ttf} +0 -0
  80. data/test/fixtures/stylesheets/busted_font_urls/fonts/grid.ttf +0 -0
  81. data/test/fixtures/stylesheets/busted_font_urls/fonts/sub/dk.ttf +0 -0
  82. data/test/fixtures/stylesheets/busted_font_urls/sass/screen.sass +11 -0
  83. data/test/fixtures/stylesheets/busted_font_urls/tmp/screen.css +7 -0
  84. data/test/fixtures/stylesheets/compass/css/animation-with-legacy-ie.css +0 -8
  85. data/test/fixtures/stylesheets/compass/css/animation.css +0 -8
  86. data/test/fixtures/stylesheets/compass/css/background-clip.css +5 -0
  87. data/test/fixtures/stylesheets/compass/css/background-origin.css +15 -0
  88. data/test/fixtures/stylesheets/compass/css/background-size.css +24 -0
  89. data/test/fixtures/stylesheets/compass/css/columns.css +81 -9
  90. data/test/fixtures/stylesheets/compass/css/filters.css +29 -0
  91. data/test/fixtures/stylesheets/compass/css/gradients.css +30 -27
  92. data/test/fixtures/stylesheets/compass/css/grid_background.css +7 -14
  93. data/test/fixtures/stylesheets/compass/css/hyphenation.css +16 -0
  94. data/test/fixtures/stylesheets/compass/css/lists.css +11 -13
  95. data/test/fixtures/stylesheets/compass/css/pie.css +0 -3
  96. data/test/fixtures/stylesheets/compass/css/replacement.css +59 -0
  97. data/test/fixtures/stylesheets/compass/css/reset.css +1 -1
  98. data/test/fixtures/stylesheets/compass/css/selection.css +13 -0
  99. data/test/fixtures/stylesheets/compass/css/sprites.css +250 -250
  100. data/test/fixtures/stylesheets/compass/css/text_shadow.css +22 -4
  101. data/test/fixtures/stylesheets/compass/css/transition.css +67 -11
  102. data/test/fixtures/stylesheets/compass/css/units.css +30 -0
  103. data/test/fixtures/stylesheets/compass/css/user-interface.css +12 -1
  104. data/test/fixtures/stylesheets/compass/css/utilities.css +15 -0
  105. data/test/fixtures/stylesheets/compass/css/vertical_rhythm.css +199 -27
  106. data/test/fixtures/stylesheets/compass/images/flag-s5b4f509715.png +0 -0
  107. data/test/fixtures/stylesheets/compass/sass/background-clip.scss +4 -2
  108. data/test/fixtures/stylesheets/compass/sass/background-origin.scss +10 -0
  109. data/test/fixtures/stylesheets/compass/sass/background-size.scss +12 -0
  110. data/test/fixtures/stylesheets/compass/sass/columns.scss +18 -0
  111. data/test/fixtures/stylesheets/compass/sass/filters.scss +24 -0
  112. data/test/fixtures/stylesheets/compass/sass/gradients.sass +10 -3
  113. data/test/fixtures/stylesheets/compass/sass/hyphenation.scss +11 -0
  114. data/test/fixtures/stylesheets/compass/sass/replacement.scss +22 -0
  115. data/test/fixtures/stylesheets/compass/sass/selection.scss +13 -0
  116. data/test/fixtures/stylesheets/compass/sass/text_shadow.scss +6 -1
  117. data/test/fixtures/stylesheets/compass/sass/transition.scss +11 -0
  118. data/test/fixtures/stylesheets/compass/sass/units.scss +45 -0
  119. data/test/fixtures/stylesheets/compass/sass/user-interface.scss +10 -5
  120. data/test/fixtures/stylesheets/compass/sass/utilities.scss +10 -0
  121. data/test/fixtures/stylesheets/compass/sass/vertical_rhythm.scss +208 -7
  122. data/test/fixtures/stylesheets/envtest/tmp/env.css +4 -4
  123. data/test/fixtures/stylesheets/valid/css/simple.css +4 -0
  124. data/test/helpers/test_case.rb +8 -1
  125. data/test/integrations/compass_test.rb +13 -13
  126. data/test/integrations/sprites_test.rb +173 -8
  127. data/test/test_helper.rb +4 -0
  128. data/test/units/command_line_test.rb +0 -2
  129. data/test/units/regressions_test.rb +35 -0
  130. data/test/units/sass_extensions_test.rb +23 -11
  131. data/test/units/sprites/image_test.rb +5 -0
  132. data/test/units/sprites/images_test.rb +46 -0
  133. data/test/units/sprites/layout_test.rb +18 -2
  134. data/test/units/watcher/compiler_test.rb +39 -0
  135. data/test/units/watcher/project_watcher_test.rb +65 -0
  136. data/test/units/watcher/watch_test.rb +42 -0
  137. metadata +83 -317
  138. data/bin/compass.compiled.rbc +0 -707
  139. data/examples/compass/images/emblem-a043c4f148.png +0 -0
  140. data/examples/compass/images/flag-03c3b29b35.png +0 -0
  141. data/examples/compass/images/flag-21cfbfbfc8.png +0 -0
  142. data/examples/css3/extensions/fancy-fonts/templates/project/Prociono.otf +0 -0
  143. data/examples/css3/extensions/fancy-fonts/templates/project/bgrove.otf +0 -0
  144. data/frameworks/blueprint/stylesheets/_blueprint.scss +0 -37
  145. data/frameworks/blueprint/stylesheets/blueprint/_buttons.scss +0 -101
  146. data/frameworks/blueprint/stylesheets/blueprint/_colors.scss +0 -36
  147. data/frameworks/blueprint/stylesheets/blueprint/_debug.scss +0 -28
  148. data/frameworks/blueprint/stylesheets/blueprint/_fancy-type.scss +0 -88
  149. data/frameworks/blueprint/stylesheets/blueprint/_form.scss +0 -66
  150. data/frameworks/blueprint/stylesheets/blueprint/_grid.scss +0 -258
  151. data/frameworks/blueprint/stylesheets/blueprint/_ie.scss +0 -111
  152. data/frameworks/blueprint/stylesheets/blueprint/_interaction.scss +0 -66
  153. data/frameworks/blueprint/stylesheets/blueprint/_link-icons.scss +0 -37
  154. data/frameworks/blueprint/stylesheets/blueprint/_liquid.scss +0 -152
  155. data/frameworks/blueprint/stylesheets/blueprint/_print.scss +0 -86
  156. data/frameworks/blueprint/stylesheets/blueprint/_reset.scss +0 -3
  157. data/frameworks/blueprint/stylesheets/blueprint/_rtl.scss +0 -121
  158. data/frameworks/blueprint/stylesheets/blueprint/_scaffolding.scss +0 -52
  159. data/frameworks/blueprint/stylesheets/blueprint/_typography.scss +0 -90
  160. data/frameworks/blueprint/stylesheets/blueprint/_utilities.scss +0 -37
  161. data/frameworks/blueprint/stylesheets/blueprint/reset/_utilities.scss +0 -80
  162. data/frameworks/blueprint/templates/basic/grid.png +0 -0
  163. data/frameworks/blueprint/templates/basic/ie.sass +0 -4
  164. data/frameworks/blueprint/templates/basic/manifest.rb +0 -30
  165. data/frameworks/blueprint/templates/basic/partials/_base.sass +0 -10
  166. data/frameworks/blueprint/templates/basic/print.sass +0 -4
  167. data/frameworks/blueprint/templates/basic/screen.sass +0 -12
  168. data/frameworks/blueprint/templates/buttons/buttons.sass +0 -49
  169. data/frameworks/blueprint/templates/buttons/buttons/cross.png +0 -0
  170. data/frameworks/blueprint/templates/buttons/buttons/key.png +0 -0
  171. data/frameworks/blueprint/templates/buttons/buttons/tick.png +0 -0
  172. data/frameworks/blueprint/templates/buttons/manifest.rb +0 -17
  173. data/frameworks/blueprint/templates/link_icons/link_icons.sass +0 -13
  174. data/frameworks/blueprint/templates/link_icons/link_icons/doc.png +0 -0
  175. data/frameworks/blueprint/templates/link_icons/link_icons/email.png +0 -0
  176. data/frameworks/blueprint/templates/link_icons/link_icons/external.png +0 -0
  177. data/frameworks/blueprint/templates/link_icons/link_icons/feed.png +0 -0
  178. data/frameworks/blueprint/templates/link_icons/link_icons/im.png +0 -0
  179. data/frameworks/blueprint/templates/link_icons/link_icons/pdf.png +0 -0
  180. data/frameworks/blueprint/templates/link_icons/link_icons/visited.png +0 -0
  181. data/frameworks/blueprint/templates/link_icons/link_icons/xls.png +0 -0
  182. data/frameworks/blueprint/templates/link_icons/manifest.rb +0 -23
  183. data/frameworks/blueprint/templates/project/grid.png +0 -0
  184. data/frameworks/blueprint/templates/project/ie.sass +0 -16
  185. data/frameworks/blueprint/templates/project/manifest.rb +0 -30
  186. data/frameworks/blueprint/templates/project/partials/_base.sass +0 -11
  187. data/frameworks/blueprint/templates/project/print.sass +0 -8
  188. data/frameworks/blueprint/templates/project/screen.sass +0 -46
  189. data/frameworks/blueprint/templates/semantic/grid.png +0 -0
  190. data/frameworks/blueprint/templates/semantic/ie.sass +0 -16
  191. data/frameworks/blueprint/templates/semantic/manifest.rb +0 -33
  192. data/frameworks/blueprint/templates/semantic/partials/_base.sass +0 -10
  193. data/frameworks/blueprint/templates/semantic/partials/_form.sass +0 -6
  194. data/frameworks/blueprint/templates/semantic/partials/_page.sass +0 -17
  195. data/frameworks/blueprint/templates/semantic/partials/_two_col.sass +0 -38
  196. data/frameworks/blueprint/templates/semantic/print.sass +0 -5
  197. data/frameworks/blueprint/templates/semantic/screen.sass +0 -14
  198. data/lib/compass.rbc +0 -796
  199. data/lib/compass/actions.rbc +0 -2736
  200. data/lib/compass/app_integration.rbc +0 -836
  201. data/lib/compass/app_integration/merb.rbc +0 -106
  202. data/lib/compass/app_integration/rails.rbc +0 -2096
  203. data/lib/compass/app_integration/rails/configuration_defaults.rbc +0 -2430
  204. data/lib/compass/app_integration/rails/installer.rbc +0 -3677
  205. data/lib/compass/app_integration/stand_alone.rbc +0 -589
  206. data/lib/compass/app_integration/stand_alone/configuration_defaults.rbc +0 -721
  207. data/lib/compass/app_integration/stand_alone/installer.rbc +0 -1487
  208. data/lib/compass/browser_support.rbc +0 -1144
  209. data/lib/compass/commands.rbc +0 -307
  210. data/lib/compass/commands/base.rbc +0 -1044
  211. data/lib/compass/commands/clean_project.rbc +0 -1856
  212. data/lib/compass/commands/create_project.rbc +0 -2691
  213. data/lib/compass/commands/default.rbc +0 -1677
  214. data/lib/compass/commands/generate_grid_background.rbc +0 -1939
  215. data/lib/compass/commands/help.rbc +0 -1921
  216. data/lib/compass/commands/imports.rbc +0 -969
  217. data/lib/compass/commands/installer_command.rbc +0 -807
  218. data/lib/compass/commands/interactive.rbc +0 -1341
  219. data/lib/compass/commands/list_frameworks.rbc +0 -1111
  220. data/lib/compass/commands/print_version.rbc +0 -2478
  221. data/lib/compass/commands/project_base.rbc +0 -2085
  222. data/lib/compass/commands/project_stats.rbc +0 -4202
  223. data/lib/compass/commands/registry.rbc +0 -1350
  224. data/lib/compass/commands/sprite.rbc +0 -2212
  225. data/lib/compass/commands/stamp_pattern.rbc +0 -2011
  226. data/lib/compass/commands/unpack_extension.rbc +0 -2348
  227. data/lib/compass/commands/update_project.rbc +0 -3002
  228. data/lib/compass/commands/validate_project.rbc +0 -1686
  229. data/lib/compass/commands/watch_project.rbc +0 -4155
  230. data/lib/compass/commands/write_configuration.rbc +0 -2896
  231. data/lib/compass/compiler.rbc +0 -4913
  232. data/lib/compass/configuration.rbc +0 -1398
  233. data/lib/compass/configuration/adapters.rbc +0 -2088
  234. data/lib/compass/configuration/comments.rbc +0 -843
  235. data/lib/compass/configuration/data.rbc +0 -2633
  236. data/lib/compass/configuration/defaults.rbc +0 -3617
  237. data/lib/compass/configuration/file_data.rbc +0 -643
  238. data/lib/compass/configuration/helpers.rbc +0 -3500
  239. data/lib/compass/configuration/inheritance.rbc +0 -3592
  240. data/lib/compass/configuration/paths.rbc +0 -412
  241. data/lib/compass/configuration/serialization.rbc +0 -1996
  242. data/lib/compass/dependencies.rbc +0 -232
  243. data/lib/compass/errors.rbc +0 -176
  244. data/lib/compass/exec.rbc +0 -500
  245. data/lib/compass/exec/command_option_parser.rbc +0 -676
  246. data/lib/compass/exec/global_options_parser.rbc +0 -1306
  247. data/lib/compass/exec/helpers.rbc +0 -758
  248. data/lib/compass/exec/project_options_parser.rbc +0 -1515
  249. data/lib/compass/exec/sub_command_ui.rbc +0 -1191
  250. data/lib/compass/frameworks.rbc +0 -3640
  251. data/lib/compass/grid_builder.rbc +0 -0
  252. data/lib/compass/installers.rbc +0 -152
  253. data/lib/compass/installers/bare_installer.rbc +0 -939
  254. data/lib/compass/installers/base.rbc +0 -4427
  255. data/lib/compass/installers/manifest.rbc +0 -3335
  256. data/lib/compass/installers/manifest_installer.rbc +0 -1591
  257. data/lib/compass/installers/template_context.rbc +0 -1030
  258. data/lib/compass/logger.rbc +0 -2317
  259. data/lib/compass/quick_cache.rbc +0 -324
  260. data/lib/compass/sass_extensions.rbc +0 -213
  261. data/lib/compass/sass_extensions/functions.rbc +0 -808
  262. data/lib/compass/sass_extensions/functions/colors.rbc +0 -1279
  263. data/lib/compass/sass_extensions/functions/constants.rbc +0 -1921
  264. data/lib/compass/sass_extensions/functions/cross_browser_support.rbc +0 -1966
  265. data/lib/compass/sass_extensions/functions/display.rbc +0 -1227
  266. data/lib/compass/sass_extensions/functions/enumerate.rbc +0 -446
  267. data/lib/compass/sass_extensions/functions/env.rbc +0 -299
  268. data/lib/compass/sass_extensions/functions/font_files.rbc +0 -821
  269. data/lib/compass/sass_extensions/functions/gradient_support.rbc +0 -14147
  270. data/lib/compass/sass_extensions/functions/image_size.rbc +0 -3152
  271. data/lib/compass/sass_extensions/functions/inline_image.rbc +0 -1678
  272. data/lib/compass/sass_extensions/functions/lists.rbc +0 -2601
  273. data/lib/compass/sass_extensions/functions/selectors.rbc +0 -1592
  274. data/lib/compass/sass_extensions/functions/sprites.rbc +0 -3792
  275. data/lib/compass/sass_extensions/functions/trig.rbc +0 -811
  276. data/lib/compass/sass_extensions/functions/urls.rbc +0 -5248
  277. data/lib/compass/sass_extensions/monkey_patches.rbc +0 -134
  278. data/lib/compass/sass_extensions/monkey_patches/browser_support.rbc +0 -2169
  279. data/lib/compass/sass_extensions/monkey_patches/traversal.rbc +0 -660
  280. data/lib/compass/sass_extensions/sprites.rbc +0 -363
  281. data/lib/compass/sass_extensions/sprites/base.rbc +0 -4529
  282. data/lib/compass/sass_extensions/sprites/engines.rbc +0 -662
  283. data/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rbc +0 -1074
  284. data/lib/compass/sass_extensions/sprites/image.rbc +0 -2961
  285. data/lib/compass/sass_extensions/sprites/image_methods.rbc +0 -900
  286. data/lib/compass/sass_extensions/sprites/image_row.rbc +0 -1168
  287. data/lib/compass/sass_extensions/sprites/layout_methods.rbc +0 -3236
  288. data/lib/compass/sass_extensions/sprites/row_fitter.rbc +0 -2067
  289. data/lib/compass/sass_extensions/sprites/sprite_map.rbc +0 -1991
  290. data/lib/compass/sass_extensions/sprites/sprite_methods.rbc +0 -3190
  291. data/lib/compass/sass_extensions/sprites/sprites.rbc +0 -1573
  292. data/lib/compass/sprite_importer.rbc +0 -3573
  293. data/lib/compass/util.rbc +0 -552
  294. data/lib/compass/version.rbc +0 -1245
  295. data/test/fixtures/stylesheets/blueprint/config.rb +0 -14
  296. data/test/fixtures/stylesheets/blueprint/css/ie.css +0 -76
  297. data/test/fixtures/stylesheets/blueprint/css/print.css +0 -56
  298. data/test/fixtures/stylesheets/blueprint/css/screen.css +0 -816
  299. data/test/fixtures/stylesheets/blueprint/css/single-imports/buttons.css +0 -58
  300. data/test/fixtures/stylesheets/blueprint/css/single-imports/colors.css +0 -80
  301. data/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css +0 -12
  302. data/test/fixtures/stylesheets/blueprint/css/single-imports/fancy-type.css +0 -30
  303. data/test/fixtures/stylesheets/blueprint/css/single-imports/form.css +0 -42
  304. data/test/fixtures/stylesheets/blueprint/css/single-imports/grid.css +0 -435
  305. data/test/fixtures/stylesheets/blueprint/css/single-imports/ie.css +0 -76
  306. data/test/fixtures/stylesheets/blueprint/css/single-imports/interaction.css +0 -46
  307. data/test/fixtures/stylesheets/blueprint/css/single-imports/link-icons.css +0 -40
  308. data/test/fixtures/stylesheets/blueprint/css/single-imports/liquid.css +0 -651
  309. data/test/fixtures/stylesheets/blueprint/css/single-imports/print.css +0 -60
  310. data/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css +0 -36
  311. data/test/fixtures/stylesheets/blueprint/css/single-imports/reset.css +0 -40
  312. data/test/fixtures/stylesheets/blueprint/css/single-imports/rtl.css +0 -437
  313. data/test/fixtures/stylesheets/blueprint/css/single-imports/scaffolding.css +0 -45
  314. data/test/fixtures/stylesheets/blueprint/css/single-imports/typography.css +0 -146
  315. data/test/fixtures/stylesheets/blueprint/css/single-imports/utilities.css +0 -35
  316. data/test/fixtures/stylesheets/blueprint/images/grid.png +0 -0
  317. data/test/fixtures/stylesheets/blueprint/images/link_icons/doc.png +0 -0
  318. data/test/fixtures/stylesheets/blueprint/images/link_icons/email.png +0 -0
  319. data/test/fixtures/stylesheets/blueprint/images/link_icons/external.png +0 -0
  320. data/test/fixtures/stylesheets/blueprint/images/link_icons/feed.png +0 -0
  321. data/test/fixtures/stylesheets/blueprint/images/link_icons/im.png +0 -0
  322. data/test/fixtures/stylesheets/blueprint/images/link_icons/pdf.png +0 -0
  323. data/test/fixtures/stylesheets/blueprint/images/link_icons/visited.png +0 -0
  324. data/test/fixtures/stylesheets/blueprint/images/link_icons/xls.png +0 -0
  325. data/test/fixtures/stylesheets/blueprint/sass/ie.sass +0 -3
  326. data/test/fixtures/stylesheets/blueprint/sass/print.sass +0 -3
  327. data/test/fixtures/stylesheets/blueprint/sass/screen.sass +0 -18
  328. data/test/fixtures/stylesheets/blueprint/sass/single-imports/buttons.scss +0 -4
  329. data/test/fixtures/stylesheets/blueprint/sass/single-imports/colors.scss +0 -34
  330. data/test/fixtures/stylesheets/blueprint/sass/single-imports/debug.scss +0 -3
  331. data/test/fixtures/stylesheets/blueprint/sass/single-imports/fancy-type.scss +0 -3
  332. data/test/fixtures/stylesheets/blueprint/sass/single-imports/form.scss +0 -5
  333. data/test/fixtures/stylesheets/blueprint/sass/single-imports/grid.scss +0 -3
  334. data/test/fixtures/stylesheets/blueprint/sass/single-imports/ie.scss +0 -3
  335. data/test/fixtures/stylesheets/blueprint/sass/single-imports/interaction.scss +0 -3
  336. data/test/fixtures/stylesheets/blueprint/sass/single-imports/link-icons.scss +0 -13
  337. data/test/fixtures/stylesheets/blueprint/sass/single-imports/liquid.scss +0 -3
  338. data/test/fixtures/stylesheets/blueprint/sass/single-imports/print.scss +0 -5
  339. data/test/fixtures/stylesheets/blueprint/sass/single-imports/reset-utilities.scss +0 -5
  340. data/test/fixtures/stylesheets/blueprint/sass/single-imports/reset.scss +0 -1
  341. data/test/fixtures/stylesheets/blueprint/sass/single-imports/rtl.scss +0 -3
  342. data/test/fixtures/stylesheets/blueprint/sass/single-imports/scaffolding.scss +0 -5
  343. data/test/fixtures/stylesheets/blueprint/sass/single-imports/typography.scss +0 -3
  344. data/test/fixtures/stylesheets/blueprint/sass/single-imports/utilities.scss +0 -3
  345. data/test/fixtures/stylesheets/compass/images/flag-s4798b5a210.png +0 -0
  346. data/test/helpers/command_line.rbc +0 -2820
  347. data/test/helpers/diff.rbc +0 -1104
  348. data/test/helpers/io.rbc +0 -962
  349. data/test/helpers/rails.rbc +0 -1116
  350. data/test/helpers/test_case.rbc +0 -1255
  351. data/test/integrations/compass_test.rbc +0 -6589
  352. data/test/integrations/rails_integration_test.rbc +0 -1342
  353. data/test/integrations/sprites_test.rbc +0 -6192
  354. data/test/test_helper.rbc +0 -1694
  355. data/test/units/actions_test.rbc +0 -644
  356. data/test/units/command_line_test.rbc +0 -1532
  357. data/test/units/compass_png_test.rbc +0 -0
  358. data/test/units/configuration_test.rbc +0 -3833
  359. data/test/units/rails_configuration_test.rbc +0 -1032
  360. data/test/units/sass_extensions_test.rbc +0 -3586
  361. data/test/units/sprites/engine_test.rbc +0 -962
  362. data/test/units/sprites/image_row_test.rbc +0 -1578
  363. data/test/units/sprites/image_test.rbc +0 -2836
  364. data/test/units/sprites/importer_test.rbc +0 -2620
  365. data/test/units/sprites/row_fitter_test.rbc +0 -1479
  366. data/test/units/sprites/sprite_command_test.rbc +0 -1147
  367. data/test/units/sprites/sprite_map_test.rbc +0 -6515
@@ -39,6 +39,7 @@ module Compass
39
39
  @kwargs = kwargs
40
40
  @kwargs['cleanup'] ||= Sass::Script::Bool.new(true)
41
41
  @kwargs['layout'] ||= Sass::Script::String.new('vertical')
42
+ @kwargs['sort_by'] ||= Sass::Script::String.new('none')
42
43
  @images = nil
43
44
  @width = nil
44
45
  @height = nil
@@ -47,6 +48,10 @@ module Compass
47
48
  compute_image_metadata!
48
49
  end
49
50
 
51
+ def sort_method
52
+ @kwargs['sort_by'].value
53
+ end
54
+
50
55
  def inspect
51
56
  puts 'images'
52
57
  @images.each do |img|
@@ -26,8 +26,12 @@ module Compass
26
26
 
27
27
  # Creates the Sprite::Image objects for each image and calculates the width
28
28
  def init_images
29
- @images = image_names.collect do |relative_file|
30
- Image.new(self, relative_file, kwargs)
29
+ @images = Images.new
30
+ image_names.each do |relative_file|
31
+ @images << Image.new(self, relative_file, kwargs)
32
+ end
33
+ unless sort_method == 'none'
34
+ @images.sort_by! sort_method
31
35
  end
32
36
  end
33
37
 
@@ -59,7 +63,7 @@ module Compass
59
63
  end
60
64
 
61
65
  def cleanup_old_sprites
62
- Dir[File.join(Compass.configuration.images_path, "#{path}-s*.png")].each do |file|
66
+ Sass::Util.glob(File.join(Compass.configuration.generated_images_path, "#{path}-s*.png")).each do |file|
63
67
  log :remove, file
64
68
  FileUtils.rm file
65
69
  Compass.configuration.run_sprite_removed(file)
@@ -68,7 +72,7 @@ module Compass
68
72
 
69
73
  # Does this sprite need to be generated
70
74
  def generation_required?
71
- !File.exists?(filename) || outdated? || options[:force]
75
+ !File.exists?(filename) || outdated? || options[:force]
72
76
  end
73
77
 
74
78
  # Returns the uniqueness hash for this sprite object
@@ -129,4 +133,4 @@ module Compass
129
133
  end
130
134
  end
131
135
  end
132
- end
136
+ end
@@ -16,7 +16,7 @@ module Compass
16
16
  def self.find_all_sprite_map_files(path)
17
17
  hex = "[0-9a-f]"
18
18
  glob = "*-s#{hex*10}{#{VALID_EXTENSIONS.join(",")}}"
19
- Dir.glob(File.join(path, "**", glob))
19
+ Sass::Util.glob(File.join(path, "**", glob))
20
20
  end
21
21
 
22
22
  def find(uri, options)
@@ -75,7 +75,7 @@ module Compass
75
75
  # Returns the Glob of image files for the uri
76
76
  def self.files(uri)
77
77
  Compass.configuration.sprite_load_path.compact.each do |folder|
78
- files = Dir[File.join(folder, uri)].sort
78
+ files = Sass::Util.glob(File.join(folder, uri)).sort
79
79
  next if files.empty?
80
80
  return files
81
81
  end
@@ -93,7 +93,7 @@ module Compass
93
93
 
94
94
  # Returns the sass_options for this sprite
95
95
  def self.sass_options(uri, importer, options)
96
- options.merge!(:filename => uri, :syntax => :scss, :importer => importer)
96
+ options.merge!(:filename => uri.gsub(%r{\*/},"*\\/"), :syntax => :scss, :importer => importer)
97
97
  end
98
98
 
99
99
  # Returns a Sass::Engine for this sprite object
@@ -4,6 +4,7 @@
4
4
  // You can override them before you import this file.
5
5
  $<%= name %>-sprite-base-class : ".<%= name %>-sprite" !default;
6
6
  $<%= name %>-sprite-dimensions : false !default;
7
+ $<%= name %>-use-percentages : false !default;
7
8
  $<%= name %>-position : 0% !default;
8
9
  $<%= name %>-spacing : 0 !default;
9
10
  $<%= name %>-repeat : no-repeat !default;
@@ -11,6 +12,7 @@ $<%= name %>-prefix : '' !default;
11
12
  $<%= name %>-clean-up : true !default;
12
13
  $<%= name %>-layout : vertical !default;
13
14
  $<%= name %>-inline : false !default;
15
+ $<%= name %>-sort-by : 'none' !default;
14
16
 
15
17
  <% if skip_overrides %>
16
18
  $<%= name %>-sprites: sprite-map("<%= uri %>", $layout: $<%= name %>-layout, $cleanup: $<%= name %>-clean-up, $spacing: $<%= name %>-spacing, $position : $<%= name %>-position);
@@ -32,7 +34,8 @@ $<%= name %>-inline : false !default;
32
34
  $layout : $<%= name %>-layout,
33
35
  $cleanup : $<%= name %>-clean-up,
34
36
  $spacing : $<%= name %>-spacing,
35
- $position : $<%= name %>-position
37
+ $position : $<%= name %>-position,
38
+ $sort-by : $<%= name %>-sort-by
36
39
  );
37
40
  <% end %>
38
41
 
@@ -50,8 +53,7 @@ $<%= name %>-inline : false !default;
50
53
  //sass functions to return the dimensions of a sprite image as units
51
54
  <% [:width, :height].each do |dimension| %>
52
55
  @function <%= name %>-sprite-<%= dimension %>($name) {
53
- $file: sprite_file($<%= name %>-sprites, $name);
54
- @return image-<%= dimension %>($file);
56
+ @return sprite-<%= dimension %>($<%= name %>-sprites, $name);
55
57
  }
56
58
  <% end %>
57
59
 
@@ -62,22 +64,22 @@ $<%= name %>-inline : false !default;
62
64
  }
63
65
 
64
66
  // Move the background position to display the sprite.
65
- @mixin <%= name %>-sprite-position($name, $offset-x: 0, $offset-y: 0) {
66
- @include sprite-background-position($<%= name %>-sprites, $name, $offset-x, $offset-y)
67
+ @mixin <%= name %>-sprite-position($name, $offset-x: 0, $offset-y: 0, $use-percentages: $<%= name %>-use-percentages) {
68
+ @include sprite-background-position($<%= name %>-sprites, $name, $offset-x, $offset-y, $use-percentages)
67
69
  }
68
70
 
69
71
  // Extends the sprite base class and set the background position for the desired sprite.
70
72
  // It will also apply the image dimensions if $dimensions is true.
71
- @mixin <%= name %>-sprite($name, $dimensions: $<%= name %>-sprite-dimensions, $offset-x: 0, $offset-y: 0) {
73
+ @mixin <%= name %>-sprite($name, $dimensions: $<%= name %>-sprite-dimensions, $offset-x: 0, $offset-y: 0, $use-percentages: $<%= name %>-use-percentages) {
72
74
  @extend #{$<%= name %>-sprite-base-class};
73
- @include sprite($<%= name %>-sprites, $name, $dimensions, $offset-x, $offset-y)
75
+ @include sprite($<%= name %>-sprites, $name, $dimensions, $offset-x, $offset-y, $use-percentages);
74
76
  }
75
77
 
76
- @mixin <%= name %>-sprites($sprite-names, $dimensions: $<%= name %>-sprite-dimensions, $prefix: sprite-map-name($<%= name %>-sprites), $offset-x: 0, $offset-y: 0) {
77
- @include sprites($<%= name %>-sprites, $sprite-names, $<%= name %>-sprite-base-class, $dimensions, $prefix, $offset-x, $offset-y)
78
+ @mixin <%= name %>-sprites($sprite-names, $dimensions: $<%= name %>-sprite-dimensions, $prefix: sprite-map-name($<%= name %>-sprites), $offset-x: 0, $offset-y: 0, $use-percentages: $<%= name %>-use-percentages) {
79
+ @include sprites($<%= name %>-sprites, $sprite-names, $<%= name %>-sprite-base-class, $dimensions, $prefix, $offset-x, $offset-y, $use-percentages)
78
80
  }
79
81
 
80
82
  // Generates a class for each sprited image.
81
- @mixin all-<%= name %>-sprites($dimensions: $<%= name %>-sprite-dimensions, $prefix: sprite-map-name($<%= name %>-sprites), $offset-x: 0, $offset-y: 0) {
82
- @include <%= name %>-sprites(<%= sprite_names.join(" ") %>, $dimensions, $prefix, $offset-x, $offset-y);
83
- }
83
+ @mixin all-<%= name %>-sprites($dimensions: $<%= name %>-sprite-dimensions, $prefix: sprite-map-name($<%= name %>-sprites), $offset-x: 0, $offset-y: 0, $use-percentages: $<%= name %>-use-percentages) {
84
+ @include <%= name %>-sprites(<%= sprite_names.join(" ") %>, $dimensions, $prefix, $offset-x, $offset-y, $use-percentages);
85
+ }
@@ -26,8 +26,9 @@ module Compass
26
26
  @version[:teeny] = @version[:patch]
27
27
  @version[:string] = "#{@version[:major]}.#{@version[:minor]}"
28
28
  @version[:string] << ".#{@version[:patch]}" if @version[:patch]
29
- @version[:string] << ".#{@version[:state]}" if @version[:state]
30
29
  @version[:string] << ".#{@version[:build]}" if @version[:build]
30
+ @version[:string] << ".#{@version[:state]}" if @version[:state]
31
+ @version[:string] << ".#{@version[:iteration]}" if @version[:iteration]
31
32
  if !ENV['OFFICIAL'] && r = revision
32
33
  @version[:string] << ".#{r[0..6]}"
33
34
  end
@@ -0,0 +1,11 @@
1
+ require 'compass/watcher/watch'
2
+ require 'compass/watcher/compiler'
3
+ require 'compass/watcher/project_watcher'
4
+
5
+ module Compass
6
+ module Watcher
7
+ class WatcherException < Compass::Error; end
8
+ class NoCallbackError < WatcherException; end
9
+ class AbsolutePathError < WatcherException; end
10
+ end
11
+ end
@@ -0,0 +1,59 @@
1
+ module Compass
2
+ module Watcher
3
+ class Compiler
4
+ include Compass::Actions
5
+ attr_reader :working_path, :memory_store, :backing_store, :cache_store, :compiler_options, :compiler
6
+
7
+ def initialize(working_path, additional_options={})
8
+ @working_path = working_path
9
+ @compiler_options = create_compiler_options(additional_options)
10
+ @memory_store ||= Sass::CacheStores::Memory.new
11
+ @backing_store ||= compiler_options[:cache_store]
12
+ @backing_store ||= Sass::CacheStores::Filesystem.new(determine_cache_location)
13
+ @cache_store ||= Sass::CacheStores::Chain.new(@memory_store, @backing_store)
14
+ @compiler ||= create_compiler
15
+ end
16
+
17
+ def compile
18
+ @memory_cache.reset! if @memory_cache
19
+ compiler.reset_staleness_checker!
20
+ if file = compiler.out_of_date?
21
+ begin
22
+ time = Time.now.strftime("%T")
23
+ log_action(:info, "Change detected at #{time} to: #{compiler.relative_stylesheet_name(file)}", compiler_options)
24
+ compiler.run
25
+ GC.start
26
+ rescue StandardError => e
27
+ ::Compass::Exec::Helpers.report_error(e, compiler_options)
28
+ end
29
+ end
30
+ end
31
+
32
+ private #=========================================================================================>
33
+
34
+ def create_compiler_options(additional_options)
35
+ compiler_opts = {:sass => Compass.sass_engine_options, :cache_store => @cache_store, :quiet => true, :loud => [:identical, :overwrite, :create]}.merge(additional_options)
36
+ compiler_opts[:cache_location] ||= determine_cache_location
37
+ if compiler_opts.include?(:debug_info)
38
+ compiler_opts[:sass][:debug_info] = compiler_opts.delete(:debug_info)
39
+ end
40
+
41
+ compiler_opts
42
+ end
43
+
44
+ def create_compiler
45
+ @memory_store.reset!
46
+ Compass::Compiler.new(
47
+ working_path,
48
+ Compass.configuration.sass_path,
49
+ Compass.configuration.css_path,
50
+ compiler_options.dup
51
+ )
52
+ end
53
+
54
+ def determine_cache_location
55
+ Compass.configuration.cache_path || Sass::Plugin.options[:cache_location] || File.join(working_path, ".sass-cache")
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,108 @@
1
+ require 'listen'
2
+ require 'forwardable'
3
+ module Compass
4
+ module Watcher
5
+ class ProjectWatcher
6
+ include Compass::Actions
7
+ SASS_FILTER = '*.s[ac]ss'
8
+ ALL_CHILDREN_SASS_FILTER = File.join('**', SASS_FILTER)
9
+ POLLING_MESSAGE = 'Compass is polling for changes'
10
+
11
+ attr_reader :options, :project_path, :watcher_compiler, :listener, :poll, :css_dir, :sass_watchers
12
+
13
+ alias :working_path :project_path
14
+
15
+ extend Forwardable
16
+
17
+ def_delegators :@watcher_compiler, :compiler, :compiler
18
+ def_delegators :@watcher_compiler, :compile, :compile
19
+
20
+ def initialize(project_path, watches=[], options={}, poll=false)
21
+ @poll = poll
22
+ @options = options
23
+ @project_path = project_path
24
+ @css_dir = Compass.configuration.css_dir
25
+ @sass_watchers = create_sass_watchers + watches
26
+ @watcher_compiler = Compass::Watcher::Compiler.new(project_path, options)
27
+ setup_listener
28
+ end
29
+
30
+ def watch!
31
+ listener.start
32
+ rescue Interrupt
33
+ log_action(:info, "Good bye!", options)
34
+ listener.stop
35
+ end
36
+
37
+ private #============================================================================>
38
+
39
+ def setup_listener
40
+ @listener = Listen.to(@project_path, :relative_paths => true)
41
+ if poll
42
+ @listener = listener.force_polling(true)
43
+ end
44
+ @listener = listener.polling_fallback_message(POLLING_MESSAGE)
45
+ @listener = listener.ignore(/\.css$/)
46
+ @listener = listener.change(&method(:listen_callback))
47
+ end
48
+
49
+ def create_sass_watchers
50
+ watches = []
51
+ Compass.configuration.sass_load_paths.map do |load_path|
52
+ load_path = load_path.root if load_path.respond_to?(:root)
53
+ next unless load_path.is_a? String
54
+ next unless load_path.include? project_path
55
+ load_path = Pathname.new(load_path).relative_path_from(Pathname.new(project_path))
56
+ filter = File.join(load_path, SASS_FILTER)
57
+ children = File.join(load_path, ALL_CHILDREN_SASS_FILTER)
58
+ watches << Watcher::Watch.new(filter, &method(:sass_callback))
59
+ watches << Watcher::Watch.new(children, &method(:sass_callback))
60
+ end
61
+ watches.compact
62
+ end
63
+
64
+ def listen_callback(modified_file, added_file, removed_file)
65
+ #log_action(:info, ">>> Listen Callback fired", {})
66
+ action = nil
67
+ action ||= :modified unless modified_file.empty?
68
+ action ||= :added unless added_file.empty?
69
+ action ||= :removed unless removed_file.empty?
70
+
71
+ files = modified_file + added_file + removed_file
72
+ # run watchers
73
+ sass_watchers.each do |watcher|
74
+ files.each do |file|
75
+ watcher.run_callback(project_path, file, action) if watcher.match?(file)
76
+ end
77
+ end
78
+ end
79
+
80
+ def sass_callback(base, file, action)
81
+ #log_action(:info, ">>> Sass Callback fired #{action}", {})
82
+ sass_modified(file) if action == :modified
83
+ sass_added(file) if action == :added
84
+ sass_removed(file) if action == :removed
85
+ end
86
+
87
+ def sass_modified(file)
88
+ log_action(:info, "#{file} was modified", options)
89
+ compile
90
+ end
91
+
92
+ def sass_added(file)
93
+ log_action(:info, "#{file} was added", options)
94
+ compile
95
+ end
96
+
97
+ def sass_removed(file)
98
+ log_action(:info, "#{file} was removed", options)
99
+ css_file = compiler.corresponding_css_file(File.join(project_path, file))
100
+ compile
101
+ if File.exists?(css_file)
102
+ remove(css_file)
103
+ end
104
+ end
105
+
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,33 @@
1
+ module Compass
2
+ module Watcher
3
+ class Watch
4
+ attr_reader :callback, :glob
5
+
6
+ def initialize(glob, &block)
7
+ @callback = block
8
+ @glob = glob
9
+ verify!
10
+ end
11
+
12
+ def match?(changed_path)
13
+ File.fnmatch(glob, changed_path)
14
+ end
15
+
16
+ def run_callback(base, relative, action)
17
+ callback.call(base, relative, action)
18
+ end
19
+
20
+ private
21
+
22
+ def verify!
23
+ if Pathname.new(glob).absolute?
24
+ raise AbsolutePathError, "Only paths relative to the project can be watched"
25
+ end
26
+ if callback.nil?
27
+ raise NoCallbackError, "A Block must be supplied in order to be watched"
28
+ end
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+ # Require any additional compass plugins here.
2
+ project_type = :stand_alone
3
+ css_dir = "tmp"
4
+ sass_dir = "sass"
5
+ fonts_dir = "fonts"
6
+ output_style = :compact
7
+ # To enable relative image paths using the images_url() function:
8
+ # http_images_path = :relative
9
+ http_fonts_path = "/fonts"
10
+ line_comments = false
11
+
12
+ asset_cache_buster do |path, file|
13
+ pathname = Pathname.new(path)
14
+ dirname = pathname.dirname
15
+ basename = pathname.basename(pathname.extname)
16
+ extname = pathname.extname
17
+
18
+ case pathname.basename(pathname.extname).to_s
19
+ when "grid"
20
+ new_path = "#{dirname}/#{basename}-BUSTED#{extname}"
21
+ {:path => new_path, :query => nil}
22
+ when "feed"
23
+ "query_string"
24
+ when "dk"
25
+ {:query => "query_string"}
26
+ end
27
+ end
28
+
29
+
30
+ asset_host do |path|
31
+ "http://assets%d.example.com" % (path.size % 4)
32
+ end
@@ -0,0 +1,7 @@
1
+ .showgrid { font-family: url('http://assets3.example.com/fonts/grid-BUSTED.ttf'); }
2
+
3
+ .no-buster { font-family: url('http://assets3.example.com/fonts/grid.ttf'); }
4
+
5
+ .feed { font-family: url('http://assets3.example.com/fonts/feed.ttf?query_string'); }
6
+
7
+ .dk { font-family: url('http://assets1.example.com/fonts/sub/dk.ttf?query_string'); }
@@ -0,0 +1,11 @@
1
+ .showgrid
2
+ font-family: font-url("grid.ttf", $only-path: false, $cache-buster: true)
3
+
4
+ .no-buster
5
+ font-family: font-url("grid.ttf")
6
+
7
+ .feed
8
+ font-family: font-url("feed.ttf", $only-path: false, $cache-buster: true)
9
+
10
+ .dk
11
+ font-family: font-url("sub/dk.ttf", $only-path: false, $cache-buster: true)
@@ -0,0 +1,7 @@
1
+ .showgrid { font-family: url('http://assets3.example.com/fonts/grid-BUSTED.ttf'); }
2
+
3
+ .no-buster { font-family: url('http://assets3.example.com/fonts/grid.ttf'); }
4
+
5
+ .feed { font-family: url('http://assets3.example.com/fonts/feed.ttf?query_string'); }
6
+
7
+ .dk { font-family: url('http://assets1.example.com/fonts/sub/dk.ttf?query_string'); }