haml 5.2.2 → 6.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/test.yml +13 -9
  4. data/.gitignore +16 -16
  5. data/.yardopts +0 -3
  6. data/CHANGELOG.md +63 -3
  7. data/Gemfile +18 -11
  8. data/MIT-LICENSE +1 -1
  9. data/README.md +17 -23
  10. data/REFERENCE.md +32 -145
  11. data/Rakefile +48 -81
  12. data/bin/bench +66 -0
  13. data/bin/console +11 -0
  14. data/bin/ruby +3 -0
  15. data/bin/setup +7 -0
  16. data/bin/stackprof +27 -0
  17. data/bin/test +24 -0
  18. data/exe/haml +6 -0
  19. data/ext/haml/extconf.rb +10 -0
  20. data/ext/haml/haml.c +537 -0
  21. data/ext/haml/hescape.c +108 -0
  22. data/ext/haml/hescape.h +20 -0
  23. data/haml.gemspec +39 -37
  24. data/lib/haml/ambles.rb +20 -0
  25. data/lib/haml/attribute_builder.rb +134 -179
  26. data/lib/haml/attribute_compiler.rb +85 -194
  27. data/lib/haml/attribute_parser.rb +92 -126
  28. data/lib/haml/cli.rb +154 -0
  29. data/lib/haml/compiler/children_compiler.rb +126 -0
  30. data/lib/haml/compiler/comment_compiler.rb +39 -0
  31. data/lib/haml/compiler/doctype_compiler.rb +46 -0
  32. data/lib/haml/compiler/script_compiler.rb +116 -0
  33. data/lib/haml/compiler/silent_script_compiler.rb +24 -0
  34. data/lib/haml/compiler/tag_compiler.rb +76 -0
  35. data/lib/haml/compiler.rb +63 -296
  36. data/lib/haml/dynamic_merger.rb +67 -0
  37. data/lib/haml/engine.rb +44 -227
  38. data/lib/haml/error.rb +5 -4
  39. data/lib/haml/escapable.rb +6 -70
  40. data/lib/haml/filters/base.rb +12 -0
  41. data/lib/haml/filters/cdata.rb +20 -0
  42. data/lib/haml/filters/coffee.rb +17 -0
  43. data/lib/haml/filters/css.rb +33 -0
  44. data/lib/haml/filters/erb.rb +10 -0
  45. data/lib/haml/filters/escaped.rb +22 -0
  46. data/lib/haml/filters/javascript.rb +33 -0
  47. data/lib/haml/filters/less.rb +20 -0
  48. data/lib/haml/filters/markdown.rb +11 -0
  49. data/lib/haml/filters/plain.rb +29 -0
  50. data/lib/haml/filters/preserve.rb +22 -0
  51. data/lib/haml/filters/ruby.rb +10 -0
  52. data/lib/haml/filters/sass.rb +15 -0
  53. data/lib/haml/filters/scss.rb +15 -0
  54. data/lib/haml/filters/text_base.rb +25 -0
  55. data/lib/haml/filters/tilt_base.rb +49 -0
  56. data/lib/haml/filters.rb +54 -378
  57. data/lib/haml/force_escapable.rb +29 -0
  58. data/lib/haml/helpers.rb +3 -697
  59. data/lib/haml/html.rb +22 -0
  60. data/lib/haml/identity.rb +13 -0
  61. data/lib/haml/object_ref.rb +35 -0
  62. data/lib/haml/parser.rb +157 -22
  63. data/lib/haml/rails_helpers.rb +53 -0
  64. data/lib/haml/rails_template.rb +55 -0
  65. data/lib/haml/railtie.rb +3 -46
  66. data/lib/haml/ruby_expression.rb +32 -0
  67. data/lib/haml/string_splitter.rb +140 -0
  68. data/lib/haml/template.rb +15 -34
  69. data/lib/haml/temple_line_counter.rb +2 -1
  70. data/lib/haml/util.rb +17 -15
  71. data/lib/haml/version.rb +1 -2
  72. data/lib/haml.rb +8 -20
  73. metadata +208 -54
  74. data/.gitmodules +0 -3
  75. data/TODO +0 -24
  76. data/benchmark.rb +0 -70
  77. data/bin/haml +0 -9
  78. data/lib/haml/.gitattributes +0 -1
  79. data/lib/haml/buffer.rb +0 -182
  80. data/lib/haml/exec.rb +0 -347
  81. data/lib/haml/generator.rb +0 -42
  82. data/lib/haml/helpers/action_view_extensions.rb +0 -60
  83. data/lib/haml/helpers/action_view_mods.rb +0 -132
  84. data/lib/haml/helpers/action_view_xss_mods.rb +0 -60
  85. data/lib/haml/helpers/safe_erubi_template.rb +0 -20
  86. data/lib/haml/helpers/safe_erubis_template.rb +0 -33
  87. data/lib/haml/helpers/xss_mods.rb +0 -114
  88. data/lib/haml/options.rb +0 -273
  89. data/lib/haml/plugin.rb +0 -54
  90. data/lib/haml/sass_rails_filter.rb +0 -47
  91. data/lib/haml/template/options.rb +0 -27
  92. data/lib/haml/temple_engine.rb +0 -124
  93. data/yard/default/.gitignore +0 -1
  94. data/yard/default/fulldoc/html/css/common.sass +0 -15
  95. data/yard/default/layout/html/footer.erb +0 -12
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: true
2
+ begin
3
+ require 'ripper'
4
+ rescue LoadError
5
+ end
6
+
7
+ module Haml
8
+ # Compile [:dynamic, "foo#{bar}"] to [:multi, [:static, 'foo'], [:dynamic, 'bar']]
9
+ class StringSplitter < Temple::Filter
10
+ if defined?(Ripper) && RUBY_VERSION >= "2.0.0" && Ripper.respond_to?(:lex)
11
+ class << self
12
+ # `code` param must be valid string literal
13
+ def compile(code)
14
+ [].tap do |exps|
15
+ tokens = Ripper.lex(code.strip)
16
+ tokens.pop while tokens.last && [:on_comment, :on_sp].include?(tokens.last[1])
17
+
18
+ if tokens.size < 2
19
+ raise(Haml::InternalError, "Expected token size >= 2 but got: #{tokens.size}")
20
+ end
21
+ compile_tokens!(exps, tokens)
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def strip_quotes!(tokens)
28
+ _, type, beg_str = tokens.shift
29
+ if type != :on_tstring_beg
30
+ raise(Haml::InternalError, "Expected :on_tstring_beg but got: #{type}")
31
+ end
32
+
33
+ _, type, end_str = tokens.pop
34
+ if type != :on_tstring_end
35
+ raise(Haml::InternalError, "Expected :on_tstring_end but got: #{type}")
36
+ end
37
+
38
+ [beg_str, end_str]
39
+ end
40
+
41
+ def compile_tokens!(exps, tokens)
42
+ beg_str, end_str = strip_quotes!(tokens)
43
+
44
+ until tokens.empty?
45
+ _, type, str = tokens.shift
46
+
47
+ case type
48
+ when :on_tstring_content
49
+ beg_str, end_str = escape_quotes(beg_str, end_str)
50
+ exps << [:static, eval("#{beg_str}#{str}#{end_str}").to_s]
51
+ when :on_embexpr_beg
52
+ embedded = shift_balanced_embexpr(tokens)
53
+ exps << [:dynamic, embedded] unless embedded.empty?
54
+ end
55
+ end
56
+ end
57
+
58
+ # Some quotes are split-unsafe. Replace such quotes with null characters.
59
+ def escape_quotes(beg_str, end_str)
60
+ case [beg_str[-1], end_str]
61
+ when ['(', ')'], ['[', ']'], ['{', '}']
62
+ [beg_str.sub(/.\z/) { "\0" }, "\0"]
63
+ else
64
+ [beg_str, end_str]
65
+ end
66
+ end
67
+
68
+ def shift_balanced_embexpr(tokens)
69
+ String.new.tap do |embedded|
70
+ embexpr_open = 1
71
+
72
+ until tokens.empty?
73
+ _, type, str = tokens.shift
74
+ case type
75
+ when :on_embexpr_beg
76
+ embexpr_open += 1
77
+ when :on_embexpr_end
78
+ embexpr_open -= 1
79
+ break if embexpr_open == 0
80
+ end
81
+
82
+ embedded << str
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ def on_dynamic(code)
89
+ return [:dynamic, code] unless string_literal?(code)
90
+ return [:dynamic, code] if code.include?("\n")
91
+
92
+ temple = [:multi]
93
+ StringSplitter.compile(code).each do |type, content|
94
+ case type
95
+ when :static
96
+ temple << [:static, content]
97
+ when :dynamic
98
+ temple << on_dynamic(content)
99
+ end
100
+ end
101
+ temple
102
+ end
103
+
104
+ private
105
+
106
+ def string_literal?(code)
107
+ return false if SyntaxChecker.syntax_error?(code)
108
+
109
+ type, instructions = Ripper.sexp(code)
110
+ return false if type != :program
111
+ return false if instructions.size > 1
112
+
113
+ type, _ = instructions.first
114
+ type == :string_literal
115
+ end
116
+
117
+ class SyntaxChecker < Ripper
118
+ class ParseError < StandardError; end
119
+
120
+ def self.syntax_error?(code)
121
+ self.new(code).parse
122
+ false
123
+ rescue ParseError
124
+ true
125
+ end
126
+
127
+ private
128
+
129
+ def on_parse_error(*)
130
+ raise ParseError
131
+ end
132
+ end
133
+ else
134
+ # Do nothing if ripper is unavailable
135
+ def call(ast)
136
+ ast
137
+ end
138
+ end
139
+ end
140
+ end
data/lib/haml/template.rb CHANGED
@@ -1,39 +1,20 @@
1
- # frozen_string_literal: true
2
-
3
- require 'haml/template/options'
4
- if defined?(ActiveSupport)
5
- ActiveSupport.on_load(:action_view) do
6
- require 'haml/helpers/action_view_mods'
7
- require 'haml/helpers/action_view_extensions'
8
- end
9
- else
10
- require 'haml/helpers/action_view_mods'
11
- require 'haml/helpers/action_view_extensions'
12
- end
13
- require 'haml/helpers/xss_mods'
14
- require 'haml/helpers/action_view_xss_mods'
1
+ # frozen_string_literal: false
2
+ require 'temple'
3
+ require 'haml/engine'
4
+ require 'haml/helpers'
15
5
 
