haml 5.1.2 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +3 -0
- data/.github/workflows/test.yml +36 -0
- data/.gitignore +16 -15
- data/.yardopts +0 -3
- data/CHANGELOG.md +189 -1
- data/FAQ.md +1 -1
- data/Gemfile +20 -12
- data/MIT-LICENSE +1 -1
- data/README.md +10 -17
- data/REFERENCE.md +129 -164
- data/Rakefile +15 -89
- data/bin/bench +66 -0
- data/bin/console +11 -0
- data/bin/ruby +3 -0
- data/bin/setup +7 -0
- data/bin/stackprof +27 -0
- data/bin/test +24 -0
- data/exe/haml +6 -0
- data/haml.gemspec +34 -35
- data/lib/haml/ambles.rb +20 -0
- data/lib/haml/attribute_builder.rb +131 -133
- data/lib/haml/attribute_compiler.rb +91 -182
- data/lib/haml/attribute_parser.rb +92 -126
- data/lib/haml/cli.rb +154 -0
- data/lib/haml/compiler/children_compiler.rb +155 -0
- data/lib/haml/compiler/comment_compiler.rb +51 -0
- data/lib/haml/compiler/doctype_compiler.rb +52 -0
- data/lib/haml/compiler/script_compiler.rb +114 -0
- data/lib/haml/compiler/silent_script_compiler.rb +24 -0
- data/lib/haml/compiler/tag_compiler.rb +76 -0
- data/lib/haml/compiler.rb +63 -296
- data/lib/haml/dynamic_merger.rb +67 -0
- data/lib/haml/engine.rb +48 -227
- data/lib/haml/error.rb +5 -4
- data/lib/haml/escape.rb +13 -0
- data/lib/haml/escape_any.rb +21 -0
- data/lib/haml/filters/base.rb +12 -0
- data/lib/haml/filters/cdata.rb +20 -0
- data/lib/haml/filters/coffee.rb +17 -0
- data/lib/haml/filters/css.rb +33 -0
- data/lib/haml/filters/erb.rb +10 -0
- data/lib/haml/filters/escaped.rb +22 -0
- data/lib/haml/filters/javascript.rb +33 -0
- data/lib/haml/filters/less.rb +20 -0
- data/lib/haml/filters/markdown.rb +11 -0
- data/lib/haml/filters/plain.rb +29 -0
- data/lib/haml/filters/preserve.rb +22 -0
- data/lib/haml/filters/ruby.rb +10 -0
- data/lib/haml/filters/sass.rb +15 -0
- data/lib/haml/filters/scss.rb +15 -0
- data/lib/haml/filters/text_base.rb +25 -0
- data/lib/haml/filters/tilt_base.rb +59 -0
- data/lib/haml/filters.rb +54 -378
- data/lib/haml/force_escape.rb +29 -0
- data/lib/haml/helpers.rb +3 -691
- data/lib/haml/html.rb +22 -0
- data/lib/haml/identity.rb +13 -0
- data/lib/haml/object_ref.rb +35 -0
- data/lib/haml/parser.rb +190 -27
- data/lib/haml/rails_helpers.rb +53 -0
- data/lib/haml/rails_template.rb +62 -0
- data/lib/haml/railtie.rb +3 -41
- data/lib/haml/ruby_expression.rb +32 -0
- data/lib/haml/string_splitter.rb +140 -0
- data/lib/haml/template.rb +15 -34
- data/lib/haml/temple_line_counter.rb +2 -1
- data/lib/haml/util.rb +20 -16
- data/lib/haml/version.rb +1 -2
- data/lib/haml/whitespace.rb +8 -0
- data/lib/haml.rb +8 -20
- metadata +205 -53
- data/.gitmodules +0 -3
- data/.travis.yml +0 -97
- data/TODO +0 -24
- data/benchmark.rb +0 -70
- data/bin/haml +0 -9
- data/lib/haml/.gitattributes +0 -1
- data/lib/haml/buffer.rb +0 -238
- data/lib/haml/escapable.rb +0 -50
- data/lib/haml/exec.rb +0 -347
- data/lib/haml/generator.rb +0 -42
- data/lib/haml/helpers/action_view_extensions.rb +0 -60
- data/lib/haml/helpers/action_view_mods.rb +0 -132
- data/lib/haml/helpers/action_view_xss_mods.rb +0 -60
- data/lib/haml/helpers/safe_erubi_template.rb +0 -20
- data/lib/haml/helpers/safe_erubis_template.rb +0 -33
- data/lib/haml/helpers/xss_mods.rb +0 -111
- data/lib/haml/options.rb +0 -273
- data/lib/haml/plugin.rb +0 -37
- data/lib/haml/sass_rails_filter.rb +0 -47
- data/lib/haml/template/options.rb +0 -27
- data/lib/haml/temple_engine.rb +0 -123
- data/yard/default/.gitignore +0 -1
- data/yard/default/fulldoc/html/css/common.sass +0 -15
- 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:
|
2
|
-
|
3
|
-
require 'haml/
|
4
|
-
|
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
|
-
|
18
|
-
|
19
|
-
|
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
|
@@ -213,8 +217,8 @@ MSG
|
|
213
217
|
scan.scan(/\w+/)
|
214
218
|
end
|
215
219
|
content = eval("\"#{interpolated}\"")
|
216
|
-
content
|
217
|
-
content = "Haml::
|
220
|
+
content = "#{char}#{content}" if char == '@' || char == '$'
|
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
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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:
|
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
|
-
|
12
|
-
|
11
|
+
- Takashi Kokubun
|
12
|
+
autorequire:
|
13
|
+
bindir: exe
|
13
14
|
cert_chain: []
|
14
|
-
date:
|
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.
|
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.
|
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:
|
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:
|
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:
|
128
|
+
version: '5'
|
58
129
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
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:
|
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
|
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: unindent
|
88
229
|
requirement: !ruby/object:Gem::Requirement
|
89
230
|
requirements:
|
90
231
|
- - ">="
|
@@ -97,12 +238,7 @@ dependencies:
|
|
97
238
|
- - ">="
|
98
239
|
- !ruby/object:Gem::Version
|
99
240
|
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.
|
241
|
+
description: An elegant, structured (X)HTML/XML templating engine.
|
106
242
|
email:
|
107
243
|
- haml@googlegroups.com
|
108
244
|
- ronnie@dio.jp
|
@@ -111,9 +247,9 @@ executables:
|
|
111
247
|
extensions: []
|
112
248
|
extra_rdoc_files: []
|
113
249
|
files:
|
250
|
+
- ".github/FUNDING.yml"
|
251
|
+
- ".github/workflows/test.yml"
|
114
252
|
- ".gitignore"
|
115
|
-
- ".gitmodules"
|
116
|
-
- ".travis.yml"
|
117
253
|
- ".yardopts"
|
118
254
|
- CHANGELOG.md
|
119
255
|
- FAQ.md
|
@@ -122,55 +258,71 @@ files:
|
|
122
258
|
- README.md
|
123
259
|
- REFERENCE.md
|
124
260
|
- Rakefile
|
125
|
-
-
|
126
|
-
-
|
127
|
-
- bin/
|
261
|
+
- bin/bench
|
262
|
+
- bin/console
|
263
|
+
- bin/ruby
|
264
|
+
- bin/setup
|
265
|
+
- bin/stackprof
|
266
|
+
- bin/test
|
267
|
+
- exe/haml
|
128
268
|
- haml.gemspec
|
129
269
|
- lib/haml.rb
|
130
|
-
- lib/haml
|
270
|
+
- lib/haml/ambles.rb
|
131
271
|
- lib/haml/attribute_builder.rb
|
132
272
|
- lib/haml/attribute_compiler.rb
|
133
273
|
- lib/haml/attribute_parser.rb
|
134
|
-
- lib/haml/
|
274
|
+
- lib/haml/cli.rb
|
135
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
|
136
283
|
- lib/haml/engine.rb
|
137
284
|
- lib/haml/error.rb
|
138
|
-
- lib/haml/
|
139
|
-
- lib/haml/
|
285
|
+
- lib/haml/escape.rb
|
286
|
+
- lib/haml/escape_any.rb
|
140
287
|
- lib/haml/filters.rb
|
141
|
-
- lib/haml/
|
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
|
142
305
|
- lib/haml/helpers.rb
|
143
|
-
- lib/haml/
|
144
|
-
- lib/haml/
|
145
|
-
- lib/haml/
|
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
|
306
|
+
- lib/haml/html.rb
|
307
|
+
- lib/haml/identity.rb
|
308
|
+
- lib/haml/object_ref.rb
|
150
309
|
- lib/haml/parser.rb
|
151
|
-
- lib/haml/
|
310
|
+
- lib/haml/rails_helpers.rb
|
311
|
+
- lib/haml/rails_template.rb
|
152
312
|
- lib/haml/railtie.rb
|
153
|
-
- lib/haml/
|
313
|
+
- lib/haml/ruby_expression.rb
|
314
|
+
- lib/haml/string_splitter.rb
|
154
315
|
- lib/haml/template.rb
|
155
|
-
- lib/haml/template/options.rb
|
156
|
-
- lib/haml/temple_engine.rb
|
157
316
|
- lib/haml/temple_line_counter.rb
|
158
317
|
- lib/haml/util.rb
|
159
318
|
- lib/haml/version.rb
|
160
|
-
-
|
161
|
-
|
162
|
-
- yard/default/layout/html/footer.erb
|
163
|
-
homepage: http://haml.info/
|
319
|
+
- lib/haml/whitespace.rb
|
320
|
+
homepage: https://haml.info
|
164
321
|
licenses:
|
165
322
|
- MIT
|
166
323
|
metadata:
|
167
|
-
|
168
|
-
|
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
|
173
|
-
post_install_message:
|
324
|
+
rubygems_mfa_required: 'true'
|
325
|
+
post_install_message:
|
174
326
|
rdoc_options: []
|
175
327
|
require_paths:
|
176
328
|
- lib
|
@@ -178,15 +330,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
178
330
|
requirements:
|
179
331
|
- - ">="
|
180
332
|
- !ruby/object:Gem::Version
|
181
|
-
version: 2.
|
333
|
+
version: 2.1.0
|
182
334
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
335
|
requirements:
|
184
336
|
- - ">="
|
185
337
|
- !ruby/object:Gem::Version
|
186
338
|
version: '0'
|
187
339
|
requirements: []
|
188
|
-
rubygems_version: 3.
|
189
|
-
signing_key:
|
340
|
+
rubygems_version: 3.4.10
|
341
|
+
signing_key:
|
190
342
|
specification_version: 4
|
191
343
|
summary: An elegant, structured (X)HTML/XML templating engine.
|
192
344
|
test_files: []
|
data/.gitmodules
DELETED