haml-edge 2.1.21 → 2.1.22
Sign up to get free protection for your applications and to get access to all the features.
- data/EDGE_GEM_VERSION +1 -1
- data/FAQ.md +142 -0
- data/{README.rdoc → README.md} +141 -141
- data/Rakefile +29 -17
- data/VERSION +1 -1
- data/lib/haml/buffer.rb +63 -27
- data/lib/haml/engine.rb +103 -80
- data/lib/haml/error.rb +7 -7
- data/lib/haml/exec.rb +80 -26
- data/lib/haml/filters.rb +106 -40
- data/lib/haml/helpers/action_view_extensions.rb +34 -39
- data/lib/haml/helpers/action_view_mods.rb +132 -139
- data/lib/haml/helpers.rb +207 -153
- data/lib/haml/html.rb +40 -21
- data/lib/haml/precompiler.rb +2 -0
- data/lib/haml/shared.rb +34 -3
- data/lib/haml/template/patch.rb +1 -1
- data/lib/haml/template/plugin.rb +0 -2
- data/lib/haml/template.rb +5 -0
- data/lib/haml/util.rb +136 -1
- data/lib/haml/version.rb +16 -4
- data/lib/haml.rb +502 -481
- data/lib/sass/css.rb +106 -68
- data/lib/sass/engine.rb +55 -22
- data/lib/sass/environment.rb +52 -21
- data/lib/sass/error.rb +23 -12
- data/lib/sass/files.rb +27 -0
- data/lib/sass/plugin/merb.rb +2 -2
- data/lib/sass/plugin/rails.rb +0 -2
- data/lib/sass/plugin.rb +32 -23
- data/lib/sass/repl.rb +7 -0
- data/lib/sass/script/bool.rb +9 -5
- data/lib/sass/script/color.rb +87 -1
- data/lib/sass/script/funcall.rb +23 -2
- data/lib/sass/script/functions.rb +93 -44
- data/lib/sass/script/lexer.rb +33 -3
- data/lib/sass/script/literal.rb +93 -1
- data/lib/sass/script/node.rb +14 -0
- data/lib/sass/script/number.rb +128 -4
- data/lib/sass/script/operation.rb +16 -1
- data/lib/sass/script/parser.rb +51 -21
- data/lib/sass/script/string.rb +7 -4
- data/lib/sass/script/unary_operation.rb +14 -1
- data/lib/sass/script/variable.rb +12 -1
- data/lib/sass/script.rb +26 -5
- data/lib/sass/tree/attr_node.rb +46 -9
- data/lib/sass/tree/comment_node.rb +41 -1
- data/lib/sass/tree/debug_node.rb +8 -0
- data/lib/sass/tree/directive_node.rb +20 -0
- data/lib/sass/tree/file_node.rb +12 -0
- data/lib/sass/tree/for_node.rb +15 -0
- data/lib/sass/tree/if_node.rb +22 -0
- data/lib/sass/tree/mixin_def_node.rb +12 -1
- data/lib/sass/tree/mixin_node.rb +13 -0
- data/lib/sass/tree/node.rb +136 -6
- data/lib/sass/tree/rule_node.rb +66 -7
- data/lib/sass/tree/variable_node.rb +10 -0
- data/lib/sass/tree/while_node.rb +11 -1
- data/lib/sass.rb +544 -534
- metadata +7 -6
- data/FAQ +0 -138
data/lib/haml/exec.rb
CHANGED
@@ -2,19 +2,18 @@ require 'optparse'
|
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
4
|
module Haml
|
5
|
-
# This module
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
# A class that encapsulates the executable code
|
11
|
-
# for all three executables.
|
12
|
-
class Generic # :nodoc:
|
5
|
+
# This module handles the various Haml executables (`haml`, `sass`, `css2sass`, etc).
|
6
|
+
module Exec
|
7
|
+
# An abstract class that encapsulates the executable code for all three executables.
|
8
|
+
class Generic
|
9
|
+
# @param args [Array<String>] The command-line arguments
|
13
10
|
def initialize(args)
|
14
11
|
@args = args
|
15
12
|
@options = {}
|
16
13
|
end
|
17
14
|
|
15
|
+
# Parses the command-line arguments and runs the executable.
|
16
|
+
# Calls `Kernel#exit` at the end, so it never returns.
|
18
17
|
def parse!
|
19
18
|
begin
|
20
19
|
@opts = OptionParser.new(&method(:set_opts))
|
@@ -32,12 +31,18 @@ module Haml
|
|
32
31
|
exit 0
|
33
32
|
end
|
34
33
|
|
34
|
+
# @return [String] A description of the executable
|
35
35
|
def to_s
|
36
36
|
@opts.to_s
|
37
37
|
end
|
38
38
|
|
39
39
|
protected
|
40
40
|
|
41
|
+
# Finds the line of the source template
|
42
|
+
# on which an exception was raised.
|
43
|
+
#
|
44
|
+
# @param exception [Exception] The exception
|
45
|
+
# @return [String] The line number
|
41
46
|
def get_line(exception)
|
42
47
|
# SyntaxErrors have weird line reporting
|
43
48
|
# when there's trailing whitespace,
|
@@ -46,8 +51,13 @@ module Haml
|
|
46
51
|
exception.backtrace[0].scan(/:(\d+)/).first.first
|
47
52
|
end
|
48
53
|
|
49
|
-
|
50
|
-
|
54
|
+
# Tells optparse how to parse the arguments
|
55
|
+
# available for all executables.
|
56
|
+
#
|
57
|
+
# This is meant to be overridden by subclasses
|
58
|
+
# so they can add their own options.
|
59
|
+
#
|
60
|
+
# @param opts [OptionParser]
|
51
61
|
def set_opts(opts)
|
52
62
|
opts.on('-s', '--stdin', :NONE, 'Read input from standard input instead of an input file') do
|
53
63
|
@options[:input] = $stdin
|
@@ -68,6 +78,12 @@ module Haml
|
|
68
78
|
end
|
69
79
|
end
|
70
80
|
|
81
|
+
# Processes the options set by the command-line arguments.
|
82
|
+
# In particular, sets `@options[:input]` and `@options[:output]`
|
83
|
+
# to appropriate IO streams.
|
84
|
+
#
|
85
|
+
# This is meant to be overridden by subclasses
|
86
|
+
# so they can run their respective programs.
|
71
87
|
def process_result
|
72
88
|
input, output = @options[:input], @options[:output]
|
73
89
|
input_file, output_file = if input
|
@@ -85,22 +101,32 @@ module Haml
|
|
85
101
|
@options[:input], @options[:output] = input, output
|
86
102
|
end
|
87
103
|
|
104
|
+
private
|
105
|
+
|
88
106
|
def open_file(filename, flag = 'r')
|
89
107
|
return if filename.nil?
|
90
108
|
File.open(filename, flag)
|
91
109
|
end
|
92
110
|
end
|
93
111
|
|
94
|
-
#
|
95
|
-
# specific to
|
96
|
-
class HamlSass < Generic
|
112
|
+
# An abstrac class that encapsulates the code
|
113
|
+
# specific to the `haml` and `sass` executables.
|
114
|
+
class HamlSass < Generic
|
115
|
+
# @param args [Array<String>] The command-line arguments
|
97
116
|
def initialize(args)
|
98
117
|
super
|
99
118
|
@options[:for_engine] = {}
|
100
119
|
end
|
101
120
|
|
102
|
-
|
121
|
+
protected
|
103
122
|
|
123
|
+
# Tells optparse how to parse the arguments
|
124
|
+
# available for the `haml` and `sass` executables.
|
125
|
+
#
|
126
|
+
# This is meant to be overridden by subclasses
|
127
|
+
# so they can add their own options.
|
128
|
+
#
|
129
|
+
# @param opts [OptionParser]
|
104
130
|
def set_opts(opts)
|
105
131
|
opts.banner = <<END
|
106
132
|
Usage: #{@name.downcase} [options] [INPUT] [OUTPUT]
|
@@ -155,6 +181,12 @@ END
|
|
155
181
|
super
|
156
182
|
end
|
157
183
|
|
184
|
+
# Processes the options set by the command-line arguments.
|
185
|
+
# In particular, sets `@options[:for_engine][:filename]` to the input filename
|
186
|
+
# and requires the appropriate file.
|
187
|
+
#
|
188
|
+
# This is meant to be overridden by subclasses
|
189
|
+
# so they can run their respective programs.
|
158
190
|
def process_result
|
159
191
|
super
|
160
192
|
@options[:for_engine][:filename] = @options[:filename] if @options[:filename]
|
@@ -162,15 +194,20 @@ END
|
|
162
194
|
end
|
163
195
|
end
|
164
196
|
|
165
|
-
#
|
166
|
-
|
167
|
-
|
197
|
+
# The `sass` executable.
|
198
|
+
class Sass < HamlSass
|
199
|
+
# @param args [Array<String>] The command-line arguments
|
168
200
|
def initialize(args)
|
169
201
|
super
|
170
202
|
@name = "Sass"
|
171
203
|
@options[:for_engine][:load_paths] = ['.'] + (ENV['SASSPATH'] || '').split(File::PATH_SEPARATOR)
|
172
204
|
end
|
173
205
|
|
206
|
+
protected
|
207
|
+
|
208
|
+
# Tells optparse how to parse the arguments.
|
209
|
+
#
|
210
|
+
# @param opts [OptionParser]
|
174
211
|
def set_opts(opts)
|
175
212
|
super
|
176
213
|
|
@@ -197,6 +234,8 @@ END
|
|
197
234
|
end
|
198
235
|
end
|
199
236
|
|
237
|
+
# Processes the options set by the command-line arguments,
|
238
|
+
# and runs the Sass compiler appropriately.
|
200
239
|
def process_result
|
201
240
|
if @options[:interactive]
|
202
241
|
require 'sass'
|
@@ -229,9 +268,9 @@ END
|
|
229
268
|
end
|
230
269
|
end
|
231
270
|
|
232
|
-
#
|
233
|
-
|
234
|
-
|
271
|
+
# The `haml` executable.
|
272
|
+
class Haml < HamlSass
|
273
|
+
# @param args [Array<String>] The command-line arguments
|
235
274
|
def initialize(args)
|
236
275
|
super
|
237
276
|
@name = "Haml"
|
@@ -239,6 +278,9 @@ END
|
|
239
278
|
@options[:load_paths] = []
|
240
279
|
end
|
241
280
|
|
281
|
+
# Tells optparse how to parse the arguments.
|
282
|
+
#
|
283
|
+
# @param opts [OptionParser]
|
242
284
|
def set_opts(opts)
|
243
285
|
super
|
244
286
|
|
@@ -270,6 +312,8 @@ END
|
|
270
312
|
end
|
271
313
|
end
|
272
314
|
|
315
|
+
# Processes the options set by the command-line arguments,
|
316
|
+
# and runs the Haml compiler appropriately.
|
273
317
|
def process_result
|
274
318
|
super
|
275
319
|
input = @options[:input]
|
@@ -309,9 +353,9 @@ END
|
|
309
353
|
end
|
310
354
|
end
|
311
355
|
|
312
|
-
#
|
313
|
-
|
314
|
-
|
356
|
+
# The `html2haml` executable.
|
357
|
+
class HTML2Haml < Generic
|
358
|
+
# @param args [Array<String>] The command-line arguments
|
315
359
|
def initialize(args)
|
316
360
|
super
|
317
361
|
|
@@ -326,6 +370,9 @@ END
|
|
326
370
|
end
|
327
371
|
end
|
328
372
|
|
373
|
+
# Tells optparse how to parse the arguments.
|
374
|
+
#
|
375
|
+
# @param opts [OptionParser]
|
329
376
|
def set_opts(opts)
|
330
377
|
opts.banner = <<END
|
331
378
|
Usage: html2haml [options] [INPUT] [OUTPUT]
|
@@ -350,6 +397,8 @@ END
|
|
350
397
|
super
|
351
398
|
end
|
352
399
|
|
400
|
+
# Processes the options set by the command-line arguments,
|
401
|
+
# and runs the HTML compiler appropriately.
|
353
402
|
def process_result
|
354
403
|
super
|
355
404
|
|
@@ -363,9 +412,9 @@ END
|
|
363
412
|
end
|
364
413
|
end
|
365
414
|
|
366
|
-
#
|
367
|
-
|
368
|
-
|
415
|
+
# The `css2sass` executable.
|
416
|
+
class CSS2Sass < Generic
|
417
|
+
# @param args [Array<String>] The command-line arguments
|
369
418
|
def initialize(args)
|
370
419
|
super
|
371
420
|
|
@@ -374,6 +423,9 @@ END
|
|
374
423
|
require 'sass/css'
|
375
424
|
end
|
376
425
|
|
426
|
+
# Tells optparse how to parse the arguments.
|
427
|
+
#
|
428
|
+
# @param opts [OptionParser]
|
377
429
|
def set_opts(opts)
|
378
430
|
opts.banner = <<END
|
379
431
|
Usage: css2sass [options] [INPUT] [OUTPUT]
|
@@ -390,6 +442,8 @@ END
|
|
390
442
|
super
|
391
443
|
end
|
392
444
|
|
445
|
+
# Processes the options set by the command-line arguments,
|
446
|
+
# and runs the CSS compiler appropriately.
|
393
447
|
def process_result
|
394
448
|
super
|
395
449
|
|
data/lib/haml/filters.rb
CHANGED
@@ -1,71 +1,98 @@
|
|
1
1
|
module Haml
|
2
|
-
# The module containing the default filters,
|
3
|
-
# as well as the base module,
|
4
|
-
#
|
2
|
+
# The module containing the default Haml filters,
|
3
|
+
# as well as the base module, {Haml::Filters::Base}.
|
4
|
+
#
|
5
|
+
# @see Haml::Filters::Base
|
5
6
|
module Filters
|
6
|
-
#
|
7
|
+
# @return [Hash<String, Haml::Filters::Base>] a hash of filter names to classes
|
7
8
|
def self.defined
|
8
9
|
@defined ||= {}
|
9
10
|
end
|
10
11
|
|
11
12
|
# The base module for Haml filters.
|
12
13
|
# User-defined filters should be modules including this module.
|
14
|
+
# The name of the filter is taken by downcasing the module name.
|
15
|
+
# For instance, if the module is named `FooBar`, the filter will be `:foobar`.
|
13
16
|
#
|
14
|
-
# A user-defined filter should override either
|
15
|
-
#
|
17
|
+
# A user-defined filter should override either \{#render} or {\#compile}.
|
18
|
+
# \{#render} is the most common.
|
16
19
|
# It takes a string, the filter source,
|
17
|
-
# and returns another string,
|
18
|
-
# the
|
19
|
-
# For example:
|
20
|
+
# and returns another string, the result of the filter.
|
21
|
+
# For example, the following will define a filter named `:sass`:
|
20
22
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
+
# module Haml::Filters::Sass
|
24
|
+
# include Haml::Filters::Base
|
23
25
|
#
|
24
|
-
#
|
25
|
-
#
|
26
|
+
# def render(text)
|
27
|
+
# ::Sass::Engine.new(text).render
|
28
|
+
# end
|
26
29
|
# end
|
27
|
-
# end
|
28
30
|
#
|
29
|
-
# For details on overriding #compile, see its documentation.
|
31
|
+
# For details on overriding \{#compile}, see its documentation.
|
30
32
|
#
|
33
|
+
# Note that filters overriding \{#render} automatically support `#{}`
|
34
|
+
# for interpolating Ruby code.
|
35
|
+
# Those overriding \{#compile} will need to add such support manually
|
36
|
+
# if it's desired.
|
31
37
|
module Base
|
32
|
-
|
38
|
+
# This method is automatically called when {Base} is included in a module.
|
39
|
+
# It automatically defines a filter
|
40
|
+
# with the downcased name of that module.
|
41
|
+
# For example, if the module is named `FooBar`, the filter will be `:foobar`.
|
42
|
+
#
|
43
|
+
# @param base [Module, Class] The module that this is included in
|
44
|
+
def self.included(base)
|
33
45
|
Filters.defined[base.name.split("::").last.downcase] = base
|
34
46
|
base.extend(base)
|
35
47
|
end
|
36
48
|
|
37
|
-
# Takes
|
38
|
-
# and returns the
|
49
|
+
# Takes the source text that should be passed to the filter
|
50
|
+
# and returns the result of running the filter on that string.
|
39
51
|
#
|
40
52
|
# This should be overridden in most individual filter modules
|
41
53
|
# to render text with the given filter.
|
42
|
-
# If compile is overridden, however, render doesn't need to be.
|
54
|
+
# If \{#compile} is overridden, however, \{#render} doesn't need to be.
|
55
|
+
#
|
56
|
+
# @param text [String] The source text for the filter to process
|
57
|
+
# @return [String] The filtered result
|
58
|
+
# @raise [Haml::Error] if it's not overridden
|
43
59
|
def render(text)
|
44
60
|
raise Error.new("#{self.inspect}#render not defined!")
|
45
61
|
end
|
46
62
|
|
47
|
-
# Same as render, but takes
|
48
|
-
# It's only safe to rely on options made available in Haml::Engine#
|
63
|
+
# Same as \{#render}, but takes a {Haml::Engine} options hash as well.
|
64
|
+
# It's only safe to rely on options made available in {Haml::Engine#options\_for\_buffer}.
|
65
|
+
#
|
66
|
+
# @see #render
|
67
|
+
# @param text [String] The source text for the filter to process
|
68
|
+
# @return [String] The filtered result
|
69
|
+
# @raise [Haml::Error] if it or \{#render} isn't overridden
|
49
70
|
def render_with_options(text, options)
|
50
71
|
render(text)
|
51
72
|
end
|
52
73
|
|
53
|
-
|
74
|
+
# Same as \{#compile}, but requires the necessary files first.
|
75
|
+
# *This is used by {Haml::Engine} and is not intended to be overridden or used elsewhere.*
|
76
|
+
#
|
77
|
+
# @see #compile
|
78
|
+
def internal_compile(*args)
|
54
79
|
resolve_lazy_requires
|
55
80
|
compile(*args)
|
56
81
|
end
|
57
82
|
|
58
|
-
#
|
59
|
-
# to the Haml evaluation context.
|
83
|
+
# This should be overridden when a filter needs to have access to the Haml evaluation context.
|
60
84
|
# Rather than applying a filter to a string at compile-time,
|
61
|
-
# compile uses the Haml::Precompiler instance to compile the string to Ruby code
|
85
|
+
# \{#compile} uses the {Haml::Precompiler} instance to compile the string to Ruby code
|
62
86
|
# that will be executed in the context of the active Haml template.
|
63
87
|
#
|
64
|
-
# Warning: the Haml::Precompiler interface is neither well-documented
|
88
|
+
# Warning: the {Haml::Precompiler} interface is neither well-documented
|
65
89
|
# nor guaranteed to be stable.
|
66
|
-
# If you want to make use of it,
|
67
|
-
# you'll probably need to look at the source code
|
90
|
+
# If you want to make use of it, you'll probably need to look at the source code
|
68
91
|
# and should test your filter when upgrading to new Haml versions.
|
92
|
+
#
|
93
|
+
# @param precompiler [Haml::Precompiler] The precompiler instance
|
94
|
+
# @param text [String] The text of the filter
|
95
|
+
# @raise [Haml::Error] if none of \{#compile}, \{#render}, and \{#render_with_options} are overridden
|
69
96
|
def compile(precompiler, text)
|
70
97
|
resolve_lazy_requires
|
71
98
|
filter = self
|
@@ -89,22 +116,22 @@ RUBY
|
|
89
116
|
end
|
90
117
|
end
|
91
118
|
|
92
|
-
# This becomes a class method of modules that include Base.
|
119
|
+
# This becomes a class method of modules that include {Base}.
|
93
120
|
# It allows the module to specify one or more Ruby files
|
94
121
|
# that Haml should try to require when compiling the filter.
|
95
122
|
#
|
96
|
-
# The first file specified is tried first,
|
97
|
-
# then the second, etc.
|
123
|
+
# The first file specified is tried first, then the second, etc.
|
98
124
|
# If none are found, the compilation throws an exception.
|
99
125
|
#
|
100
126
|
# For example:
|
101
127
|
#
|
102
|
-
#
|
103
|
-
#
|
128
|
+
# module Haml::Filters::Markdown
|
129
|
+
# lazy_require 'rdiscount', 'peg_markdown', 'maruku', 'bluecloth'
|
104
130
|
#
|
105
|
-
#
|
106
|
-
#
|
131
|
+
# ...
|
132
|
+
# end
|
107
133
|
#
|
134
|
+
# @param reqs [Array<String>] The requires to run
|
108
135
|
def lazy_require(*reqs)
|
109
136
|
@lazy_requires = reqs
|
110
137
|
end
|
@@ -139,23 +166,29 @@ RUBY
|
|
139
166
|
end
|
140
167
|
end
|
141
168
|
|
142
|
-
# :stopdoc:
|
143
|
-
|
144
169
|
begin
|
145
170
|
require 'rubygems'
|
146
171
|
rescue LoadError; end
|
147
172
|
|
148
173
|
module Haml
|
149
174
|
module Filters
|
175
|
+
# Does not parse the filtered text.
|
176
|
+
# This is useful for large blocks of text without HTML tags,
|
177
|
+
# when you don't want lines starting with `.` or `-`
|
178
|
+
# to be parsed.
|
150
179
|
module Plain
|
151
180
|
include Base
|
152
181
|
|
182
|
+
# @see Base#render
|
153
183
|
def render(text); text; end
|
154
184
|
end
|
155
185
|
|
186
|
+
# Surrounds the filtered text with `<script>` and CDATA tags.
|
187
|
+
# Useful for including inline Javascript.
|
156
188
|
module Javascript
|
157
189
|
include Base
|
158
190
|
|
191
|
+
# @see Base#render_with_options
|
159
192
|
def render_with_options(text, options)
|
160
193
|
<<END
|
161
194
|
<script type=#{options[:attr_wrapper]}text/javascript#{options[:attr_wrapper]}>
|
@@ -167,26 +200,37 @@ END
|
|
167
200
|
end
|
168
201
|
end
|
169
202
|
|
203
|
+
# Surrounds the filtered text with CDATA tags.
|
170
204
|
module Cdata
|
171
205
|
include Base
|
172
206
|
|
207
|
+
# @see Base#render
|
173
208
|
def render(text)
|
174
209
|
"<![CDATA[#{("\n" + text).rstrip.gsub("\n", "\n ")}\n]]>"
|
175
210
|
end
|
176
211
|
end
|
177
212
|
|
213
|
+
# Works the same as {Plain}, but HTML-escapes the text
|
214
|
+
# before placing it in the document.
|
178
215
|
module Escaped
|
179
216
|
include Base
|
180
217
|
|
218
|
+
# @see Base#render
|
181
219
|
def render(text)
|
182
220
|
Haml::Helpers.html_escape text
|
183
221
|
end
|
184
222
|
end
|
185
223
|
|
224
|
+
# Parses the filtered text with the normal Ruby interpreter.
|
225
|
+
# All output sent to `$stdout`, such as with `puts`,
|
226
|
+
# is output into the Haml document.
|
227
|
+
# Not available if the [`:suppress_eval`](../Haml.html#suppress-eval-option) option is set to true.
|
228
|
+
# The Ruby code is evaluated in the same context as the Haml template.
|
186
229
|
module Ruby
|
187
230
|
include Base
|
188
231
|
lazy_require 'stringio'
|
189
232
|
|
233
|
+
# @see Base#compile
|
190
234
|
def compile(precompiler, text)
|
191
235
|
return if precompiler.options[:suppress_eval]
|
192
236
|
precompiler.instance_eval do
|
@@ -201,27 +245,40 @@ END
|
|
201
245
|
end
|
202
246
|
end
|
203
247
|
|
248
|
+
# Inserts the filtered text into the template with whitespace preserved.
|
249
|
+
# `preserve`d blocks of text aren't indented,
|
250
|
+
# and newlines are replaced with the HTML escape code for newlines,
|
251
|
+
# to preserve nice-looking output.
|
252
|
+
#
|
253
|
+
# @see Haml::Helpers#preserve
|
204
254
|
module Preserve
|
205
255
|
include Base
|
206
256
|
|
257
|
+
# @see Base#render
|
207
258
|
def render(text)
|
208
259
|
Haml::Helpers.preserve text
|
209
260
|
end
|
210
261
|
end
|
211
262
|
|
263
|
+
# Parses the filtered text with {Sass} to produce CSS output.
|
212
264
|
module Sass
|
213
265
|
include Base
|
214
266
|
lazy_require 'sass/plugin'
|
215
267
|
|
268
|
+
# @see Base#render
|
216
269
|
def render(text)
|
217
270
|
::Sass::Engine.new(text, ::Sass::Plugin.engine_options).render
|
218
271
|
end
|
219
272
|
end
|
220
273
|
|
274
|
+
# Parses the filtered text with ERB, like an RHTML template.
|
275
|
+
# Not available if the [`:suppress_eval`](../Haml.html#suppress-eval-option) option is set to true.
|
276
|
+
# Embedded Ruby code is evaluated in the same context as the Haml template.
|
221
277
|
module ERB
|
222
278
|
include Base
|
223
279
|
lazy_require 'erb'
|
224
280
|
|
281
|
+
# @see Base#compile
|
225
282
|
def compile(precompiler, text)
|
226
283
|
return if precompiler.options[:suppress_eval]
|
227
284
|
src = ::ERB.new(text).src.sub(/^#coding:.*?\n/, '').
|
@@ -230,10 +287,13 @@ END
|
|
230
287
|
end
|
231
288
|
end
|
232
289
|
|
290
|
+
# Parses the filtered text with [Textile](http://www.textism.com/tools/textile).
|
291
|
+
# Only works if [RedCloth](http://redcloth.org) is installed.
|
233
292
|
module Textile
|
234
293
|
include Base
|
235
294
|
lazy_require 'redcloth'
|
236
295
|
|
296
|
+
# @see Base#render
|
237
297
|
def render(text)
|
238
298
|
::RedCloth.new(text).to_html(:textile)
|
239
299
|
end
|
@@ -241,11 +301,16 @@ END
|
|
241
301
|
RedCloth = Textile
|
242
302
|
Filters.defined['redcloth'] = RedCloth
|
243
303
|
|
244
|
-
#
|
304
|
+
# Parses the filtered text with [Markdown](http://daringfireball.net/projects/markdown).
|
305
|
+
# Only works if [RDiscount](http://github.com/rtomayko/rdiscount),
|
306
|
+
# [RPeg-Markdown](http://github.com/rtomayko/rpeg-markdown),
|
307
|
+
# [Maruku](http://maruku.rubyforge.org),
|
308
|
+
# or [BlueCloth](www.deveiate.org/projects/BlueCloth) are installed.
|
245
309
|
module Markdown
|
246
310
|
include Base
|
247
311
|
lazy_require 'rdiscount', 'peg_markdown', 'maruku', 'bluecloth'
|
248
312
|
|
313
|
+
# @see Base#render
|
249
314
|
def render(text)
|
250
315
|
engine = case @required
|
251
316
|
when 'rdiscount'
|
@@ -261,15 +326,16 @@ END
|
|
261
326
|
end
|
262
327
|
end
|
263
328
|
|
329
|
+
# Parses the filtered text with [Maruku](http://maruku.rubyforge.org),
|
330
|
+
# which has some non-standard extensions to Markdown.
|
264
331
|
module Maruku
|
265
332
|
include Base
|
266
333
|
lazy_require 'maruku'
|
267
334
|
|
335
|
+
# @see Base#render
|
268
336
|
def render(text)
|
269
337
|
::Maruku.new(text).to_html
|
270
338
|
end
|
271
339
|
end
|
272
340
|
end
|
273
341
|
end
|
274
|
-
|
275
|
-
# :startdoc:
|
@@ -1,45 +1,40 @@
|
|
1
1
|
require 'haml/helpers/action_view_mods'
|
2
2
|
|
3
|
-
|
4
|
-
module
|
5
|
-
module
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
controller.controller_name + " " + controller.action_name
|
37
|
-
end
|
38
|
-
|
39
|
-
# :stopdoc:
|
40
|
-
alias_method :generate_content_class_names, :page_class
|
41
|
-
# :startdoc:
|
3
|
+
module Haml
|
4
|
+
module Helpers
|
5
|
+
# This module contains various useful helper methods
|
6
|
+
# that either tie into ActionView or the rest of the ActionPack stack,
|
7
|
+
# or are only useful in that context.
|
8
|
+
# Thus, the methods defined here are only available
|
9
|
+
# if ActionView is installed.
|
10
|
+
module ActionViewExtensions
|
11
|
+
# Returns a value for the "class" attribute
|
12
|
+
# unique to this controller/action pair.
|
13
|
+
# This can be used to target styles specifically at this action or controller.
|
14
|
+
# For example, if the current action were `EntryController#show`,
|
15
|
+
#
|
16
|
+
# %div{:class => page_class} My Div
|
17
|
+
#
|
18
|
+
# would become
|
19
|
+
#
|
20
|
+
# <div class="entry show">My Div</div>
|
21
|
+
#
|
22
|
+
# Then, in a stylesheet (shown here as {Sass}),
|
23
|
+
# you could refer to this specific action:
|
24
|
+
#
|
25
|
+
# .entry.show
|
26
|
+
# :font-weight bold
|
27
|
+
#
|
28
|
+
# or to all actions in the entry controller:
|
29
|
+
#
|
30
|
+
# .entry
|
31
|
+
# :color #00f
|
32
|
+
#
|
33
|
+
# @return [String] The class name for the current page
|
34
|
+
def page_class
|
35
|
+
controller.controller_name + " " + controller.action_name
|
42
36
|
end
|
37
|
+
alias_method :generate_content_class_names, :page_class
|
43
38
|
end
|
44
39
|
end
|
45
40
|
end
|