haml 3.1.0.alpha.14 → 3.1.0.alpha.17

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of haml might be problematic. Click here for more details.

Files changed (222) hide show
  1. data/EDGE_GEM_VERSION +1 -1
  2. data/VERSION +1 -1
  3. data/lib/haml.rb +3 -2
  4. data/lib/haml/exec.rb +0 -226
  5. data/lib/sass.rb +8 -0
  6. data/lib/sass/plugin.rb +8 -0
  7. data/lib/sass/rails2_shim.rb +9 -0
  8. data/lib/sass/rails3_shim.rb +16 -0
  9. data/vendor/sass/CONTRIBUTING +3 -0
  10. data/vendor/sass/MIT-LICENSE +20 -0
  11. data/vendor/sass/README.md +201 -0
  12. data/vendor/sass/Rakefile +363 -0
  13. data/vendor/sass/TODO +39 -0
  14. data/vendor/sass/VERSION +1 -0
  15. data/vendor/sass/VERSION_NAME +1 -0
  16. data/vendor/sass/bin/css2sass +13 -0
  17. data/vendor/sass/bin/sass +8 -0
  18. data/vendor/sass/bin/sass-convert +7 -0
  19. data/vendor/sass/doc-src/FAQ.md +35 -0
  20. data/vendor/sass/doc-src/INDENTED_SYNTAX.md +210 -0
  21. data/vendor/sass/doc-src/SASS_CHANGELOG.md +1878 -0
  22. data/vendor/sass/doc-src/SASS_REFERENCE.md +1713 -0
  23. data/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +155 -0
  24. data/vendor/sass/ext/extconf.rb +10 -0
  25. data/vendor/sass/extra/update_watch.rb +13 -0
  26. data/vendor/sass/init.rb +18 -0
  27. data/vendor/sass/lib/sass.rb +71 -0
  28. data/vendor/sass/lib/sass/cache_store.rb +208 -0
  29. data/vendor/sass/lib/sass/callbacks.rb +66 -0
  30. data/vendor/sass/lib/sass/css.rb +294 -0
  31. data/vendor/sass/lib/sass/engine.rb +792 -0
  32. data/vendor/sass/lib/sass/environment.rb +143 -0
  33. data/vendor/sass/lib/sass/error.rb +201 -0
  34. data/vendor/sass/lib/sass/exec.rb +619 -0
  35. data/vendor/sass/lib/sass/importers.rb +22 -0
  36. data/vendor/sass/lib/sass/importers/base.rb +138 -0
  37. data/vendor/sass/lib/sass/importers/filesystem.rb +121 -0
  38. data/vendor/sass/lib/sass/less.rb +363 -0
  39. data/vendor/sass/lib/sass/plugin.rb +126 -0
  40. data/vendor/sass/lib/sass/plugin/compiler.rb +346 -0
  41. data/vendor/sass/lib/sass/plugin/configuration.rb +123 -0
  42. data/vendor/sass/lib/sass/plugin/generic.rb +15 -0
  43. data/vendor/sass/lib/sass/plugin/merb.rb +48 -0
  44. data/vendor/sass/lib/sass/plugin/rack.rb +47 -0
  45. data/vendor/sass/lib/sass/plugin/rails.rb +41 -0
  46. data/vendor/sass/lib/sass/plugin/staleness_checker.rb +145 -0
  47. data/vendor/sass/lib/sass/railtie.rb +8 -0
  48. data/vendor/sass/lib/sass/repl.rb +58 -0
  49. data/vendor/sass/lib/sass/root.rb +7 -0
  50. data/vendor/sass/lib/sass/script.rb +63 -0
  51. data/vendor/sass/lib/sass/script/bool.rb +18 -0
  52. data/vendor/sass/lib/sass/script/color.rb +491 -0
  53. data/vendor/sass/lib/sass/script/css_lexer.rb +29 -0
  54. data/vendor/sass/lib/sass/script/css_parser.rb +31 -0
  55. data/vendor/sass/lib/sass/script/funcall.rb +76 -0
  56. data/vendor/sass/lib/sass/script/functions.rb +852 -0
  57. data/vendor/sass/lib/sass/script/interpolation.rb +70 -0
  58. data/vendor/sass/lib/sass/script/lexer.rb +337 -0
  59. data/vendor/sass/lib/sass/script/literal.rb +236 -0
  60. data/vendor/sass/lib/sass/script/node.rb +112 -0
  61. data/vendor/sass/lib/sass/script/number.rb +423 -0
  62. data/vendor/sass/lib/sass/script/operation.rb +90 -0
  63. data/vendor/sass/lib/sass/script/parser.rb +392 -0
  64. data/vendor/sass/lib/sass/script/string.rb +67 -0
  65. data/vendor/sass/lib/sass/script/string_interpolation.rb +93 -0
  66. data/vendor/sass/lib/sass/script/unary_operation.rb +57 -0
  67. data/vendor/sass/lib/sass/script/variable.rb +48 -0
  68. data/vendor/sass/lib/sass/scss.rb +17 -0
  69. data/vendor/sass/lib/sass/scss/css_parser.rb +51 -0
  70. data/vendor/sass/lib/sass/scss/parser.rb +838 -0
  71. data/vendor/sass/lib/sass/scss/rx.rb +126 -0
  72. data/vendor/sass/lib/sass/scss/sass_parser.rb +11 -0
  73. data/vendor/sass/lib/sass/scss/script_lexer.rb +15 -0
  74. data/vendor/sass/lib/sass/scss/script_parser.rb +25 -0
  75. data/vendor/sass/lib/sass/scss/static_parser.rb +40 -0
  76. data/vendor/sass/lib/sass/selector.rb +361 -0
  77. data/vendor/sass/lib/sass/selector/abstract_sequence.rb +62 -0
  78. data/vendor/sass/lib/sass/selector/comma_sequence.rb +82 -0
  79. data/vendor/sass/lib/sass/selector/sequence.rb +236 -0
  80. data/vendor/sass/lib/sass/selector/simple.rb +113 -0
  81. data/vendor/sass/lib/sass/selector/simple_sequence.rb +135 -0
  82. data/vendor/sass/lib/sass/shared.rb +78 -0
  83. data/vendor/sass/lib/sass/tree/comment_node.rb +128 -0
  84. data/vendor/sass/lib/sass/tree/debug_node.rb +36 -0
  85. data/vendor/sass/lib/sass/tree/directive_node.rb +75 -0
  86. data/vendor/sass/lib/sass/tree/extend_node.rb +65 -0
  87. data/vendor/sass/lib/sass/tree/for_node.rb +67 -0
  88. data/vendor/sass/lib/sass/tree/if_node.rb +81 -0
  89. data/vendor/sass/lib/sass/tree/import_node.rb +124 -0
  90. data/vendor/sass/lib/sass/tree/mixin_def_node.rb +60 -0
  91. data/vendor/sass/lib/sass/tree/mixin_node.rb +123 -0
  92. data/vendor/sass/lib/sass/tree/node.rb +490 -0
  93. data/vendor/sass/lib/sass/tree/prop_node.rb +220 -0
  94. data/vendor/sass/lib/sass/tree/root_node.rb +125 -0
  95. data/vendor/sass/lib/sass/tree/rule_node.rb +273 -0
  96. data/vendor/sass/lib/sass/tree/variable_node.rb +39 -0
  97. data/vendor/sass/lib/sass/tree/warn_node.rb +42 -0
  98. data/vendor/sass/lib/sass/tree/while_node.rb +48 -0
  99. data/vendor/sass/lib/sass/util.rb +700 -0
  100. data/vendor/sass/lib/sass/util/subset_map.rb +101 -0
  101. data/vendor/sass/lib/sass/version.rb +109 -0
  102. data/vendor/sass/rails/init.rb +1 -0
  103. data/vendor/sass/sass.gemspec +32 -0
  104. data/vendor/sass/test/sass/cache_test.rb +74 -0
  105. data/vendor/sass/test/sass/callbacks_test.rb +61 -0
  106. data/vendor/sass/test/sass/conversion_test.rb +1210 -0
  107. data/vendor/sass/test/sass/css2sass_test.rb +364 -0
  108. data/vendor/sass/test/sass/data/hsl-rgb.txt +319 -0
  109. data/vendor/sass/test/sass/engine_test.rb +2305 -0
  110. data/vendor/sass/test/sass/extend_test.rb +1348 -0
  111. data/vendor/sass/test/sass/functions_test.rb +565 -0
  112. data/vendor/sass/test/sass/importer_test.rb +104 -0
  113. data/vendor/sass/test/sass/less_conversion_test.rb +632 -0
  114. data/vendor/sass/test/sass/mock_importer.rb +49 -0
  115. data/vendor/sass/test/sass/more_results/more1.css +9 -0
  116. data/vendor/sass/test/sass/more_results/more1_with_line_comments.css +26 -0
  117. data/vendor/sass/test/sass/more_results/more_import.css +29 -0
  118. data/vendor/sass/test/sass/more_templates/_more_partial.sass +2 -0
  119. data/vendor/sass/test/sass/more_templates/more1.sass +23 -0
  120. data/vendor/sass/test/sass/more_templates/more_import.sass +11 -0
  121. data/vendor/sass/test/sass/plugin_test.rb +430 -0
  122. data/vendor/sass/test/sass/results/alt.css +4 -0
  123. data/vendor/sass/test/sass/results/basic.css +9 -0
  124. data/vendor/sass/test/sass/results/compact.css +5 -0
  125. data/vendor/sass/test/sass/results/complex.css +86 -0
  126. data/vendor/sass/test/sass/results/compressed.css +1 -0
  127. data/vendor/sass/test/sass/results/expanded.css +19 -0
  128. data/vendor/sass/test/sass/results/import.css +31 -0
  129. data/vendor/sass/test/sass/results/line_numbers.css +49 -0
  130. data/vendor/sass/test/sass/results/mixins.css +95 -0
  131. data/vendor/sass/test/sass/results/multiline.css +24 -0
  132. data/vendor/sass/test/sass/results/nested.css +22 -0
  133. data/vendor/sass/test/sass/results/options.css +1 -0
  134. data/vendor/sass/test/sass/results/parent_ref.css +13 -0
  135. data/vendor/sass/test/sass/results/script.css +16 -0
  136. data/vendor/sass/test/sass/results/scss_import.css +31 -0
  137. data/vendor/sass/test/sass/results/scss_importee.css +2 -0
  138. data/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
  139. data/vendor/sass/test/sass/results/subdir/subdir.css +3 -0
  140. data/vendor/sass/test/sass/results/units.css +11 -0
  141. data/vendor/sass/test/sass/results/warn.css +0 -0
  142. data/vendor/sass/test/sass/results/warn_imported.css +0 -0
  143. data/vendor/sass/test/sass/script_conversion_test.rb +254 -0
  144. data/vendor/sass/test/sass/script_test.rb +470 -0
  145. data/vendor/sass/test/sass/scss/css_test.rb +897 -0
  146. data/vendor/sass/test/sass/scss/rx_test.rb +156 -0
  147. data/vendor/sass/test/sass/scss/scss_test.rb +1088 -0
  148. data/vendor/sass/test/sass/scss/test_helper.rb +37 -0
  149. data/vendor/sass/test/sass/templates/_partial.sass +2 -0
  150. data/vendor/sass/test/sass/templates/alt.sass +16 -0
  151. data/vendor/sass/test/sass/templates/basic.sass +23 -0
  152. data/vendor/sass/test/sass/templates/bork1.sass +2 -0
  153. data/vendor/sass/test/sass/templates/bork2.sass +2 -0
  154. data/vendor/sass/test/sass/templates/bork3.sass +2 -0
  155. data/vendor/sass/test/sass/templates/bork4.sass +2 -0
  156. data/vendor/sass/test/sass/templates/compact.sass +17 -0
  157. data/vendor/sass/test/sass/templates/complex.sass +305 -0
  158. data/vendor/sass/test/sass/templates/compressed.sass +15 -0
  159. data/vendor/sass/test/sass/templates/expanded.sass +17 -0
  160. data/vendor/sass/test/sass/templates/import.sass +12 -0
  161. data/vendor/sass/test/sass/templates/importee.less +2 -0
  162. data/vendor/sass/test/sass/templates/importee.sass +19 -0
  163. data/vendor/sass/test/sass/templates/line_numbers.sass +13 -0
  164. data/vendor/sass/test/sass/templates/mixin_bork.sass +5 -0
  165. data/vendor/sass/test/sass/templates/mixins.sass +76 -0
  166. data/vendor/sass/test/sass/templates/multiline.sass +20 -0
  167. data/vendor/sass/test/sass/templates/nested.sass +25 -0
  168. data/vendor/sass/test/sass/templates/nested_bork1.sass +2 -0
  169. data/vendor/sass/test/sass/templates/nested_bork2.sass +2 -0
  170. data/vendor/sass/test/sass/templates/nested_bork3.sass +2 -0
  171. data/vendor/sass/test/sass/templates/nested_bork4.sass +2 -0
  172. data/vendor/sass/test/sass/templates/nested_mixin_bork.sass +6 -0
  173. data/vendor/sass/test/sass/templates/options.sass +2 -0
  174. data/vendor/sass/test/sass/templates/parent_ref.sass +25 -0
  175. data/vendor/sass/test/sass/templates/script.sass +101 -0
  176. data/vendor/sass/test/sass/templates/scss_import.scss +11 -0
  177. data/vendor/sass/test/sass/templates/scss_importee.scss +1 -0
  178. data/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  179. data/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
  180. data/vendor/sass/test/sass/templates/subdir/subdir.sass +6 -0
  181. data/vendor/sass/test/sass/templates/units.sass +11 -0
  182. data/vendor/sass/test/sass/templates/warn.sass +3 -0
  183. data/vendor/sass/test/sass/templates/warn_imported.sass +4 -0
  184. data/vendor/sass/test/sass/test_helper.rb +8 -0
  185. data/vendor/sass/test/sass/util/subset_map_test.rb +91 -0
  186. data/vendor/sass/test/sass/util_test.rb +275 -0
  187. data/vendor/sass/test/test_helper.rb +64 -0
  188. data/vendor/sass/vendor/fssm/LICENSE +20 -0
  189. data/vendor/sass/vendor/fssm/README.markdown +55 -0
  190. data/vendor/sass/vendor/fssm/Rakefile +59 -0
  191. data/vendor/sass/vendor/fssm/VERSION.yml +5 -0
  192. data/vendor/sass/vendor/fssm/example.rb +9 -0
  193. data/vendor/sass/vendor/fssm/fssm.gemspec +77 -0
  194. data/vendor/sass/vendor/fssm/lib/fssm.rb +33 -0
  195. data/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +36 -0
  196. data/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +26 -0
  197. data/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +25 -0
  198. data/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +131 -0
  199. data/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +26 -0
  200. data/vendor/sass/vendor/fssm/lib/fssm/path.rb +91 -0
  201. data/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +502 -0
  202. data/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +57 -0
  203. data/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +24 -0
  204. data/vendor/sass/vendor/fssm/lib/fssm/support.rb +63 -0
  205. data/vendor/sass/vendor/fssm/lib/fssm/tree.rb +176 -0
  206. data/vendor/sass/vendor/fssm/profile/prof-cache.rb +40 -0
  207. data/vendor/sass/vendor/fssm/profile/prof-fssm-pathname.html +1231 -0
  208. data/vendor/sass/vendor/fssm/profile/prof-pathname.rb +68 -0
  209. data/vendor/sass/vendor/fssm/profile/prof-plain-pathname.html +988 -0
  210. data/vendor/sass/vendor/fssm/profile/prof.html +2379 -0
  211. data/vendor/sass/vendor/fssm/spec/path_spec.rb +75 -0
  212. data/vendor/sass/vendor/fssm/spec/root/duck/quack.txt +0 -0
  213. data/vendor/sass/vendor/fssm/spec/root/file.css +0 -0
  214. data/vendor/sass/vendor/fssm/spec/root/file.rb +0 -0
  215. data/vendor/sass/vendor/fssm/spec/root/file.yml +0 -0
  216. data/vendor/sass/vendor/fssm/spec/root/moo/cow.txt +0 -0
  217. data/vendor/sass/vendor/fssm/spec/spec_helper.rb +14 -0
  218. data/vendor/sass/yard/callbacks.rb +29 -0
  219. data/vendor/sass/yard/default/fulldoc/html/css/common.sass +26 -0
  220. data/vendor/sass/yard/default/layout/html/footer.erb +12 -0
  221. data/vendor/sass/yard/inherited_hash.rb +41 -0
  222. metadata +219 -2