16
6
  module Haml
17
- class TempleEngine
18
- def precompiled_method_return_value_with_haml_xss
19
- "::Haml::Util.html_safe(#{precompiled_method_return_value_without_haml_xss})"
7
+ Template = Temple::Templates::Tilt.create(
8
+ Haml::Engine,
9
+ register_as: [:haml, :haml],
10
+ )
11
+
12
+ module TemplateExtension
13
+ # Activate Haml::Helpers for tilt templates.
14
+ # https://github.com/judofyr/temple/blob/v0.7.6/lib/temple/mixins/template.rb#L7-L11
15
+ def compile(*)
16
+ "extend Haml::Helpers; #{super}"
20
17
  end
21
- alias_method :precompiled_method_return_value_without_haml_xss, :precompiled_method_return_value
22
- alias_method :precompiled_method_return_value, :precompiled_method_return_value_with_haml_xss
23
18
  end
24
-
25
- module Helpers
26
- include Haml::Helpers::XssMods
27
- end
28
-
29
- module Util
30
- undef :rails_xss_safe? if defined? rails_xss_safe?
31
- def rails_xss_safe?; true; end
32
- end
33
-
19
+ Template.send(:extend, TemplateExtension)
34
20
  end
35
-
36
-
37
- Haml::Template.options[:escape_html] = true
38
-
39
- require 'haml/plugin'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  module Haml
4
3
  # A module to count lines of expected code. This would be faster than actual code generation
