hamlit 2.14.2-java → 2.15.0-java

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: 3dfca16d14fcb19d064d0cf1d3fbcbfbfd445b99a1fd5a9873686eae04bf6ebd
4
- data.tar.gz: fe551e8e275516c6e11df67200de1a13ce81b7290c127b4e82171a773dbe2887
3
+ metadata.gz: 86a728b5b4d4092dd1ba4c21e7bd306aacbc11a5386a76596ae54ff923d1fc55
4
+ data.tar.gz: 332a601582738bcee8dd7a56a23e7930af140b777453511e5e658a94a1c66c85
5
5
  SHA512:
6
- metadata.gz: b50605bc8079905583874701e79a0f231392b0840236d6708ae28a156deaa0037d73a426d87f0086a54bddbf6d706e5aff1ffe5447f9b29d6b07c1bb465da601
7
- data.tar.gz: 8c766ab1ea3dd271b9fd8c527d0ee5f2972ca7bc43b4a0bbfe9acfd10cb2b19e9d9a88f1c6a50123fcd9a77893883286a2c22c3c7c9b6145cef1d90d0fb3baa5
6
+ metadata.gz: 1b79fe7a6fcda0fd6cc57ed6480e728225a4ad87f44074dcd31f6606b09d253c64a469ab82a50af0aa33044268cc6a1b5e5ea3ea8f436424e969df67b7bf5d2d
7
+ data.tar.gz: 465ec7e9ae995146684103fa2a85cb2564adb7538d24ef7d75e84b020c023382c7945e0ecd788aa4896ab7625b6b775caa458a88fbfce52921f6f6de7e32e9f6
@@ -0,0 +1 @@
1
+ github: k0kubun
@@ -13,24 +13,28 @@ on:
13
13
  jobs:
14
14
  test:
15
15
  runs-on: ubuntu-latest
16
- container: ${{ matrix.ruby }}
17
16
  strategy:
18
17
  fail-fast: false
19
18
  matrix:
20
19
  ruby:
21
- - ruby:2.5
22
- - ruby:2.6
23
- - ruby:2.7
24
- - ruby:3.0
25
- # TODO: add jruby and truffleruby
20
+ - '2.5'
21
+ - '2.6'
22
+ - '2.7'
23
+ - '3.0'
24
+ - jruby
25
+ - truffleruby-head
26
26
  steps:
27
27
  - uses: actions/checkout@v2
28
+ - name: Set up Ruby
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby }}
28
32
  - uses: actions/cache@v2
29
33
  with:
30
34
  path: vendor/bundle
31
35
  key: ${{ runner.os }}-${{ matrix.ruby }}-gems-${{ hashFiles('**/Gemfile.lock') }}
32
36
  restore-keys: ${{ runner.os }}-gems-
33
- - run: apt-get update && apt-get install -y nodejs # For execjs
37
+ - run: sudo apt-get update && sudo apt-get install -y nodejs libxslt-dev # nodejs for execjs, libxslt for TruffleRuby nokogiri
34
38
  - name: bundle install
35
39
  run: bundle config path vendor/bundle && bundle install -j$(nproc) --retry 3
36
40
  - run: bundle exec rake test