@@ -0,0 +1,363 @@
1
+ # ----- Utility Functions -----
2
+
3
+ def scope(path)
4
+ File.join(File.dirname(__FILE__), path)
5
+ end
6
+
7
+ # ----- Default: Testing ------
8
+
9
+ task :default => :test
10
+
11
+ require 'rake/testtask'
12
+
13
+ Rake::TestTask.new do |t|
14
+ t.libs << 'lib'
15
+ test_files = FileList[scope('test/**/*_test.rb')]
16
+ test_files.exclude(scope('test/rails/*'))
17
+ test_files.exclude(scope('test/plugins/*'))
18
+ t.test_files = test_files
19
+ t.verbose = true
20
+ end
21
+
22
+ # ----- Packaging -----
23
+
24
+ # Don't use Rake::GemPackageTast because we want prerequisites to run
25
+ # before we load the gemspec.
26
+ desc "Build all the packages."
27
+ task :package => [:revision_file, :submodules, :permissions] do
28
+ load scope('sass.gemspec')
29
+ Gem::Builder.new(SASS_GEMSPEC).build
30
+ pkg = "#{SASS_GEMSPEC.name}-#{SASS_GEMSPEC.version}"
31
+ mkdir_p "pkg"
32
+ verbose(true) {mv "#{pkg}.gem", "pkg/#{pkg}.gem"}
33
+
34
+ sh %{rm -f pkg/#{pkg}.tar.gz}
35
+ verbose(false) {SASS_GEMSPEC.files.each {|f| sh %{tar rf pkg/#{pkg}.tar #{f}}}}
36
+ sh %{gzip pkg/#{pkg}.tar}
37
+ end
38
+
39
+ task :permissions do
40
+ sh %{chmod -R a+rx bin}
41
+ sh %{chmod -R a+r .}
42
+ require 'shellwords'
43
+ Dir.glob('test/**/*_test.rb') do |file|
44
+ next if file =~ %r{^test/haml/spec/}
45
+ sh %{chmod a+rx #{file}}
46
+ end
47
+ end
48
+
49
+ task :revision_file do
50
+ require 'lib/sass'
51
+
52
+ release = Rake.application.top_level_tasks.include?('release') || File.exist?(scope('EDGE_GEM_VERSION'))
53
+ if Sass.version[:rev] && !release
54
+ File.open(scope('REVISION'), 'w') { |f| f.puts Sass.version[:rev] }
55
+ elsif release
56
+ File.open(scope('REVISION'), 'w') { |f| f.puts "(release)" }
57
+ else
58
+ File.open(scope('REVISION'), 'w') { |f| f.puts "(unknown)" }
59
+ end
60
+ end
61
+
62
+ # We also need to get rid of this file after packaging.
63
+ at_exit { File.delete(scope('REVISION')) rescue nil }
64
+
65
+ desc "Install Sass as a gem. Use SUDO=1 to install with sudo."
66
+ task :install => [:package] do
67
+ gem = RUBY_PLATFORM =~ /java/ ? 'jgem' : 'gem'
68
+ sh %{#{'sudo ' if ENV["SUDO"]}#{gem} install --no-ri pkg/sass-#{File.read(scope('VERSION')).strip}}
69
+ end
70
+
71
+ desc "Release a new Sass package to Rubyforge."
72
+ task :release => [:check_release, :package] do
73
+ name = File.read(scope("VERSION_NAME")).strip
74
+ version = File.read(scope("VERSION")).strip
75
+ sh %{rubyforge add_release sass sass "#{name} (v#{version})" pkg/sass-#{version}.gem}
76
+ sh %{rubyforge add_file sass sass "#{name} (v#{version})" pkg/sass-#{version}.tar.gz}
77
+ sh %{gem push pkg/sass-#{version}.gem}
78
+ end
79
+
80
+ # Ensures that the VERSION file has been updated for a new release.
81
+ task :check_release do
82
+ version = File.read(scope("VERSION")).strip
83
+ raise "There have been changes since current version (#{version})" if changed_since?(version)
84
+ raise "VERSION_NAME must not be 'Bleeding Edge'" if File.read(scope("VERSION_NAME")) == "Bleeding Edge"
85
+ end
86
+
87
+ # Reads a password from the command line.
88
+ #
89
+ # @param name [String] The prompt to use to read the password
90
+ def read_password(prompt)
91
+ require 'readline'
92
+ system "stty -echo"
93
+ Readline.readline("#{prompt}: ").strip
94
+ ensure
95
+ system "stty echo"
96
+ puts
97
+ end
98
+
99
+ # Returns whether or not the repository, or specific files,
100
+ # has/have changed since a given revision.
101
+ #
102
+ # @param rev [String] The revision to check against
103
+ # @param files [Array<String>] The files to check.
104
+ # If this is empty, checks the entire repository
105
+ def changed_since?(rev, *files)
106
+ IO.popen("git diff --exit-code #{rev} #{files.join(' ')}") {}
107
+ return !$?.success?
108
+ end
109
+
110
+ task :submodules do
111
+ if File.exist?(File.dirname(__FILE__) + "/.git")
112
+ sh %{git submodule sync}
113
+ sh %{git submodule update --init}
114
+ elsif !File.exist?(File.dirname(__FILE__) + "/vendor/fssm/lib")
115
+ warn <<WARN
116
+ WARNING: vendor/fssm doesn't exist, and this isn't a git repository so
117
+ I can't get it automatically!
118
+ WARN
119
+ end
120
+ end
121
+
122
+ task :release_edge do
123
+ ensure_git_cleanup do
124
+ puts "#{'=' * 50} Running rake release_edge"
125
+
126
+ sh %{git checkout edge-gem}
127
+ sh %{git reset --hard origin/edge-gem}
128
+ sh %{git merge origin/master}
129
+
130
+ unless edge_version = bump_edge_version
131
+ puts "master is already a prerelease version, no use building an edge gem"
132
+ next
133
+ end
134
+
135
+ File.open(scope('EDGE_GEM_VERSION'), 'w') {|f| f.puts(edge_version)}
136
+ sh %{git commit -m "Bump edge gem version to #{edge_version}." EDGE_GEM_VERSION}
137
+ sh %{git push origin edge-gem}
138
+
139
+ # Package the edge gem with the proper version
140
+ File.open(scope('VERSION'), 'w') {|f| f.puts(edge_version)}
141
+ sh %{rake package}
142
+ sh %{git checkout VERSION}
143
+
144
+ sh %{rubyforge add_release sass sass "Bleeding Edge (v#{edge_version})" pkg/sass-#{edge_version}.gem}
145
+ sh %{gem push pkg/sass-#{edge_version}.gem}
146
+ end
147
+ end
148
+
149
+ # Reads the master version and the edge gem version,
150
+ # bump the latter, and return it.
151
+ #
152
+ # Returns nil if the current master version is already a non-alpha prerelease.
153
+ def bump_edge_version
154
+ # Get the current master branch version
155
+ version = File.read(scope('VERSION')).strip.split('.')
156
+ version.map! {|n| n =~ /^[0-9]+$/ ? n.to_i : n}
157
+ unless version.size == 5 # prerelease
158
+ raise "master version #{version.join('.')} is not a prerelease version"
159
+ end
160
+
161
+ # Bump the edge gem version
162
+ edge_version = File.read(scope('EDGE_GEM_VERSION')).strip.split('.')
163
+ edge_version.map! {|n| n =~ /^[0-9]+$/ ? n.to_i : n}
164
+
165
+ if version[3] != "alpha"
166
+ return
167
+ elsif edge_version[0..2] != version[0..2]
168
+ # A new master branch version was released, reset the edge gem version
169
+ edge_version[0..2] = version[0..2]
170
+ edge_version[4] = 1
171
+ else
172
+ # Just bump the teeny version
173
+ edge_version[4] += 1
174
+ end
175
+
176
+ edge_version.join('.')
177
+ end
178
+
179
+ task :watch_for_update do
180
+ sh %{ruby extra/update_watch.rb}
181
+ end
182
+
183
+ # ----- Documentation -----
184
+
185
+ task :rdoc do
186
+ puts '=' * 100, <<END, '=' * 100
187
+ Sass uses the YARD documentation system (http://github.com/lsegal/yard).
188
+ Install the yard gem and then run "rake doc".
189
+ END
190
+ end
191
+
192
+ begin
193
+ require 'yard'
194
+
195
+ namespace :doc do
196
+ task :sass do
197
+ require scope('lib/sass')
198
+ Dir[scope("yard/default/**/*.sass")].each do |sass|
199
+ File.open(sass.gsub(/sass$/, 'css'), 'w') do |f|
200
+ f.write(Sass::Engine.new(File.read(sass)).render)
201
+ end
202
+ end
203
+ end
204
+
205
+ desc "List all undocumented methods and classes."
206
+ task :undocumented do
207
+ opts = ENV["YARD_OPTS"] || ""
208
+ ENV["YARD_OPTS"] = opts.dup + <<OPTS
209
+ --list --query "
210
+ object.docstring.blank? &&
211
+ !(object.type == :method && object.is_alias?)"
212
+ OPTS
213
+ Rake::Task['yard'].execute
214
+ end
215
+ end
216
+
217
+ YARD::Rake::YardocTask.new do |t|
218
+ t.files = FileList.new(scope('lib/**/*.rb')) do |list|
219
+ list.exclude('lib/sass/plugin/merb.rb')
220
+ list.exclude('lib/sass/plugin/rails.rb')
221
+ list.exclude('lib/sass/less.rb')
222
+ end.to_a
223
+ t.options << '--incremental' if Rake.application.top_level_tasks.include?('redoc')
224
+ t.options += FileList.new(scope('yard/*.rb')).to_a.map {|f| ['-e', f]}.flatten
225
+ files = FileList.new(scope('doc-src/*')).to_a.sort_by {|s| s.size} + %w[MIT-LICENSE VERSION]
226
+ t.options << '--files' << files.join(',')
227
+ t.options << '--template-path' << scope('yard')
228
+ t.options << '--title' << ENV["YARD_TITLE"] if ENV["YARD_TITLE"]
229
+
230
+ t.before = lambda do
231
+ if ENV["YARD_OPTS"]
232
+ require 'shellwords'
233
+ t.options.concat(Shellwords.shellwords(ENV["YARD_OPTS"]))
234
+ end
235
+ end
236
+ end
237
+ Rake::Task['yard'].prerequisites.insert(0, 'doc:sass')
238
+ Rake::Task['yard'].instance_variable_set('@comment', nil)
239
+
240
+ desc "Generate Documentation"
241
+ task :doc => :yard
242
+ task :redoc => :yard
243
+ rescue LoadError
244
+ desc "Generate Documentation"
245
+ task :doc => :rdoc
246
+ task :yard => :rdoc
247
+ end
248
+
249
+ task :pages do
250
+ ensure_git_cleanup do
251
+ puts "#{'=' * 50} Running rake pages"
252
+ sh %{git checkout sass-pages}
253
+ sh %{git reset --hard origin/sass-pages}
254
+
255
+ Dir.chdir("/var/www/sass-pages") do
256
+ sh %{git fetch origin}
257
+
258
+ sh %{git checkout stable}
259
+ sh %{git reset --hard origin/stable}
260
+
261
+ sh %{git checkout sass-pages}
262
+ sh %{git reset --hard origin/sass-pages}
263
+ sh %{rake build --trace}
264
+ sh %{mkdir -p tmp}
265
+ sh %{touch tmp/restart.txt}
266
+ end
267
+ end
268
+ end
269
+
270
+ # ----- Coverage -----
271
+
272
+ begin
273
+ require 'rcov/rcovtask'
274
+
275
+ Rcov::RcovTask.new do |t|
276
+ t.test_files = FileList[scope('test/**/*_test.rb')]
277
+ t.rcov_opts << '-x' << '"^\/"'
278
+ if ENV['NON_NATIVE']
279
+ t.rcov_opts << "--no-rcovrt"
280
+ end
281
+ t.verbose = true
282
+ end
283
+ rescue LoadError; end
284
+
285
+ # ----- Profiling -----
286
+
287
+ begin
288
+ require 'ruby-prof'
289
+
290
+ desc <<END
291
+ Run a profile of sass.
292
+ TIMES=n sets the number of runs. Defaults to 1000.
293
+ FILE=str sets the file to profile. Defaults to 'complex'.
294
+ OUTPUT=str sets the ruby-prof output format.
295
+ Can be Flat, CallInfo, or Graph. Defaults to Flat. Defaults to Flat.
296
+ END
297
+ task :profile do
298
+ times = (ENV['TIMES'] || '1000').to_i
299
+ file = ENV['FILE']
300
+
301
+ require 'lib/sass'
302
+
303
+ file = File.read(scope("test/sass/templates/#{file || 'complex'}.sass"))
304
+ result = RubyProf.profile { times.times { Sass::Engine.new(file).render } }
305
+
306
+ RubyProf.const_get("#{(ENV['OUTPUT'] || 'Flat').capitalize}Printer").new(result).print
307
+ end
308
+ rescue LoadError; end
309
+
310
+ # ----- Handling Updates -----
311
+
312
+ def email_on_error
313
+ yield
314
+ rescue Exception => e
315
+ IO.popen("sendmail nex342@gmail.com", "w") do |sm|
316
+ sm << "From: nex3@nex-3.com\n" <<
317
+ "To: nex342@gmail.com\n" <<
318
+ "Subject: Exception when running rake #{Rake.application.top_level_tasks.join(', ')}\n" <<
319
+ e.message << "\n\n" <<
320
+ e.backtrace.join("\n")
321
+ end
322
+ ensure
323
+ raise e if e
324
+ end
325
+
326
+ def ensure_git_cleanup
327
+ email_on_error {yield}
328
+ ensure
329
+ sh %{git reset --hard HEAD}
330
+ sh %{git clean -xdf}
331
+ sh %{git checkout master}
332
+ end
333
+
334
+ task :handle_update do
335
+ email_on_error do
336
+ unless ENV["REF"] =~ %r{^refs/heads/(master|stable|sass-pages)$}
337
+ puts "#{'=' * 20} Ignoring rake handle_update REF=#{ENV["REF"].inspect}"
338
+ next
339
+ end
340
+ branch = $1
341
+
342
+ puts
343
+ puts
344
+ puts '=' * 150
345
+ puts "Running rake handle_update REF=#{ENV["REF"].inspect}"
346
+
347
+ sh %{git fetch origin}
348
+ sh %{git checkout stable}
349
+ sh %{git reset --hard origin/stable}
350
+ sh %{git checkout master}
351
+ sh %{git reset --hard origin/master}
352
+
353
+ case branch
354
+ when "master"
355
+ sh %{rake release_edge --trace}
356
+ when "stable", "sass-pages"
357
+ sh %{rake pages --trace}
358
+ end
359
+
360
+ puts 'Done running handle_update'
361
+ puts '=' * 150
362
+ end
363
+ end
@@ -0,0 +1,39 @@
1
+ # -*- mode: org -*-
2
+ #+STARTUP: nofold
3
+
4
+ * Documentation
5
+ Redo tutorial?
6
+ Syntax highlighting?
7
+
8
+ * Code
9
+ Keep track of error offsets everywhere
10
+ Use this to show error location in messages
11
+ Just clean up SassScript syntax errors in general
12
+ Lexer errors in particular are icky
13
+ See in particular error changes made in c07b5c8
14
+ ** Sass
15
+ Benchmark the effects of storing the raw template in sassc
16
+ If it's expensive, overload RootNode dumping/loading to dup and set @template to nil
17
+ Then fall back on reading from actual file
18
+ Make Rack middleware the default for Rails and Merb versions that support it
19
+ CSS superset
20
+ Classes are mixins
21
+ Can refer to specific property values? Syntax?
22
+ Pull in Compass watcher stuff
23
+ Internationalization
24
+ Particularly word constituents in Regexps
25
+ Optimization
26
+ http://csstidy.sourceforge.net/
27
+ http://developer.yahoo.com/yui/compressor/
28
+ Also comma-folding identical rules where possible
29
+ Multiple levels
30
+ 0: No optimization
31
+ 1: Nothing that changes doc structure
32
+ No comma-folding
33
+ 2: Anything that keeps functionality identical to O2 (default)
34
+ 3: Assume order of rules doesn't matter
35
+ Comma-fold even if there are intervening rules that might interfere
36
+ CSS3
37
+ Add (optional) support for http://www.w3.org/TR/css3-values/#calc
38
+ Cross-unit arithmetic should compile into this
39
+ Should we use "mod" in Sass for consistency?
@@ -0,0 +1 @@
1
+ 3.1.0.alpha.0
@@ -0,0 +1 @@
1
+ Bleeding Edge
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../lib/sass'
4
+ require 'sass/exec'
5
+
6
+ warn <<END
7
+ DEPRECATION WARNING:
8
+ The css2sass tool is deprecated and will be removed in Sass 3.2.
9
+ Use the sass-convert tool instead.
10
+ END
11
+
12
+ opts = Sass::Exec::SassConvert.new(%w[--from css --to sass] + ARGV)
13
+ opts.parse!
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # The command line Sass parser.
3
+
4
+ require File.dirname(__FILE__) + '/../lib/sass'
5
+ require 'sass/exec'
6
+
7
+ opts = Sass::Exec::Sass.new(ARGV)
8
+ opts.parse!
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../lib/sass'
4
+ require 'sass/exec'
5
+
6
+ opts = Sass::Exec::SassConvert.new(ARGV)
7
+ opts.parse!
@@ -0,0 +1,35 @@
1
+ # Frequently Asked Questions
2
+
3
+ * Table of contents
4
+ {:toc}
5
+
6
+ ## Can I use a variable from my controller in my Sass file?
7
+ {#q-ruby-code}
8
+
9
+ No. Sass files aren't views.
10
+ They're compiled once into static CSS files,
11
+ then left along until they're changed and need to be compiled again.
12
+ Not only don't you want to be running a full request cycle
13
+ every time someone requests a stylesheet,
14
+ but it's not a great idea to put much logic in there anyway
15
+ due to how browsers handle them.
16
+
17
+ If you really need some sort of dynamic CSS,
18
+ you can define your own {Sass::Script::Functions Sass functions} using Ruby
19
+ that can access the database or other configuration.
20
+ *Be aware when doing this that Sass files are by default only compiled once
21
+ and then served statically.*
22
+
23
+ If you really, really need to compile Sass on each request,
24
+ first make sure you have adequate caching set up.
25
+ Then you can use {Sass::Engine} to render the code,
26
+ using the {file:SASS_REFERENCE.md#custom-option `:custom` option}
27
+ to pass in data that {Sass::Script::Functions::EvaluationContext#options can be accessed}
28
+ from your Sass functions.
29
+
30
+ # You still haven't answered my question!
31
+
32
+ Sorry! Try looking at the [Sass](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html) reference,
33
+ If you can't find an answer there,
34
+ feel free to ask in `#sass` on irc.freenode.net
35
+ or send an email to the [mailing list](http://groups.google.com/group/sass-lang).