5
4
  # and counting newlines in it.
@@ -22,6 +21,8 @@ module Haml
22
21
  end.reduce(:+)
23
22
  when :escape
24
23
  count_lines(args[1])
24
+ when :newline
25
+ 1
25
26
  else
26
27
  raise UnexpectedExpression.new("[HAML BUG] Unexpected Temple expression '#{type}' is given!")
27
28
  end
data/lib/haml/util.rb CHANGED
@@ -14,6 +14,22 @@ module Haml
14
14
  module Util
15
15
  extend self
16
16
 
17
+ begin
18
+ require 'haml/haml' # Haml::Util.escape_html
19
+ rescue LoadError
20
+ # For JRuby and Wasm, fallback to Ruby implementation when C extension is not available.
21
+ require 'cgi/escape'
22
+
23
+ def self.escape_html(html)
24
+ CGI.escapeHTML(html.to_s)
25
+ end
26
+ end
27
+
28
+ # TODO: Remove unescape_interpolation's workaround and get rid of `respond_to?`.
29
+ def self.escape_html_safe(html)
30
+ (html.respond_to?(:html_safe?) && html.html_safe?) ? html : escape_html(html)
31
+ end
32
+
17
33
  # Silence all output to STDERR within a block.
18
34
  #
19
35
  # @yield A block in which no output will be printed to STDERR
@@ -35,20 +51,6 @@ module Haml
35
51
  false
36
52
  end
