haml 5.1.2 → 6.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +3 -0
  3. data/.github/workflows/test.yml +35 -0
  4. data/.gitignore +16 -15
  5. data/.yardopts +0 -3
  6. data/CHANGELOG.md +137 -0
  7. data/Gemfile +18 -14
  8. data/MIT-LICENSE +1 -1
  9. data/README.md +5 -6
  10. data/REFERENCE.md +103 -150
  11. data/Rakefile +48 -88
  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 -36
  24. data/lib/haml/ambles.rb +20 -0
  25. data/lib/haml/attribute_builder.rb +139 -129
  26. data/lib/haml/attribute_compiler.rb +86 -182
  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 +155 -0
  30. data/lib/haml/compiler/comment_compiler.rb +51 -0
  31. data/lib/haml/compiler/doctype_compiler.rb +46 -0
  32. data/lib/haml/compiler/script_compiler.rb +114 -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 +48 -227
  38. data/lib/haml/error.rb +5 -4
  39. data/lib/haml/escape.rb +13 -0
  40. data/lib/haml/escape_any.rb +21 -0
  41. data/lib/haml/filters/base.rb +12 -0
  42. data/lib/haml/filters/cdata.rb +20 -0
  43. data/lib/haml/filters/coffee.rb +17 -0
  44. data/lib/haml/filters/css.rb +33 -0
  45. data/lib/haml/filters/erb.rb +10 -0
  46. data/lib/haml/filters/escaped.rb +22 -0
  47. data/lib/haml/filters/javascript.rb +33 -0
  48. data/lib/haml/filters/less.rb +20 -0
  49. data/lib/haml/filters/markdown.rb +11 -0
  50. data/lib/haml/filters/plain.rb +29 -0
  51. data/lib/haml/filters/preserve.rb +22 -0
  52. data/lib/haml/filters/ruby.rb +10 -0
  53. data/lib/haml/filters/sass.rb +15 -0
  54. data/lib/haml/filters/scss.rb +15 -0
  55. data/lib/haml/filters/text_base.rb +25 -0
  56. data/lib/haml/filters/tilt_base.rb +59 -0
  57. data/lib/haml/filters.rb +54 -378
  58. data/lib/haml/force_escape.rb +29 -0
  59. data/lib/haml/helpers.rb +3 -691
  60. data/lib/haml/html.rb +22 -0
  61. data/lib/haml/identity.rb +13 -0
  62. data/lib/haml/object_ref.rb +35 -0
  63. data/lib/haml/parser.rb +189 -26
  64. data/lib/haml/rails_helpers.rb +53 -0
  65. data/lib/haml/rails_template.rb +57 -0
  66. data/lib/haml/railtie.rb +3 -41
  67. data/lib/haml/ruby_expression.rb +32 -0
  68. data/lib/haml/string_splitter.rb +140 -0
  69. data/lib/haml/template.rb +15 -34
  70. data/lib/haml/temple_line_counter.rb +2 -1
  71. data/lib/haml/util.rb +19 -16
  72. data/lib/haml/version.rb +1 -2
  73. data/lib/haml/whitespace.rb +8 -0
  74. data/lib/haml.rb +8 -20
  75. metadata +222 -52
  76. data/.gitmodules +0 -3
  77. data/.travis.yml +0 -97
  78. data/TODO +0 -24
  79. data/benchmark.rb +0 -70
  80. data/bin/haml +0 -9
  81. data/lib/haml/.gitattributes +0 -1
  82. data/lib/haml/buffer.rb +0 -238
  83. data/lib/haml/escapable.rb +0 -50
  84. data/lib/haml/exec.rb +0 -347
  85. data/lib/haml/generator.rb +0 -42
  86. data/lib/haml/helpers/action_view_extensions.rb +0 -60
  87. data/lib/haml/helpers/action_view_mods.rb +0 -132
  88. data/lib/haml/helpers/action_view_xss_mods.rb +0 -60
  89. data/lib/haml/helpers/safe_erubi_template.rb +0 -20
  90. data/lib/haml/helpers/safe_erubis_template.rb +0 -33
  91. data/lib/haml/helpers/xss_mods.rb +0 -111
  92. data/lib/haml/options.rb +0 -273
  93. data/lib/haml/plugin.rb +0 -37
  94. data/lib/haml/sass_rails_filter.rb +0 -47
  95. data/lib/haml/template/options.rb +0 -27
  96. data/lib/haml/temple_engine.rb +0 -123
  97. data/yard/default/.gitignore +0 -1
  98. data/yard/default/fulldoc/html/css/common.sass +0 -15
  99. 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,23 @@ module Haml
