haml 6.0.4 → 6.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31325683e3bd7edbd6ec19bf99be81bde203ea948059cec704ac260528d6ff8a
4
- data.tar.gz: 053cbe5fb763691b4fcedd4a8c15649e31dea757a0c7f25366849ae49941e840
3
+ metadata.gz: 686b38a185b57f5b0ce392e06047aa1cadff2b54a0416d1a25b88d9c6d2675d5
4
+ data.tar.gz: 77abae61a0ca3eb4d42e30e15d3dad08781f4d0566f4565ddf40ff6609370e00
5
5
  SHA512:
6
- metadata.gz: e480bd4afab654ef3ffdc122cb81c78ca773ca5715310dd876a095491b574722a6b574ae685affb41d5d34eca2465bae737eb3496e3a9bf41df55cdbc74261ac
7
- data.tar.gz: 9d6c05804e701bca33709a441fdb815f779143a66ad5664f22c8b15583415b198a07044682ed78fb22f653533b26fa5f8ee5d8f96cc4026478ec32796cc99f59
6
+ metadata.gz: d392228708c2754f52dd073839a3b13d3fd4954a04cb11547c016d3a4ee4b792ef3242328df691d834515a94a500c63b5812d017be23805a5c0a6c40e818a60b
7
+ data.tar.gz: 82262e5e10fd2392a91034ab57621e8c80cd9156be99964642403687f2c6f6409154b7dd7b1ed12a68b9fc3809058a3284ef6bfac20f11ddcc7911be487cf9b8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Haml Changelog
2
2
 
3
+ ## 6.0.6
4
+
5
+ * Prevent CRuby from accidentally using the Ruby implementation fallback
6
+ * Reversing what v6.0.3 and v6.0.4 did, but still supporting Wasm.
7
+
8
+ ## 6.0.5
9
+
10
+ * Resurrect `#haml_object_ref` support in an object reference [#1097](https://github.com/haml/haml/issues/1097)
11
+ * This was removed in 6.0.0, and added back in this version.
12
+ * Stop warning `remove_whitespace: true` option.
13
+
3
14
  ## 6.0.4
4
15
 
5
16
  Released on October 2, 2022
data/REFERENCE.md CHANGED
@@ -81,6 +81,32 @@ You can then use it by including the `haml` gem in Ruby code, and using
81
81
  engine = Haml::Template.new { "%p Haml code!" }
82
82
  engine.render #=> "<p>Haml code!</p>\n"
83
83
 
84
+ ### Options
85
+
86
+ Haml understands various configuration options that affect its performance and
87
+ output.
88
+
89
+ In Rails, options can be set by using `Haml::RailsTemplate.set_options` in an initializer:
90
+
91
+ ```ruby
92
+ # config/initializers/haml.rb
93
+ Haml::RailsTemplate.set_options(escape_html: false)
94
+ ```
95
+
96
+ Outside Rails, you can set them by configuring them globally in `Haml::Template.options`:
97
+
98
+ ```ruby
99
+ Haml::Template.options[:escape_html] = false
100
+ ```
101
+
102
+ In sinatra specifically, you can set them in global config with:
103
+ ```ruby
104
+ set :haml, { escape_html: false }
105
+ ```
106
+
107
+ Finally, you can also set them by passing an options hash to `Haml::Engine.new` or `Haml::Template.new`.
108
+ For the complete list of available options, please see `Haml::Engine`.
109
+
84
110
  ## Plain Text
85
111
 
86
112
  A substantial portion of any HTML document is its content, which is plain old
@@ -294,7 +320,19 @@ or using `true` and `false`:
294
320
  %input(selected=true)
295
321
 
296
322
  This feature works only for attributes that are included in
297
- [`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](lib/haml/attribute_builder.rb).
323
+ [`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](lib/haml/attribute_builder.rb),
324
+ as well as `data-` and `aria-` attributes.
325
+
326
+ %input{'data-hidden' => false}
327
+ %input{'aria-hidden' => false}
328
+ %input{'xyz-hidden' => false}
329
+
330
+ will render as:
331
+
332
+ <input>
333
+ <input>
334
+ <input xyz-hidden='false'>
335
+
298
336
 
299
337
  <!-- The title to the next section (Prefixed Attributes) has changed. This
300
338
  <a> tag is so old links to here still work. -->
@@ -1163,6 +1201,44 @@ default. This filter is implemented using Tilt.
1163
1201
  You can also define your own filters.
1164
1202
  `Haml::Filters::YourCustomFilter#compile` should return
1165
1203
  [a Temple expression](https://github.com/judofyr/temple/blob/master/EXPRESSIONS.md).
1204
+
1205
+ The simplest example of a filter might be something like:
1206
+
1207
+ ```ruby
1208
+ class HelloFilter < Haml::Filters::Base
1209
+ def compile(_node)
1210
+ [:static, "hello world"]
1211
+ end
1212
+ end
1213
+
1214
+ Haml::Filters.registered[:hello] ||= HelloFilter
1215
+ ```
1216
+
1217
+ A more complex complex example
1218
+
1219
+ ```ruby
1220
+ class BetterFilter < Haml::Filters::Base
1221
+ def compile(node)
1222
+ temple = [:multi]
1223
+ temple << [:static, "hello "]
1224
+ temple << compile_text(node.value[:text])
1225
+ temple << [:static, " world"]
1226
+ temple
1227
+ end
1228
+
1229
+ private
1230
+ def compile_text(text)
1231
+ if ::Haml::Util.contains_interpolation?(text)
1232
+ [:dynamic, ::Haml::Util.unescape_interpolation(text)]
1233
+ else
1234
+ [:static, text]
1235
+ end
1236
+ end
1237
+ end
1238
+
1239
+ Haml::Filters.registered[:better] ||= BetterFilter
1240
+ ```
1241
+
1166
1242
  See {Haml::Filters} for examples.
1167
1243
 
1168
1244
  ## Multiline: `|` {#multiline}
@@ -9,15 +9,8 @@ module Haml::AttributeBuilder
9
9
  itemscope allowfullscreen default inert sortable
10
10
  truespeed typemustmatch download].freeze
11
11
 
12
- begin
13
- # Haml::AttributeBuilder.build
14
- # Haml::AttributeBuilder.build_id
15
- # Haml::AttributeBuilder.build_class
16
- # Haml::AttributeBuilder.build_data
17
- # Haml::AttributeBuilder.build_aria
18
- require 'haml/haml'
19
- rescue LoadError
20
- # For JRuby and Wasm, fallback to Ruby implementation when C extension is not available.
12
+ # For JRuby, TruffleRuby, and Wasm, fallback to Ruby implementation.
13
+ if /java|wasm/ === RUBY_PLATFORM || RUBY_ENGINE == 'truffleruby'
21
14
  class << self
22
15
  def build(escape_attrs, quote, format, boolean_attributes, object_ref, *hashes)
23
16
  hashes << Haml::ObjectRef.parse(object_ref) if object_ref
@@ -170,5 +163,12 @@ module Haml::AttributeBuilder
170
163
  end
171
164
  end
172
165
  end
166
+ else
167
+ # Haml::AttributeBuilder.build
168
+ # Haml::AttributeBuilder.build_id
169
+ # Haml::AttributeBuilder.build_class
170
+ # Haml::AttributeBuilder.build_data
171
+ # Haml::AttributeBuilder.build_aria
172
+ require 'haml/haml'
173
173
  end
174
174
  end
data/lib/haml/engine.rb CHANGED
@@ -23,6 +23,7 @@ module Haml
23
23
  param source track wbr),