37
53
 
38
- # Returns the given text, marked as being HTML-safe.
39
- # With older versions of the Rails XSS-safety mechanism,
40
- # this destructively modifies the HTML-safety of `text`.
41
- #
42
- # It only works if you are using ActiveSupport or the parameter `text`
43
- # implements the #html_safe method.
44
- #
45
- # @param text [String, nil]
46
- # @return [String, nil] `text`, marked as HTML-safe
47
- def html_safe(text)
48
- return unless text
49
- text.html_safe
50
- end
51
-
52
54
  # Checks that the encoding of a string is valid
53
55
  # and cleans up potential encoding gotchas like the UTF-8 BOM.
54
56
  # If it's not, yields an error string describing the invalid character
@@ -214,7 +216,7 @@ MSG
214
216
  end
215
217
  content = eval("\"#{interpolated}\"")
216
218
  content = "#{char}#{content}" if char == '@' || char == '$'
217
- content = "Haml::Helpers.html_escape((#{content}))" if escape_html
219
+ content = "Haml::Util.escape_html_safe((#{content}).to_s)" if escape_html
218
220
 
219
221
  res << "\#{#{content}}"
220
222
  end
data/lib/haml/version.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  module Haml
4
- VERSION = "5.2.2"
3
+ VERSION = '6.0.5'
5
4
  end
data/lib/haml.rb CHANGED
@@ -1,25 +1,13 @@
1
1
  # frozen_string_literal: true
2
-
2
+ require 'haml/engine'
3
+ require 'haml/error'
3
4
  require 'haml/version'
5
+ require 'haml/template'
4
6
 
5
- # The module that contains everything Haml-related:
6
- #
7
- # * {Haml::Parser} is Haml's parser.
8
- # * {Haml::Compiler} is Haml's compiler.
9
- # * {Haml::Engine} is the class used to render Haml within Ruby code.
10
- # * {Haml::Options} is where Haml's runtime options are defined.
11
- # * {Haml::Error} is raised when Haml encounters an error.
12
- #
13
- # Also see the {file:REFERENCE.md full Haml reference}.
14
- module Haml
15
-
16
- def self.init_rails(*args)
17
- # Maintain this as a no-op for any libraries that may be depending on the
18
- # previous definition here.
7
+ if File.basename($0) != 'haml'
8
+ begin
9
+ require 'rails'
10
+ require 'haml/railtie'
11
+ rescue LoadError
19
12
  end
20
-
21
13
  end
22
-
23
- require 'haml/util'
24
- require 'haml/engine'
25
- require 'haml/railtie' if defined?(Rails::Railtie)
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.2
4
+ version: 6.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natalie Weizenbaum
8
8
  - Hampton Catlin
9
9
  - Norman Clarke
10
10
  - Akira Matsuda
11
- autorequire:
12
- bindir: bin
11
+ - Takashi Kokubun
12
+ autorequire:
13
+ bindir: exe
13
14
  cert_chain: []
14
- date: 2021-07-27 00:00:00.000000000 Z
15
+ date: 2022-10-05 00:00:00.000000000 Z
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
17
18
  name: temple
@@ -19,14 +20,28 @@ dependencies:
19
20
  requirements:
20
21
  - - ">="
21
22
  - !ruby/object:Gem::Version
22
- version: 0.8.0
23
+ version: 0.8.2
23
24
  type: :runtime
24
25
  prerelease: false
25
26
  version_requirements: !ruby/object:Gem::Requirement
26
27
  requirements:
27
28
  - - ">="
28
29
  - !ruby/object:Gem::Version
29
- version: 0.8.0
30
+ version: 0.8.2
31
+ - !ruby/object:Gem::Dependency
32
+ name: thor
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
30
45
  - !ruby/object:Gem::Dependency
31
46
  name: tilt
32
47
  requirement: !ruby/object:Gem::Requirement
@@ -42,21 +57,77 @@ dependencies:
42
57
  - !ruby/object:Gem::Version
43
58
  version: '0'
44
59
  - !ruby/object:Gem::Dependency
45
- name: rails
60
+ name: benchmark_driver
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: bundler
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: coffee-script
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: erubi
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: haml
46
117
  requirement: !ruby/object:Gem::Requirement
47
118
  requirements:
48
119
  - - ">="
49
120
  - !ruby/object:Gem::Version
50
- version: 4.0.0
121
+ version: '5'
51
122
  type: :development
52
123
  prerelease: false
53
124
  version_requirements: !ruby/object:Gem::Requirement