14
14
  module Util
15
15
  extend self
16
16
 
17
+ # For JRuby, TruffleRuby, and Wasm, fallback to Ruby implementation.
18
+ if /java|wasm/ === RUBY_PLATFORM || RUBY_ENGINE == 'truffleruby'
19
+ require 'cgi/escape'
20
+
21
+ def self.escape_html(html)
22
+ CGI.escapeHTML(html.to_s)
23
+ end
24
+ else
25
+ require 'haml/haml' # Haml::Util.escape_html
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 = html.to_s
31
+ (html.respond_to?(:html_safe?) && html.html_safe?) ? html : escape_html(html)
32
+ end
33
+
17
34
  # Silence all output to STDERR within a block.
18
35
  #
19
36
  # @yield A block in which no output will be printed to STDERR
@@ -35,20 +52,6 @@ module Haml
35
52
  false
36
53
  end
37
54
 
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
55
  # Checks that the encoding of a string is valid
53
56
  # and cleans up potential encoding gotchas like the UTF-8 BOM.
54
57
  # If it's not, yields an error string describing the invalid character
@@ -213,8 +216,8 @@ MSG
213
216
  scan.scan(/\w+/)
214
217
  end
215
218
  content = eval("\"#{interpolated}\"")
216
- content.prepend(char) if char == '@' || char == '$'
217
- content = "Haml::Helpers.html_escape((#{content}))" if escape_html
219
+ content = "#{char}#{content}" if char == '@' || char == '$'
220
+ content = "Haml::Util.escape_html_safe((#{content}).to_s)" if escape_html
218
221
 
219
222
  res << "\#{#{content}}"
220
223
  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.1.2"
3
+ VERSION = '6.1.1'
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.1.2
4
+ version: 6.1.1
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: 2019-08-06 00:00:00.000000000 Z
15
+ date: 2022-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,35 @@ 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
46
75
  requirement: !ruby/object:Gem::Requirement
47
76
  requirements:
48
77
  - - ">="
49
78
  - !ruby/object:Gem::Version
50
- version: 4.0.0
79
+ version: '0'
51
80
  type: :development
52
81
  prerelease: false
53
82
  version_requirements: !ruby/object:Gem::Requirement
54
83
  requirements:
55
84
  - - ">="
56
85
  - !ruby/object:Gem::Version
57
- version: 4.0.0
86
+ version: '0'
58
87
  - !ruby/object:Gem::Dependency
59
- name: rbench
88
+ name: coffee-script
60
89
  requirement: !ruby/object:Gem::Requirement
61
90
  requirements:
62
91
  - - ">="
@@ -70,7 +99,63 @@ dependencies:
70
99
  - !ruby/object:Gem::Version
71
100
  version: '0'
72
101
  - !ruby/object:Gem::Dependency
73
- name: minitest
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
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,77 @@ 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
229
+ requirement: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - ">="
232
+ - !ruby/object:Gem::Version
233
+ version: '0'
234
+ type: :development
235
+ prerelease: false
236
+ version_requirements: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: '0'
241
+ - !ruby/object:Gem::Dependency
242
+ name: unindent
88
243
  requirement: !ruby/object:Gem::Requirement
89
244
  requirements:
90
245
  - - ">="
@@ -97,23 +252,19 @@ dependencies:
97
252
  - - ">="
98
253
  - !ruby/object:Gem::Version
99
254
  version: '0'
100
- description: |
101
- Haml (HTML Abstraction Markup Language) is a layer on top of HTML or XML that's
102
- designed to express the structure of documents in a non-repetitive, elegant, and
103
- easy way by using indentation rather than closing tags and allowing Ruby to be
104
- embedded with ease. It was originally envisioned as a plugin for Ruby on Rails,
105
- but it can function as a stand-alone templating engine.
255
+ description: An elegant, structured (X)HTML/XML templating engine.
106
256
  email:
107
257
  - haml@googlegroups.com
108
258
  - ronnie@dio.jp
109
259
  executables:
110
260
  - haml
111
- extensions: []
261
+ extensions:
262
+ - ext/haml/extconf.rb
112
263
  extra_rdoc_files: []
113
264
  files:
265
+ - ".github/FUNDING.yml"
266
+ - ".github/workflows/test.yml"
114
267
  - ".gitignore"
115
- - ".gitmodules"
116
- - ".travis.yml"
117
268
  - ".yardopts"
118
269
  - CHANGELOG.md
119
270
  - FAQ.md
@@ -122,54 +273,73 @@ files:
122
273
  - README.md