24
24
  filename: "",
25
25
  disable_capture: false,
26
+ remove_whitespace: false,
26
27
  )
27
28
 
28
29
  use Parser
@@ -6,7 +6,12 @@ module Haml
6
6
  object, prefix = args
7
7
  return {} unless object
8
8
 
9
- suffix = underscore(object.class)
9
+ suffix =
10
+ if object.respond_to?(:haml_object_ref)
11
+ object.haml_object_ref
12
+ else
13
+ underscore(object.class)
14
+ end
10
15
  {
11
16
  'class' => [prefix, suffix].compact.join('_'),
12
17
  'id' => [prefix, suffix, object.id || 'new'].compact.join('_'),
data/lib/haml/util.rb CHANGED
@@ -14,15 +14,15 @@ 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.
17
+ # For JRuby, TruffleRuby, and Wasm, fallback to Ruby implementation.
18
+ if /java|wasm/ === RUBY_PLATFORM || RUBY_ENGINE == 'truffleruby'
21
19
  require 'cgi/escape'
22
20
 
23
21
  def self.escape_html(html)
24
22
  CGI.escapeHTML(html.to_s)
25
23
  end
24
+ else
25
+ require 'haml/haml' # Haml::Util.escape_html
26
26
  end
27
27
 
28
28
  # TODO: Remove unescape_interpolation's workaround and get rid of `respond_to?`.
data/lib/haml/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Haml
3
- VERSION = '6.0.4'
3
+ VERSION = '6.0.6'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.4
4
+ version: 6.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natalie Weizenbaum
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2022-10-03 00:00:00.000000000 Z
15
+ date: 2022-10-09 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: temple