54
125
  requirements:
55
126
  - - ">="
56
127
  - !ruby/object:Gem::Version
57
- version: 4.0.0
128
+ version: '5'
58
129
  - !ruby/object:Gem::Dependency
59
- name: rbench
130
+ name: less
60
131
  requirement: !ruby/object:Gem::Requirement
61
132
  requirements:
62
133
  - - ">="
@@ -70,7 +141,21 @@ dependencies:
70
141
  - !ruby/object:Gem::Version
71
142
  version: '0'
72
143
  - !ruby/object:Gem::Dependency
73
- name: minitest
144
+ name: minitest-reporters
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '1.1'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '1.1'
157
+ - !ruby/object:Gem::Dependency
158
+ name: rails
74
159
  requirement: !ruby/object:Gem::Requirement
75
160
  requirements:
76
161
  - - ">="
@@ -84,7 +169,63 @@ dependencies:
84
169
  - !ruby/object:Gem::Version
85
170
  version: '4.0'
86
171
  - !ruby/object:Gem::Dependency
87
- name: nokogiri
172
+ name: rake
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ - !ruby/object:Gem::Dependency
186
+ name: rake-compiler
187
+ requirement: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ type: :development
193
+ prerelease: false
194
+ version_requirements: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ - !ruby/object:Gem::Dependency
200
+ name: sass
201
+ requirement: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ type: :development
207
+ prerelease: false
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ - !ruby/object:Gem::Dependency
214
+ name: slim
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ version: '0'
220
+ type: :development
221
+ prerelease: false
222
+ version_requirements: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ version: '0'
227
+ - !ruby/object:Gem::Dependency
228
+ name: string_template
88
229
  requirement: !ruby/object:Gem::Requirement
89
230
  requirements:
90
231
  - - ">="
@@ -98,7 +239,7 @@ dependencies:
98
239
  - !ruby/object:Gem::Version
99
240
  version: '0'
100
241
  - !ruby/object:Gem::Dependency
101
- name: simplecov
242
+ name: unindent
102
243
  requirement: !ruby/object:Gem::Requirement
103
244
  requirements:
104
245
  - - ">="
@@ -111,23 +252,19 @@ dependencies:
111
252
  - - ">="
112
253
  - !ruby/object:Gem::Version
113
254
  version: '0'
114
- description: |
115
- Haml (HTML Abstraction Markup Language) is a layer on top of HTML or XML that's
116
- designed to express the structure of documents in a non-repetitive, elegant, and
117
- easy way by using indentation rather than closing tags and allowing Ruby to be
118
- embedded with ease. It was originally envisioned as a plugin for Ruby on Rails,
119
- but it can function as a stand-alone templating engine.
255
+ description: An elegant, structured (X)HTML/XML templating engine.
120
256
  email:
121
257
  - haml@googlegroups.com
122
258
  - ronnie@dio.jp
123
259
  executables:
124
260
  - haml
125
- extensions: []
261
+ extensions:
262
+ - ext/haml/extconf.rb
126
263
  extra_rdoc_files: []
127
264
  files:
265
+ - ".github/FUNDING.yml"
128
266
  - ".github/workflows/test.yml"
129
267
  - ".gitignore"
130
- - ".gitmodules"
131
268
  - ".yardopts"
132
269
  - CHANGELOG.md
133
270
  - FAQ.md
@@ -136,55 +273,72 @@ files:
136
273
  - README.md
137
274
  - REFERENCE.md
138
275
  - Rakefile
139
- - TODO
140
- - benchmark.rb
141
- - bin/haml
276
+ - bin/bench
277
+ - bin/console
278
+ - bin/ruby
279
+ - bin/setup
280
+ - bin/stackprof
281
+ - bin/test
282
+ - exe/haml
283
+ - ext/haml/extconf.rb
284
+ - ext/haml/haml.c
285
+ - ext/haml/hescape.c
286
+ - ext/haml/hescape.h
142
287
  - haml.gemspec
143
288
  - lib/haml.rb
144
- - lib/haml/.gitattributes
289
+ - lib/haml/ambles.rb
145
290
  - lib/haml/attribute_builder.rb
146
291
  - lib/haml/attribute_compiler.rb
147
292
  - lib/haml/attribute_parser.rb
148
- - lib/haml/buffer.rb
293
+ - lib/haml/cli.rb
149
294
  - lib/haml/compiler.rb
