haml 5.2.2 → 6.3.0

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 +3 -0
  3. data/.github/workflows/test.yml +15 -15
  4. data/.gitignore +16 -16
  5. data/.yardopts +0 -3
  6. data/CHANGELOG.md +168 -4
  7. data/FAQ.md +1 -1
  8. data/Gemfile +21 -10
  9. data/MIT-LICENSE +1 -1
  10. data/README.md +22 -34
  11. data/REFERENCE.md +95 -159
  12. data/Rakefile +15 -82
  13. data/bin/bench +66 -0
  14. data/bin/console +11 -0
  15. data/bin/ruby +3 -0
  16. data/bin/setup +7 -0
  17. data/bin/stackprof +27 -0
  18. data/bin/test +24 -0
  19. data/exe/haml +6 -0
  20. data/haml.gemspec +34 -36
  21. data/lib/haml/ambles.rb +20 -0
  22. data/lib/haml/attribute_builder.rb +127 -184
  23. data/lib/haml/attribute_compiler.rb +90 -194
  24. data/lib/haml/attribute_parser.rb +92 -126
  25. data/lib/haml/cli.rb +154 -0
  26. data/lib/haml/compiler/children_compiler.rb +155 -0
  27. data/lib/haml/compiler/comment_compiler.rb +51 -0
  28. data/lib/haml/compiler/doctype_compiler.rb +52 -0
  29. data/lib/haml/compiler/script_compiler.rb +114 -0
  30. data/lib/haml/compiler/silent_script_compiler.rb +24 -0
  31. data/lib/haml/compiler/tag_compiler.rb +76 -0
  32. data/lib/haml/compiler.rb +63 -296
  33. data/lib/haml/dynamic_merger.rb +67 -0
  34. data/lib/haml/engine.rb +48 -227
  35. data/lib/haml/error.rb +5 -4
  36. data/lib/haml/escape.rb +13 -0
  37. data/lib/haml/escape_any.rb +21 -0
  38. data/lib/haml/filters/base.rb +12 -0
  39. data/lib/haml/filters/cdata.rb +20 -0
  40. data/lib/haml/filters/coffee.rb +17 -0
  41. data/lib/haml/filters/css.rb +33 -0
  42. data/lib/haml/filters/erb.rb +10 -0
  43. data/lib/haml/filters/escaped.rb +22 -0
  44. data/lib/haml/filters/javascript.rb +33 -0
  45. data/lib/haml/filters/less.rb +20 -0
  46. data/lib/haml/filters/markdown.rb +11 -0
  47. data/lib/haml/filters/plain.rb +29 -0
  48. data/lib/haml/filters/preserve.rb +22 -0
  49. data/lib/haml/filters/ruby.rb +10 -0
  50. data/lib/haml/filters/sass.rb +15 -0
  51. data/lib/haml/filters/scss.rb +15 -0
  52. data/lib/haml/filters/text_base.rb +25 -0
  53. data/lib/haml/filters/tilt_base.rb +59 -0
  54. data/lib/haml/filters.rb +54 -378
  55. data/lib/haml/force_escape.rb +29 -0
  56. data/lib/haml/helpers.rb +3 -697
  57. data/lib/haml/html.rb +22 -0
  58. data/lib/haml/identity.rb +13 -0
  59. data/lib/haml/object_ref.rb +35 -0
  60. data/lib/haml/parser.rb +158 -23
  61. data/lib/haml/rails_helpers.rb +53 -0
  62. data/lib/haml/rails_template.rb +62 -0
  63. data/lib/haml/railtie.rb +3 -46
  64. data/lib/haml/ruby_expression.rb +32 -0
  65. data/lib/haml/string_splitter.rb +140 -0
  66. data/lib/haml/template.rb +15 -34
  67. data/lib/haml/temple_line_counter.rb +2 -1
  68. data/lib/haml/util.rb +19 -15
  69. data/lib/haml/version.rb +1 -2
  70. data/lib/haml/whitespace.rb +8 -0
  71. data/lib/haml.rb +8 -20
  72. metadata +188 -50
  73. data/.gitmodules +0 -3
  74. data/TODO +0 -24
  75. data/benchmark.rb +0 -70
  76. data/bin/haml +0 -9
  77. data/lib/haml/.gitattributes +0 -1
  78. data/lib/haml/buffer.rb +0 -182
  79. data/lib/haml/escapable.rb +0 -77
  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,24 @@ module Haml
14
14
  module Util