123
274
  - REFERENCE.md
124
275
  - Rakefile
125
- - TODO
126
- - benchmark.rb
127
- - 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
128
287
  - haml.gemspec
129
288
  - lib/haml.rb
130
- - lib/haml/.gitattributes
289
+ - lib/haml/ambles.rb
131
290
  - lib/haml/attribute_builder.rb
132
291
  - lib/haml/attribute_compiler.rb
133
292
  - lib/haml/attribute_parser.rb
134
- - lib/haml/buffer.rb
293
+ - lib/haml/cli.rb
135
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
136
302
  - lib/haml/engine.rb
137
303
  - lib/haml/error.rb
138
- - lib/haml/escapable.rb
139
- - lib/haml/exec.rb
304
+ - lib/haml/escape.rb
305
+ - lib/haml/escape_any.rb
140
306
  - lib/haml/filters.rb
141
- - lib/haml/generator.rb
307
+ - lib/haml/filters/base.rb
308
+ - lib/haml/filters/cdata.rb
309
+ - lib/haml/filters/coffee.rb
310
+ - lib/haml/filters/css.rb
311
+ - lib/haml/filters/erb.rb
312
+ - lib/haml/filters/escaped.rb
313
+ - lib/haml/filters/javascript.rb
314
+ - lib/haml/filters/less.rb
315
+ - lib/haml/filters/markdown.rb
316
+ - lib/haml/filters/plain.rb
317
+ - lib/haml/filters/preserve.rb
318
+ - lib/haml/filters/ruby.rb
319
+ - lib/haml/filters/sass.rb
320
+ - lib/haml/filters/scss.rb
321
+ - lib/haml/filters/text_base.rb
322
+ - lib/haml/filters/tilt_base.rb
323
+ - lib/haml/force_escape.rb
142
324
  - lib/haml/helpers.rb
143
- - lib/haml/helpers/action_view_extensions.rb
144
- - lib/haml/helpers/action_view_mods.rb
145
- - lib/haml/helpers/action_view_xss_mods.rb
146
- - lib/haml/helpers/safe_erubi_template.rb
147
- - lib/haml/helpers/safe_erubis_template.rb
148
- - lib/haml/helpers/xss_mods.rb
149
- - lib/haml/options.rb
325
+ - lib/haml/html.rb
326
+ - lib/haml/identity.rb
327
+ - lib/haml/object_ref.rb
150
328
  - lib/haml/parser.rb
151
- - lib/haml/plugin.rb
329
+ - lib/haml/rails_helpers.rb
330
+ - lib/haml/rails_template.rb
152
331
  - lib/haml/railtie.rb
153
- - lib/haml/sass_rails_filter.rb
332
+ - lib/haml/ruby_expression.rb
333
+ - lib/haml/string_splitter.rb
154
334
  - lib/haml/template.rb
155
- - lib/haml/template/options.rb
156
- - lib/haml/temple_engine.rb
157
335
  - lib/haml/temple_line_counter.rb
158
336
  - lib/haml/util.rb
159
337
  - lib/haml/version.rb
160
- - yard/default/.gitignore
161
- - yard/default/fulldoc/html/css/common.sass
162
- - yard/default/layout/html/footer.erb
163
- homepage: http://haml.info/
338
+ - lib/haml/whitespace.rb
339
+ homepage: https://haml.info
164
340
  licenses:
165
341
  - MIT
166
- metadata:
167
- bug_tracker_uri: https://github.com/haml/haml/issues
168
- changelog_uri: https://github.com/haml/haml/blob/master/CHANGELOG.md
169
- documentation_uri: http://haml.info/docs.html
170
- homepage_uri: http://haml.info
171
- mailing_list_uri: https://groups.google.com/forum/?fromgroups#!forum/haml
172
- source_code_uri: https://github.com/haml/haml
342
+ metadata: {}
173
343
  post_install_message:
174
344
  rdoc_options: []
175
345
  require_paths:
@@ -178,14 +348,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
348
  requirements:
179
349
  - - ">="
180
350
  - !ruby/object:Gem::Version
181
- version: 2.0.0
351
+ version: 2.1.0
182
352
  required_rubygems_version: !ruby/object:Gem::Requirement
183
353
  requirements:
184
354
  - - ">="
185
355
  - !ruby/object:Gem::Version
186
356
  version: '0'
187
357
  requirements: []
188
- rubygems_version: 3.0.3
358
+ rubygems_version: 3.4.0.dev
189
359
  signing_key:
190
360
  specification_version: 4
191
361
  summary: An elegant, structured (X)HTML/XML templating engine.