295
+ - lib/haml/compiler/children_compiler.rb
296
+ - lib/haml/compiler/comment_compiler.rb
297
+ - lib/haml/compiler/doctype_compiler.rb
298
+ - lib/haml/compiler/script_compiler.rb
299
+ - lib/haml/compiler/silent_script_compiler.rb
300
+ - lib/haml/compiler/tag_compiler.rb
301
+ - lib/haml/dynamic_merger.rb
150
302
  - lib/haml/engine.rb
151
303
  - lib/haml/error.rb
152
304
  - lib/haml/escapable.rb
153
- - lib/haml/exec.rb
154
305
  - lib/haml/filters.rb
155
- - lib/haml/generator.rb
306
+ - lib/haml/filters/base.rb
307
+ - lib/haml/filters/cdata.rb
308
+ - lib/haml/filters/coffee.rb
309
+ - lib/haml/filters/css.rb
310
+ - lib/haml/filters/erb.rb
311
+ - lib/haml/filters/escaped.rb
312
+ - lib/haml/filters/javascript.rb
313
+ - lib/haml/filters/less.rb
314
+ - lib/haml/filters/markdown.rb
315
+ - lib/haml/filters/plain.rb
316
+ - lib/haml/filters/preserve.rb
317
+ - lib/haml/filters/ruby.rb
318
+ - lib/haml/filters/sass.rb
319
+ - lib/haml/filters/scss.rb
320
+ - lib/haml/filters/text_base.rb
321
+ - lib/haml/filters/tilt_base.rb
322
+ - lib/haml/force_escapable.rb
156
323
  - lib/haml/helpers.rb
157
- - lib/haml/helpers/action_view_extensions.rb
158
- - lib/haml/helpers/action_view_mods.rb
159
- - lib/haml/helpers/action_view_xss_mods.rb
160
- - lib/haml/helpers/safe_erubi_template.rb
161
- - lib/haml/helpers/safe_erubis_template.rb
162
- - lib/haml/helpers/xss_mods.rb
163
- - lib/haml/options.rb
324
+ - lib/haml/html.rb
325
+ - lib/haml/identity.rb
326
+ - lib/haml/object_ref.rb
164
327
  - lib/haml/parser.rb
165
- - lib/haml/plugin.rb
328
+ - lib/haml/rails_helpers.rb
329
+ - lib/haml/rails_template.rb
166
330
  - lib/haml/railtie.rb
167
- - lib/haml/sass_rails_filter.rb
331
+ - lib/haml/ruby_expression.rb
332
+ - lib/haml/string_splitter.rb
168
333
  - lib/haml/template.rb
169
- - lib/haml/template/options.rb
170
- - lib/haml/temple_engine.rb
171
334
  - lib/haml/temple_line_counter.rb
172
335
  - lib/haml/util.rb
173
336
  - lib/haml/version.rb
174
- - yard/default/.gitignore
175
- - yard/default/fulldoc/html/css/common.sass
176
- - yard/default/layout/html/footer.erb
177
- homepage: http://haml.info/
337
+ homepage: https://haml.info
178
338
  licenses:
179
339
  - MIT
180
- metadata:
181
- bug_tracker_uri: https://github.com/haml/haml/issues
182
- changelog_uri: https://github.com/haml/haml/blob/main/CHANGELOG.md
183
- documentation_uri: http://haml.info/docs.html
184
- homepage_uri: http://haml.info
185
- mailing_list_uri: https://groups.google.com/forum/?fromgroups#!forum/haml
186
- source_code_uri: https://github.com/haml/haml
187
- post_install_message:
340
+ metadata: {}
341
+ post_install_message:
188
342
  rdoc_options: []
189
343
  require_paths:
190
344
  - lib
@@ -192,15 +346,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
346
  requirements:
193
347
  - - ">="
194
348
  - !ruby/object:Gem::Version
195
- version: 2.0.0
349
+ version: 2.1.0
196
350
  required_rubygems_version: !ruby/object:Gem::Requirement
197
351
  requirements:
198
352
  - - ">="
199
353
  - !ruby/object:Gem::Version
200
354
  version: '0'
201
355
  requirements: []
202
- rubygems_version: 3.1.4
203
- signing_key:
356
+ rubygems_version: 3.3.7
357
+ signing_key:
204
358
  specification_version: 4
205
359
  summary: An elegant, structured (X)HTML/XML templating engine.
206
360
  test_files: []
data/.gitmodules DELETED
@@ -1,3 +0,0 @@
1
- [submodule "test/haml-spec"]
2
- path = test/haml-spec
3
- url = git://github.com/haml/haml-spec.git