15
15
  extend self
16
16
 
17
+ begin # Ruby 3.2+ or ERB 4+
18
+ require 'erb/escape'
19
+
20
+ define_singleton_method(:escape_html, ERB::Escape.instance_method(:html_escape))
21
+ rescue LoadError
22
+ require 'cgi/escape'
23
+
24
+ def self.escape_html(html)
25
+ CGI.escapeHTML(html.to_s)
26
+ end
27
+ end
28
+
29
+ # TODO: Remove unescape_interpolation's workaround and get rid of `respond_to?`.
30
+ def self.escape_html_safe(html)
31
+ html = html.to_s
32
+ (html.respond_to?(:html_safe?) && html.html_safe?) ? html : escape_html(html)
33
+ end
34
+
17
35
  # Silence all output to STDERR within a block.
18
36
  #
19
37
  # @yield A block in which no output will be printed to STDERR
@@ -35,20 +53,6 @@ module Haml
35
53
  false
36
54
  end
37
55
 
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
56
  # Checks that the encoding of a string is valid
53
57
  # and cleans up potential encoding gotchas like the UTF-8 BOM.
54
58
  # If it's not, yields an error string describing the invalid character
@@ -214,7 +218,7 @@ MSG
214
218
  end
215
219
  content = eval("\"#{interpolated}\"")
216
220
  content = "#{char}#{content}" if char == '@' || char == '$'
217
- content = "Haml::Helpers.html_escape((#{content}))" if escape_html
221
+ content = "Haml::Util.escape_html_safe((#{content}).to_s)" if escape_html
218
222
 
219
223
  res << "\#{#{content}}"
220
224
  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.3.0'
5
4
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ module Haml
3
+ class Whitespace < Temple::Filter
4
+ def on_whitespace
5
+ [:static, "\n"]
6
+ end
7
+ end
8
+ 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.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natalie Weizenbaum
8
8
  - Hampton Catlin
9
9
  - Norman Clarke
10
10
  - Akira Matsuda
11
+ - Takashi Kokubun
11
12
  autorequire:
12
- bindir: bin
13
+ bindir: exe
13
14
  cert_chain: []
14
- date: 2021-07-27 00:00:00.000000000 Z
15
+ date: 2023-12-10 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,49 @@ 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
46
89
  requirement: !ruby/object:Gem::Requirement
47
90
  requirements:
48
91
  - - ">="
49
92
  - !ruby/object:Gem::Version
50
- version: 4.0.0
93
+ version: '0'
51
94
  type: :development
52
95
  prerelease: false
53
96
  version_requirements: !ruby/object:Gem::Requirement
54
97
  requirements:
55
98
  - - ">="
56
99
  - !ruby/object:Gem::Version
57
- version: 4.0.0
100
+ version: '0'
58
101
  - !ruby/object:Gem::Dependency
59
- name: rbench
102
+ name: erubi
60
103
  requirement: !ruby/object:Gem::Requirement
61
104
  requirements:
62
105
  - - ">="
@@ -70,7 +113,49 @@ dependencies:
70
113
  - !ruby/object:Gem::Version
71
114
  version: '0'
72
115
  - !ruby/object:Gem::Dependency
73
- name: minitest
116
+ name: haml
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '5'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '5'
129
+ - !ruby/object:Gem::Dependency
130
+ name: less
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
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,49 @@ 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: sass
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: slim
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: string_template
88
215
  requirement: !ruby/object:Gem::Requirement
89
216
  requirements:
90
217
  - - ">="
@@ -98,7 +225,7 @@ dependencies:
98
225
  - !ruby/object:Gem::Version
99
226
  version: '0'
100
227
  - !ruby/object:Gem::Dependency
101
- name: simplecov
228
+ name: unindent
102
229
  requirement: !ruby/object:Gem::Requirement
103
230
  requirements:
104
231
  - - ">="
@@ -111,12 +238,7 @@ dependencies:
111
238
  - - ">="
112
239
  - !ruby/object:Gem::Version
113
240
  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.
241
+ description: An elegant, structured (X)HTML/XML templating engine.
120
242
  email:
121
243
  - haml@googlegroups.com
122
244
  - ronnie@dio.jp
@@ -125,9 +247,9 @@ executables:
125
247
  extensions: []
126
248
  extra_rdoc_files: []
127
249
  files:
250
+ - ".github/FUNDING.yml"
128
251
  - ".github/workflows/test.yml"
129
252
  - ".gitignore"