data/CHANGELOG.md CHANGED
@@ -4,6 +4,40 @@ All notable changes to this project will be documented in this file. This
4
4
  project adheres to [Semantic Versioning](http://semver.org/). This change log is based upon
5
5
  [keep-a-changelog](https://github.com/olivierlacan/keep-a-changelog).
6
6
 
7
+ ## [2.15.0](https://github.com/k0kubun/hamlit/compare/v2.14.6...v2.15.0) - 2021-04-12
8
+
9
+ ### Added
10
+
11
+ - Always use Hamlit when both haml.gem and hamlit.gem are installed in Rails
12
+ *Thanks to @igor-drozdov*
13
+
14
+ ## [2.14.6](https://github.com/k0kubun/hamlit/compare/v2.14.5...v2.14.6) - 2021-03-23
15
+
16
+ ### Fixed
17
+
18
+ - Optimize v2.14.5's implementation a little
19
+
20
+ ## [2.14.5](https://github.com/k0kubun/hamlit/compare/v2.14.4...v2.14.5) - 2021-03-23
21
+
22
+ ### Added
23
+
24
+ - Support `config.action_view.annotate_rendered_view_with_filenames = true` of Rails 6.1
25
+ *Thanks to @kirin121*
26
+
27
+ ## [2.14.4](https://github.com/k0kubun/hamlit/compare/v2.14.3...v2.14.4) - 2021-02-01
28
+
29
+ ### Fixed
30
+
31
+ - Prevent another SEGV in a C extension after `GC.compact` [#177](https://github.com/k0kubun/hamlit/issues/177)
32
+ *Thanks to @stanhu*
33
+
34
+ ## [2.14.3](https://github.com/k0kubun/hamlit/compare/v2.14.2...v2.14.3) - 2021-01-24
35
+
36
+ ### Fixed
37
+
38
+ - Ensure the Rails initializer is called before `:load_config_initializers` [#176](https://github.com/k0kubun/hamlit/issues/176)
39
+ *Thanks to @sunny*
40
+
7
41
  ## [2.14.2](https://github.com/k0kubun/hamlit/compare/v2.14.1...v2.14.2) - 2021-01-21
8
42
 
9
43
  ### Fixed
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Hamlit
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/hamlit.svg)](http://badge.fury.io/rb/hamlit)
4
- [![Build Status](https://travis-ci.org/k0kubun/hamlit.svg?branch=master)](https://travis-ci.org/k0kubun/hamlit)
5
4
  [![test](https://github.com/k0kubun/hamlit/workflows/test/badge.svg)](https://github.com/k0kubun/hamlit/actions?query=workflow%3Atest)
6
5
 
7
6
  Hamlit is a high performance [Haml](https://github.com/haml/haml) implementation.
data/ext/hamlit/hamlit.c CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  VALUE mAttributeBuilder, mObjectRef;
8
8
  static ID id_flatten, id_keys, id_parse, id_prepend, id_tr, id_uniq_bang;
9
- static ID id_boolean_attributes, id_xhtml;
9
+ static ID id_xhtml;
10
10
 
11
11
  static VALUE str_aria, str_data, str_equal, str_hyphen, str_space, str_underscore;
12
12
 
@@ -342,13 +342,10 @@ merge_all_attrs(VALUE hashes)
342
342
  }
343
343
 
344
344
  int
345
- is_boolean_attribute(VALUE key)
345
+ is_boolean_attribute(VALUE key, VALUE boolean_attributes)
346
346
  {
347
- VALUE boolean_attributes;
348
347
  if (str_eq(rb_str_substr(key, 0, 5), "data-", 5)) return 1;
349
348
  if (str_eq(rb_str_substr(key, 0, 5), "aria-", 5)) return 1;
350
-
351
- boolean_attributes = rb_const_get(mAttributeBuilder, id_boolean_attributes);
352
349
  return RTEST(rb_ary_includes(boolean_attributes, key));
353
350
  }
354
351
 
@@ -418,7 +415,7 @@ hamlit_build_for_boolean(VALUE escape_attrs, VALUE quote, VALUE format, VALUE bu
418
415
  }
419
416
 
420
417
  static VALUE
421
- hamlit_build(VALUE escape_attrs, VALUE quote, VALUE format, VALUE object_ref, VALUE hashes)
418
+ hamlit_build(VALUE escape_attrs, VALUE quote, VALUE format, VALUE boolean_attributes, VALUE object_ref, VALUE hashes)
422
419
  {
423
420
  long i;
424
421
  VALUE attrs, buf, key, keys, value;
@@ -439,7 +436,7 @@ hamlit_build(VALUE escape_attrs, VALUE quote, VALUE format, VALUE object_ref, VA
439
436
  hamlit_build_for_data(escape_attrs, quote, buf, value);
440
437
  } else if (str_eq(key, "aria", 4)) {
441
438
  hamlit_build_for_aria(escape_attrs, quote, buf, value);
442
- } else if (is_boolean_attribute(key)) {
439
+ } else if (is_boolean_attribute(key, boolean_attributes)) {
443
440
  hamlit_build_for_boolean(escape_attrs, quote, format, buf, key, value);
444
441
  } else {
445
442
  hamlit_build_for_others(escape_attrs, quote, buf, key, value);
@@ -498,10 +495,10 @@ rb_hamlit_build(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self))
498
495
  {
499
496
  VALUE array;
500
497
 
501
- rb_check_arity(argc, 4, UNLIMITED_ARGUMENTS);
502
- rb_scan_args(argc - 4, argv + 4, "*", &array);
498
+ rb_check_arity(argc, 5, UNLIMITED_ARGUMENTS);
499
+ rb_scan_args(argc - 5, argv + 5, "*", &array);
503
500
 
504
- return hamlit_build(argv[0], argv[1], argv[2], argv[3], array);
501
+ return hamlit_build(argv[0], argv[1], argv[2], argv[3], argv[4], array);
505
502
  }
506
503
 
507
504
  void
@@ -527,9 +524,7 @@ Init_hamlit(void)
527
524
  id_prepend = rb_intern("prepend");
528
525
  id_tr = rb_intern("tr");
529
526
  id_uniq_bang = rb_intern("uniq!");
530
-
531
- id_boolean_attributes = rb_intern("BOOLEAN_ATTRIBUTES");
532
- id_xhtml = rb_intern("xhtml");
527
+ id_xhtml = rb_intern("xhtml");
533
528
 
534
529
  // Consider using rb_interned_str() once we stop supporting Ruby 2.7.
535
530
  rb_gc_register_mark_object(str_aria = rb_obj_freeze(rb_str_new_cstr("aria")));
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+ module Hamlit
3
+ class Ambles < Temple::Filter
4
+ define_options :preamble, :postamble
5
+
6
+ def initialize(*)
7
+ super
8
+ @preamble = options[:preamble]
9
+ @postamble = options[:postamble]
10
+ end
11
+
12
+ def call(ast)
13
+ ret = [:multi]
14
+ ret << [:static, @preamble] if @preamble
15
+ ret << ast
16
+ ret << [:static, @postamble] if @postamble
17
+ ret
18
+ end
19
+ end
20
+ end
@@ -13,7 +13,7 @@ module Hamlit::AttributeBuilder
13
13
  # TruffleRuby does not implement `rb_ary_sort_bang`, etc.
14
14
  if /java/ === RUBY_PLATFORM || RUBY_ENGINE == 'truffleruby'
15
15
  class << self
16
- def build(escape_attrs, quote, format, object_ref, *hashes)
16
+ def build(escape_attrs, quote, format, boolean_attributes, object_ref, *hashes)
17
17
  hashes << Hamlit::ObjectRef.parse(object_ref) if object_ref
18
18
  buf = []
19
19
  hash = merge_all_attrs(hashes)
@@ -27,7 +27,7 @@ module Hamlit::AttributeBuilder
27
27
  buf << " class=#{quote}#{build_class(escape_attrs, *hash[key])}#{quote}"
28
28
  when 'data'.freeze
29
29
  buf << build_data(escape_attrs, quote, *hash[key])
30
- when *BOOLEAN_ATTRIBUTES, /\Adata-/
30
+ when *boolean_attributes, /\Adata-/
31
31
  build_boolean!(escape_attrs, quote, format, buf, key, hash[key])
32
32
  else
33
33
  buf << " #{key}=#{quote}#{escape_html(escape_attrs, hash[key].to_s)}#{quote}"
@@ -31,7 +31,10 @@ module Hamlit
31
31
  attrs = []
32
32
  attrs.unshift(node.value[:attributes].inspect) if node.value[:attributes] != {}
33
33
 
34
- args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", @format.inspect].push(node.value[:object_ref]) + attrs
34
+ args = [
35
+ @escape_attrs.inspect, "#{@quote.inspect}.freeze", @format.inspect,
36
+ '::Hamlit::AttributeBuilder::BOOLEAN_ATTRIBUTES', node.value[:object_ref],
37
+ ] + attrs
35
38
  [:html, :attrs, [:dynamic, "::Hamlit::AttributeBuilder.build(#{args.join(', ')}, #{node.value[:dynamic_attributes].to_literal})"]]
36
39
  end
37
40
 
data/lib/hamlit/engine.rb CHANGED
@@ -6,6 +6,7 @@ require 'hamlit/html'
6
6
  require 'hamlit/escapable'
7
7
  require 'hamlit/force_escapable'
8
8
  require 'hamlit/dynamic_merger'
9
+ require 'hamlit/ambles'
9
10
 
10
11
  module Hamlit
11
12
  class Engine < Temple::Engine
@@ -30,6 +31,7 @@ module Hamlit
30
31
  use Escapable
31
32
  use ForceEscapable
32
33
  filter :ControlFlow
34
+ use Ambles
33
35
  filter :MultiFlattener
34
36
  filter :StaticMerger
35
37
  use DynamicMerger
@@ -33,6 +33,11 @@ module Hamlit
33
33
  options = options.merge(format: :xhtml)
34
34
  end
35
35
 
36
+ if ActionView::Base.try(:annotate_rendered_view_with_filenames) && template.format == :html
37
+ options[:preamble] = "<!-- BEGIN #{template.short_identifier} -->\n"
38
+ options[:postamble] = "<!-- END #{template.short_identifier} -->\n"
39
+ end
40
+
36
41
  Engine.new(options).call(source)
37
42
  end
38
43
 
@@ -3,7 +3,12 @@ require 'rails'
3
3
 
4
4
  module Hamlit
5
5
  class Railtie < ::Rails::Railtie
6
- initializer :hamlit do |app|
6
+ initializer :hamlit, before: :load_config_initializers do |app|
7
+ # Load haml/plugin first to override if available
8
+ begin
9
+ require 'haml/plugin'
10
+ rescue LoadError
11
+ end
7
12
  require 'hamlit/rails_template'
8
13
  end
9
14
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Hamlit
3
- VERSION = '2.14.2'
3
+ VERSION = '2.15.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hamlit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.14.2
4
+ version: 2.15.0
5
5
  platform: java
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-21 00:00:00.000000000 Z
11
+ date: 2021-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -256,6 +256,7 @@ executables:
256
256
  extensions: []
257
257
  extra_rdoc_files: []
258
258
  files:
259
+ - ".github/FUNDING.yml"
259
260
  - ".github/workflows/test.yml"
260
261
  - ".gitignore"
261
262
  - CHANGELOG.md
@@ -312,6 +313,7 @@ files:
312
313
  - ext/hamlit/hescape.h
313
314
  - hamlit.gemspec
314
315
  - lib/hamlit.rb
316
+ - lib/hamlit/ambles.rb
315
317
  - lib/hamlit/attribute_builder.rb
316
318
  - lib/hamlit/attribute_compiler.rb
317
319
  - lib/hamlit/attribute_parser.rb