haml 6.1.1 → 6.2.3
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/workflows/test.yml +2 -1
- data/CHANGELOG.md +38 -1
- data/FAQ.md +1 -1
- data/Gemfile +4 -0
- data/README.md +6 -6
- data/REFERENCE.md +39 -46
- data/Rakefile +3 -37
- data/haml.gemspec +3 -7
- data/lib/haml/attribute_builder.rb +124 -136
- data/lib/haml/attribute_compiler.rb +10 -5
- data/lib/haml/compiler/doctype_compiler.rb +8 -2
- data/lib/haml/rails_template.rb +10 -0
- data/lib/haml/util.rb +5 -4
- data/lib/haml/version.rb +1 -1
- metadata +6 -24
- data/ext/haml/extconf.rb +0 -10
- data/ext/haml/haml.c +0 -537
- data/ext/haml/hescape.c +0 -108
- data/ext/haml/hescape.h +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0e28e40ec5137482caae5c2fb466d21976027139b3f39d428035dbd35914774
|
4
|
+
data.tar.gz: c906550bd147f7e6a2961ebd07bc59fcc69b3433c454141cb2ae29e1ccd64e2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0583d8a879f6c7eda656d6c956a9e5573eedd5f94d14b28d378af85bbab73f220499b9c8021af0bad5946c95073cd1201d2d2765556e138696462bf2d28a4304'
|
7
|
+
data.tar.gz: 2847f03720469d3eaabcc689f628198569f668b1c87c70f67422c70ed1af25103998cc004a86d9f430d57fb12f88078ef2fa27d544dad69ad9df95cc9241bfdd
|
data/.github/workflows/test.yml
CHANGED
@@ -22,10 +22,11 @@ jobs:
|
|
22
22
|
- '2.7'
|
23
23
|
- '3.0'
|
24
24
|
- '3.1'
|
25
|
+
- '3.2'
|
25
26
|
- jruby
|
26
27
|
- truffleruby-head
|
27
28
|
steps:
|
28
|
-
- uses: actions/checkout@
|
29
|
+
- uses: actions/checkout@v3
|
29
30
|
- run: sudo apt-get update && sudo apt-get install -y nodejs libxslt-dev # nodejs for execjs, libxslt for TruffleRuby nokogiri
|
30
31
|
- name: Set up Ruby
|
31
32
|
uses: ruby/setup-ruby@v1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,34 @@
|
|
1
1
|
# Haml Changelog
|
2
2
|
|
3
|
+
## 6.2.3
|
4
|
+
|
5
|
+
* Resurrect RDFa doctype support [#1147](https://github.com/haml/haml/issues/1147)
|
6
|
+
|
7
|
+
## 6.2.2
|
8
|
+
|
9
|
+
* Allow adding custom attributes to `Haml::BOOLEAN_ATTRIBUTES` [#1148](https://github.com/haml/haml/issues/1148)
|
10
|
+
* Consider `aria-xxx: false` as a boolean attribute
|
11
|
+
|
12
|
+
## 6.2.1
|
13
|
+
|
14
|
+
* Fix v6.2.0's bug in rendering dynamic `aria` attributes [#1149](https://github.com/haml/haml/issues/1149)
|
15
|
+
|
16
|
+
## 6.2.0
|
17
|
+
|
18
|
+
* Drop the C extension [#1146](https://github.com/haml/haml/issues/1146)
|
19
|
+
|
20
|
+
## 6.1.4
|
21
|
+
|
22
|
+
* Let `Haml::Util.escape_html` use `ERB::Escape` if available [#1145](https://github.com/haml/haml/issues/1145)
|
23
|
+
|
24
|
+
## 6.1.3
|
25
|
+
|
26
|
+
* Add `Haml::RailsTemplate#default_format` for Turbo compatibility [#1144](https://github.com/haml/haml/issues/1144)
|
27
|
+
|
28
|
+
## 6.1.2
|
29
|
+
|
30
|
+
* Use the rails template path as `filename` [#1140](https://github.com/haml/haml/issues/1140)
|
31
|
+
|
3
32
|
## 6.1.1
|
4
33
|
|
5
34
|
* Fix an empty output of Ruby 3.1's Hash shorthand syntax [#1083](https://github.com/haml/haml/issues/1083)
|
@@ -100,6 +129,14 @@ Released on September 21, 2022
|
|
100
129
|
* Removed: `block_is_haml?`, `capture_haml`, `escape_once`, `find_and_preserve`, `flatten`, `haml_concat`,
|
101
130
|
`haml_indent`, `haml_tag`, `haml_tag_if`, `html_attrs`, `html_escape`, `init_haml_helpers`, `is_haml?`,
|
102
131
|
`list_of`, `non_haml`, `precede`, `succeed`, `surround`, `tab_down`, `tab_up`, `with_tabs`
|
132
|
+
* `:ruby` filter
|
133
|
+
* Removed: `haml_io`
|
134
|
+
* Alternatives to the removed helpers:
|
135
|
+
* Some simple ones could work by copying [the original definition](https://github.com/haml/haml/blob/v5.2.2/lib/haml/helpers.rb).
|
136
|
+
* For helpers generating general HTML tags, also consider using what your framework provides, e.g. Rails `content_tag`.
|
137
|
+
Same applies to `capture_haml`, e.g. Rails `capture`.
|
138
|
+
* Ones that rely on `Haml::Buffer` have no direct alternative by design. They existed at the cost of performance.
|
139
|
+
You need to define a helper, instantiate a String buffer in it, append stuff to it, and call it inside `=`.
|
103
140
|
* Only the following attributes and `aria`/`data` attributes are considered boolean attributes:
|
104
141
|
* `allowfullscreen`, `async`, `autobuffer`, `autofocus`, `autoplay`, `checked`, `controls`, `default`,
|
105
142
|
`defer`, `disabled`, `download`, `formnovalidate`, `hidden`, `inert`, `ismap`, `itemscope`, `loop`,
|
@@ -1424,7 +1461,7 @@ Haml 2.2 introduces a new syntax for attributes
|
|
1424
1461
|
based on the HTML syntax.
|
1425
1462
|
For example:
|
1426
1463
|
|
1427
|
-
%a(href="
|
1464
|
+
%a(href="https://haml.info" title="Haml's so cool!")
|
1428
1465
|
%img(src="/images/haml.png" alt="Haml")
|
1429
1466
|
|
1430
1467
|
There are two main reasons for this.
|
data/FAQ.md
CHANGED
@@ -141,7 +141,7 @@ For other plugins, a little searching will probably turn up a way to fix them as
|
|
141
141
|
|
142
142
|
## You still haven't answered my question!
|
143
143
|
|
144
|
-
Sorry! Try looking at the [Haml](
|
144
|
+
Sorry! Try looking at the [Haml](https://haml.info/docs/yardoc/file.REFERENCE.html) reference,
|
145
145
|
If you can't find an answer there,
|
146
146
|
feel free to ask in `#haml` on irc.freenode.net
|
147
147
|
or send an email to the [mailing list](http://groups.google.com/group/haml).
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# Haml
|
2
2
|
|
3
|
-
[](
|
3
|
+
[](https://rubygems.org/gems/haml)
|
4
4
|
[](https://github.com/haml/haml/actions/workflows/test.yml)
|
5
5
|
[](https://codeclimate.com/github/haml/haml)
|
6
|
-
[](https://inch-ci.org/github/haml/haml)
|
7
7
|
|
8
8
|
Haml is a templating engine for HTML. It's designed to make it both easier and
|
9
9
|
more pleasant to write HTML documents, by eliminating redundancy, reflecting the
|
@@ -31,7 +31,7 @@ to compile it to HTML. For more information on these commands, check out
|
|
31
31
|
haml --help
|
32
32
|
~~~
|
33
33
|
|
34
|
-
To use Haml programmatically, check out the [YARD documentation](
|
34
|
+
To use Haml programmatically, check out the [YARD documentation](https://haml.info/docs/yardoc/).
|
35
35
|
|
36
36
|
## Using Haml with Rails
|
37
37
|
|
@@ -120,7 +120,7 @@ output the result. You can even use control statements like `if` and `while`:
|
|
120
120
|
~~~
|
121
121
|
|
122
122
|
Haml provides far more tools than those presented here. Check out the [reference
|
123
|
-
documentation](
|
123
|
+
documentation](https://haml.info/docs/yardoc/file.REFERENCE.html)
|
124
124
|
for full details.
|
125
125
|
|
126
126
|
### Indentation
|
@@ -132,7 +132,7 @@ can't be mixed, and the same number of tabs or spaces must be used throughout.
|
|
132
132
|
## Contributing
|
133
133
|
|
134
134
|
Contributions are welcomed, but before you get started please read the
|
135
|
-
[guidelines](
|
135
|
+
[guidelines](https://haml.info/development.html#contributing).
|
136
136
|
|
137
137
|
After forking and then cloning the repo locally, install Bundler and then use it
|
138
138
|
to install the development gem dependencies:
|
@@ -182,7 +182,7 @@ but still consults on language issues.
|
|
182
182
|
[Natalie Weizenbaum](http://nex-3.com) was for many years the primary developer
|
183
183
|
and architect of the "modern" Ruby implementation of Haml.
|
184
184
|
|
185
|
-
[Norman Clarke](
|
185
|
+
[Norman Clarke](https://github.com/norman) was the primary maintainer of Haml from 2012 to 2016.
|
186
186
|
|
187
187
|
## License
|
188
188
|
|
data/REFERENCE.md
CHANGED
@@ -180,10 +180,10 @@ closing tags for any element.
|
|
180
180
|
|
181
181
|
### Attributes: `{}` or `()` {#attributes}
|
182
182
|
|
183
|
-
|
183
|
+
Braces represent a Ruby hash that is used for specifying the attributes of an
|
184
184
|
element. It is literally evaluated as a Ruby hash, so logic will work in it and
|
185
185
|
local variables may be used. Quote characters within the attribute will be
|
186
|
-
replaced
|
186
|
+
replaced with appropriate escape sequences. The hash is placed after the tag is
|
187
187
|
defined. For example:
|
188
188
|
|
189
189
|
%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"}
|
@@ -247,7 +247,7 @@ could render as either of:
|
|
247
247
|
#### HTML-style Attributes: `()`
|
248
248
|
|
249
249
|
Haml also supports a terser, less Ruby-specific attribute syntax based on HTML's
|
250
|
-
attributes. These are used with parentheses instead of
|
250
|
+
attributes. These are used with parentheses instead of braces, like so:
|
251
251
|
|
252
252
|
%html(xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en")
|
253
253
|
|
@@ -320,7 +320,7 @@ or using `true` and `false`:
|
|
320
320
|
%input(selected=true)
|
321
321
|
|
322
322
|
This feature works only for attributes that are included in
|
323
|
-
[`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](lib/haml/attribute_builder.rb),
|
323
|
+
[`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_builder.rb#L5),
|
324
324
|
as well as `data-` and `aria-` attributes.
|
325
325
|
|
326
326
|
%input{'data-hidden' => false}
|
@@ -360,7 +360,7 @@ will render as:
|
|
360
360
|
|
361
361
|
<a data-author-id='123' data-category='7' href='/posts'>Posts By Author</a>
|
362
362
|
|
363
|
-
Notice that the underscore in `author_id` was replaced
|
363
|
+
Notice that the underscore in `author_id` was replaced with a hyphen. If you wish
|
364
364
|
to suppress this behavior, you can set Haml's
|
365
365
|
{Haml::Options#hyphenate_data_attrs `:hyphenate_data_attrs` option} to `false`,
|
366
366
|
and the output will be rendered as:
|
@@ -992,7 +992,7 @@ most code but you may have errors with code like the following:
|
|
992
992
|
|
993
993
|
%span #{'{'}
|
994
994
|
|
995
|
-
This code will generate a syntax error, complaining about unbalanced
|
995
|
+
This code will generate a syntax error, complaining about unbalanced braces.
|
996
996
|
In cases like this, the recommended workaround is output the code as a Ruby
|
997
997
|
string to force Haml to parse the code with Ruby.
|
998
998
|
|
@@ -1093,7 +1093,7 @@ uses to implement many of its filters:
|
|
1093
1093
|
|
1094
1094
|
Tilt.prefer Tilt::RedCarpetTemplate
|
1095
1095
|
|
1096
|
-
See the [Tilt documentation](https://github.com/rtomayko/tilt
|
1096
|
+
See the [Tilt documentation](https://github.com/rtomayko/tilt) for
|
1097
1097
|
more info.
|
1098
1098
|
|
1099
1099
|
Haml comes with the following filters defined:
|
@@ -1145,7 +1145,7 @@ implemented using Tilt.
|
|
1145
1145
|
|
1146
1146
|
### `:maruku` {#maruku-filter}
|
1147
1147
|
|
1148
|
-
Parses the filtered text with [Maruku](https://github.com/
|
1148
|
+
Parses the filtered text with [Maruku](https://github.com/bhollis/maruku), which
|
1149
1149
|
has some non-standard extensions to Markdown.
|
1150
1150
|
|
1151
1151
|
As of Haml 4.0, this filter is defined in [Haml
|
@@ -1168,11 +1168,8 @@ HTML escape code for newlines, to preserve nice-looking output. See also
|
|
1168
1168
|
|
1169
1169
|
### `:ruby` {#ruby-filter}
|
1170
1170
|
|
1171
|
-
Parses the filtered text with the normal Ruby interpreter.
|
1172
|
-
|
1173
|
-
Not available if the {Haml::Options#suppress_eval `:suppress_eval`} option is
|
1174
|
-
set to true. The Ruby code is evaluated in the same context as the Haml
|
1175
|
-
template.
|
1171
|
+
Parses the filtered text with the normal Ruby interpreter.
|
1172
|
+
The Ruby code is evaluated in the same context as the Haml template.
|
1176
1173
|
|
1177
1174
|
### `:sass` {#sass-filter}
|
1178
1175
|
|
@@ -1203,40 +1200,36 @@ You can also define your own filters.
|
|
1203
1200
|
|
1204
1201
|
The simplest example of a filter might be something like:
|
1205
1202
|
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
[:static, text]
|
1203
|
+
class HelloFilter < Haml::Filters::Base
|
1204
|
+
def compile(_node)
|
1205
|
+
[:static, "hello world"]
|
1206
|
+
end
|
1207
|
+
end
|
1208
|
+
|
1209
|
+
Haml::Filters.registered[:hello] ||= HelloFilter
|
1210
|
+
|
1211
|
+
A more complex example:
|
1212
|
+
|
1213
|
+
class BetterFilter < Haml::Filters::Base
|
1214
|
+
def compile(node)
|
1215
|
+
temple = [:multi]
|
1216
|
+
temple << [:static, "hello "]
|
1217
|
+
temple << compile_text(node.value[:text])
|
1218
|
+
temple << [:static, " world"]
|
1219
|
+
temple
|
1220
|
+
end
|
1221
|
+
|
1222
|
+
private
|
1223
|
+
def compile_text(text)
|
1224
|
+
if ::Haml::Util.contains_interpolation?(text)
|
1225
|
+
[:dynamic, ::Haml::Util.unescape_interpolation(text)]
|
1226
|
+
else
|
1227
|
+
[:static, text]
|
1228
|
+
end
|
1229
|
+
end
|
1234
1230
|
end
|
1235
|
-
end
|
1236
|
-
end
|
1237
1231
|
|
1238
|
-
Haml::Filters.registered[:better] ||= BetterFilter
|
1239
|
-
```
|
1232
|
+
Haml::Filters.registered[:better] ||= BetterFilter
|
1240
1233
|
|
1241
1234
|
See {Haml::Filters} for examples.
|
1242
1235
|
|
@@ -1285,7 +1278,7 @@ can be wrapped over multiple lines,
|
|
1285
1278
|
as long as each line but the last ends in a comma
|
1286
1279
|
(see [Inserting Ruby](#inserting_ruby)).
|
1287
1280
|
|
1288
|
-
## Whitespace Preservation
|
1281
|
+
## Whitespace Preservation {#whitespace_preservation}
|
1289
1282
|
|
1290
1283
|
Sometimes you don't want Haml to indent all your text.
|
1291
1284
|
For example, tags like `pre` and `textarea` are whitespace-sensitive;
|
data/Rakefile
CHANGED
@@ -1,39 +1,5 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
-
|
3
|
-
#
|
4
|
-
# Prepend DevKit into compilation phase
|
5
|
-
#
|
6
|
-
if Gem.win_platform?
|
7
|
-
desc 'Activates DevKit'
|
8
|
-
task :devkit do
|
9
|
-
begin
|
10
|
-
require 'devkit'
|
11
|
-
rescue LoadError
|
12
|
-
abort 'Failed to load DevKit required for compilation'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
task compile: :devkit
|
16
|
-
end
|
17
|
-
|
18
2
|
require 'rake/testtask'
|
19
|
-
if /java/ === RUBY_PLATFORM
|
20
|
-
# require 'rake/javaextensiontask'
|
21
|
-
# Rake::JavaExtensionTask.new(:haml) do |ext|
|
22
|
-
# ext.ext_dir = 'ext/java'
|
23
|
-
# ext.lib_dir = 'lib/haml'
|
24
|
-
# end
|
25
|
-
|
26
|
-
task :compile do
|
27
|
-
# dummy for now
|
28
|
-
end
|
29
|
-
else
|
30
|
-
require 'rake/extensiontask'
|
31
|
-
Rake::ExtensionTask.new(:haml) do |ext|
|
32
|
-
ext.lib_dir = 'lib/haml'
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
Dir['benchmark/*.rake'].each { |b| import(b) }
|
37
3
|
|
38
4
|
Rake::TestTask.new do |t|
|
39
5
|
t.libs << 'lib' << 'test'
|
@@ -42,10 +8,10 @@ Rake::TestTask.new do |t|
|
|
42
8
|
t.test_files = files
|
43
9
|
t.verbose = true
|
44
10
|
end
|
45
|
-
task test
|
11
|
+
task :test
|
46
12
|
|
47
13
|
desc 'bench task for CI'
|
48
|
-
task bench
|
14
|
+
task :bench do
|
49
15
|
if ENV['SLIM_BENCH'] == '1'
|
50
16
|
cmd = %w[bundle exec ruby benchmark/slim/run-benchmarks.rb]
|
51
17
|
else
|
@@ -79,4 +45,4 @@ task(:doc => 'doc:sass') {sh "yard"}
|
|
79
45
|
desc "Generate documentation incrementally"
|
80
46
|
task(:redoc) {sh "yard -c"}
|
81
47
|
|
82
|
-
task default:
|
48
|
+
task default: :test
|
data/haml.gemspec
CHANGED
@@ -19,12 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
spec.extensions = ['ext/haml/extconf.rb']
|
26
|
-
spec.required_ruby_version = '>= 2.1.0'
|
27
|
-
end
|
22
|
+
spec.metadata = { 'rubygems_mfa_required' => 'true' }
|
23
|
+
|
24
|
+
spec.required_ruby_version = '>= 2.1.0'
|
28
25
|
|
29
26
|
spec.add_dependency 'temple', '>= 0.8.2'
|
30
27
|
spec.add_dependency 'thor'
|
@@ -39,7 +36,6 @@ Gem::Specification.new do |spec|
|
|
39
36
|
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
40
37
|
spec.add_development_dependency 'rails', '>= 4.0'
|
41
38
|
spec.add_development_dependency 'rake'
|
42
|
-
spec.add_development_dependency 'rake-compiler'
|
43
39
|
spec.add_development_dependency 'sass'
|
44
40
|
spec.add_development_dependency 'slim'
|
45
41
|
spec.add_development_dependency 'string_template'
|