130
- - ".gitmodules"
131
253
  - ".yardopts"
132
254
  - CHANGELOG.md
133
255
  - FAQ.md
@@ -136,54 +258,70 @@ files:
136
258
  - README.md
137
259
  - REFERENCE.md
138
260
  - Rakefile
139
- - TODO
140
- - benchmark.rb
141
- - bin/haml
261
+ - bin/bench
262
+ - bin/console
263
+ - bin/ruby
264
+ - bin/setup
265
+ - bin/stackprof
266
+ - bin/test
267
+ - exe/haml
142
268
  - haml.gemspec
143
269
  - lib/haml.rb
144
- - lib/haml/.gitattributes
270
+ - lib/haml/ambles.rb
145
271
  - lib/haml/attribute_builder.rb
146
272
  - lib/haml/attribute_compiler.rb
147
273
  - lib/haml/attribute_parser.rb
148
- - lib/haml/buffer.rb
274
+ - lib/haml/cli.rb
149
275
  - lib/haml/compiler.rb
276
+ - lib/haml/compiler/children_compiler.rb
277
+ - lib/haml/compiler/comment_compiler.rb
278
+ - lib/haml/compiler/doctype_compiler.rb
279
+ - lib/haml/compiler/script_compiler.rb
280
+ - lib/haml/compiler/silent_script_compiler.rb
281
+ - lib/haml/compiler/tag_compiler.rb
282
+ - lib/haml/dynamic_merger.rb
150
283
  - lib/haml/engine.rb
151
284
  - lib/haml/error.rb
152
- - lib/haml/escapable.rb
153
- - lib/haml/exec.rb
285
+ - lib/haml/escape.rb
286
+ - lib/haml/escape_any.rb
154
287
  - lib/haml/filters.rb
155
- - lib/haml/generator.rb
288
+ - lib/haml/filters/base.rb
289
+ - lib/haml/filters/cdata.rb
290
+ - lib/haml/filters/coffee.rb
291
+ - lib/haml/filters/css.rb
292
+ - lib/haml/filters/erb.rb
293
+ - lib/haml/filters/escaped.rb
294
+ - lib/haml/filters/javascript.rb
295
+ - lib/haml/filters/less.rb
296
+ - lib/haml/filters/markdown.rb
297
+ - lib/haml/filters/plain.rb
298
+ - lib/haml/filters/preserve.rb
299
+ - lib/haml/filters/ruby.rb
300
+ - lib/haml/filters/sass.rb
301
+ - lib/haml/filters/scss.rb
302
+ - lib/haml/filters/text_base.rb
303
+ - lib/haml/filters/tilt_base.rb
304
+ - lib/haml/force_escape.rb
156
305
  - 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
306
+ - lib/haml/html.rb
307
+ - lib/haml/identity.rb
308
+ - lib/haml/object_ref.rb
164
309
  - lib/haml/parser.rb
165
- - lib/haml/plugin.rb
310
+ - lib/haml/rails_helpers.rb
311
+ - lib/haml/rails_template.rb
166
312
  - lib/haml/railtie.rb
167
- - lib/haml/sass_rails_filter.rb
313
+ - lib/haml/ruby_expression.rb
314
+ - lib/haml/string_splitter.rb
168
315
  - lib/haml/template.rb
169
- - lib/haml/template/options.rb
170
- - lib/haml/temple_engine.rb
171
316
  - lib/haml/temple_line_counter.rb
172
317
  - lib/haml/util.rb
173
318
  - 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/
319
+ - lib/haml/whitespace.rb
320
+ homepage: https://haml.info
178
321
  licenses:
179
322
  - MIT
180
323
  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
324
+ rubygems_mfa_required: 'true'
187
325
  post_install_message:
188
326
  rdoc_options: []
189
327
  require_paths:
@@ -192,14 +330,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
330
  requirements:
193
331
  - - ">="
194
332
  - !ruby/object:Gem::Version
195
- version: 2.0.0
333
+ version: 2.1.0
196
334
  required_rubygems_version: !ruby/object:Gem::Requirement
197
335
  requirements:
198
336
  - - ">="
199
337
  - !ruby/object:Gem::Version
200
338
  version: '0'
201
339
  requirements: []
202
- rubygems_version: 3.1.4
340
+ rubygems_version: 3.4.10
203
341
  signing_key:
204
342
  specification_version: 4
205
343
  summary: An elegant, structured (X)HTML/XML templating engine.
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