hamlit 2.9.2 → 2.9.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13ec1e68a6e76570f52bcd3164031e074f02c86a44d23896266a108ca95d86d7
4
- data.tar.gz: d7d92af631e2d6fe194c05b72963bf39b44030c7912ecab9ad62d3625ea29973
3
+ metadata.gz: ff5c08623e133d33678ed09abfa8aeb752ff6fe48a203d6d22000430335e0ced
4
+ data.tar.gz: caa9eb9872690fc5ae45432c5c8487be7fafe51f2e65f484e6f9602f5afdf4d2
5
5
  SHA512:
6
- metadata.gz: 3842f9ffc14c12ba07812ed31d6e0957b82f5d20378cae981cb019008444e7bb3564f246fe4a77658fb4457a84ce92004cd59d068aa362c1350acfdad5b2c907
7
- data.tar.gz: 230e6fc6748f94b12a5b67a15797559267c3a93653c586af67cf6bf15951091dd5f8e54e885e561b2aa06430240764cc365decf8a4bb38a7b43bf25d417262a3
6
+ metadata.gz: 0d1241f1a8d1fea6d4528649047d5830197b84e3c2bc01c17f8dd07d59f9cc02023b9c28140817f8aeee92ea26bd67ca3bbf864fa3ffeaff83f271d365b87a23
7
+ data.tar.gz: 97fcaa8d8b03f6fc84c27927c9a1b73f871211b3d109b32258786a897d54ccb5f3b68c2e42c7e2175dda04073f1dc2aaecb3d3479df34806a5119b035b773968
@@ -7,31 +7,33 @@ script:
7
7
  - "RUBYOPT='-w' bundle exec rake $TASK"
8
8
  matrix:
9
9
  include:
10
- - rvm: 2.1.10
10
+ - rvm: 2.3.8
11
11
  env: TASK=test
12
- - rvm: 2.2.6
12
+ - rvm: 2.4.5
13
13
  env: TASK=test
14
- - rvm: 2.3.3
14
+ - rvm: 2.5.3
15
15
  env: TASK=test
16
- - rvm: 2.4.0
16
+ - rvm: 2.6.0
17
17
  env: TASK=test
18
18
  - rvm: ruby-head
19
19
  env: TASK=test
20
- - rvm: jruby-9.1.9.0
20
+ - rvm: jruby-9.2.8.0
21
21
  env: TASK=test
22
- - rvm: 2.4.0
22
+ - rvm: truffleruby
23
+ env: TASK=test
24
+ - rvm: 2.6.0
23
25
  env: TASK=bench TEMPLATE=benchmark/boolean_attribute.haml,benchmark/class_attribute.haml,benchmark/id_attribute.haml,benchmark/data_attribute.haml,benchmark/common_attribute.haml
24
- - rvm: 2.4.0
26
+ - rvm: 2.6.0
25
27
  env: TASK=bench TEMPLATE=benchmark/dynamic_attributes/boolean_attribute.haml,benchmark/dynamic_attributes/class_attribute.haml,benchmark/dynamic_attributes/id_attribute.haml,benchmark/dynamic_attributes/data_attribute.haml,benchmark/dynamic_attributes/common_attribute.haml
26
- - rvm: 2.4.0
28
+ - rvm: 2.6.0
27
29
  env: TASK=bench SLIM_BENCH=1
28
- - rvm: 2.4.0
30
+ - rvm: 2.6.0
29
31
  env: TASK=bench TEMPLATE=benchmark/etc/attribute_builder.haml
30
- - rvm: 2.4.0
32
+ - rvm: 2.6.0
31
33
  env: TASK=bench TEMPLATE=benchmark/etc/static_analyzer.haml
32
- - rvm: 2.4.0
34
+ - rvm: 2.6.0
33
35
  env: TASK=bench TEMPLATE=benchmark/etc/string_interpolation.haml
34
- - rvm: 2.4.0
36
+ - rvm: 2.6.0
35
37
  env: TASK=bench TEMPLATE=test/haml/templates/standard.haml COMPILE=1
36
38
  allow_failures:
37
39
  - rvm: ruby-head
@@ -4,13 +4,30 @@ 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.9.4](https://github.com/k0kubun/hamlit/compare/v2.9.3...v2.9.4) - 2019-09-08
8
+
9
+ ### Added
10
+
11
+ - Experimental support of truffleruby [#145](https://github.com/k0kubun/hamlit/issues/145).
12
+
13
+ ## [2.9.3](https://github.com/k0kubun/hamlit/compare/v2.9.2...v2.9.3) - 2019-04-09
14
+
15
+ ### Fixed
16
+
17
+ - Fix deprecation warning on Rails 6 [#138](https://github.com/k0kubun/hamlit/issues/138).
18
+ *Thanks to @r7kamura*
19
+
7
20
  ## [2.9.2](https://github.com/k0kubun/hamlit/compare/v2.9.1...v2.9.2) - 2018-11-30
8
21
 
22
+ ### Fixed
23
+
9
24
  - Fix possible `autoload` failure of dependency [#131](https://github.com/k0kubun/hamlit/issues/131).
10
25
  *Thanks to @wimrijnders*
11
26
 
12
27
  ## [2.9.1](https://github.com/k0kubun/hamlit/compare/v2.9.0...v2.9.1) - 2018-11-01
13
28
 
29
+ ### Added
30
+
14
31
  - Start supporting JRuby [#100](https://github.com/k0kubun/hamlit/issues/100).
15
32
 
16
33
  ## [2.9.0](https://github.com/k0kubun/hamlit/compare/v2.8.10...v2.9.0) - 2018-10-16
data/Gemfile CHANGED
@@ -19,10 +19,12 @@ if /java/ === RUBY_PLATFORM # JRuby
19
19
  gem 'pandoc-ruby'
20
20
  else
21
21
  gem 'pry-byebug'
22
- gem 'redcarpet', github: 'vmg/redcarpet' # To resolve circular require warning
22
+ gem 'redcarpet'
23
23
 
24
- if RUBY_PLATFORM !~ /mswin|mingw/
25
- gem 'faml'
24
+ if RUBY_PLATFORM !~ /mswin|mingw/ && RUBY_ENGINE != 'truffleruby'
25
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0') # Travis cannot compile ruby.h with C++
26
+ gem 'faml'
27
+ end
26
28
  gem 'stackprof'
27
29
  end
28
30
  end
data/README.md CHANGED
@@ -141,6 +141,10 @@ Please report an issue with following information:
141
141
  - Hamlit version
142
142
  - Rails/Sinatra version
143
143
 
144
+ ### Coding styles
145
+
146
+ Please follow the existing coding styles and do not send patches including cosmetic changes.
147
+
144
148
  ## License
145
149
 
146
150
  Copyright (c) 2015 Takashi Kokubun
@@ -99,6 +99,9 @@ Hamlit does not remove non-boolean attributes and render `<a foo=''></a>`
99
99
  (`foo` is not removed). This design allows us to reduce string concatenation and
100
100
  is the only difference between Faml and Hamlit.
101
101
 
102
+ You may be also interested in
103
+ [hamlit/hamlit-boolean\_attributes](https://github.com/hamlit/hamlit-boolean_attributes).
104
+
102
105
  ## 5 Types of Attributes
103
106
 
104
107
  Haml has 3 types of attributes: id, class and others.
@@ -181,7 +184,10 @@ defer reversed ismap seamless muted required autofocus novalidate formnovalidate
181
184
  itemscope allowfullscreen default inert sortable truespeed typemustmatch
182
185
  ```
183
186
 
184
- "data-\*" is also regarded as boolean.
187
+ If you want to customize the list of boolean attributes, you can use
188
+ [hamlit/hamlit-boolean\_attributes](https://github.com/hamlit/hamlit-boolean_attributes).
189
+
190
+ "aria-\*" and "data-\*" are also regarded as boolean.
185
191
 
186
192
  ### other attributes
187
193
  No hyphenation and boolean support. `false` is rendered as "false" (like Rails helpers).
@@ -1,5 +1,6 @@
1
1
  #include <ruby.h>
2
2
  #include <ruby/encoding.h>
3
+ #ifndef TRUFFLERUBY
3
4
  #include "hescape.h"
4
5
  #include "string.h"
5
6
 
@@ -551,3 +552,4 @@ Init_hamlit(void)
551
552
  rb_const_set(mAttributeBuilder, id_space, rb_obj_freeze(rb_str_new_cstr(" ")));
552
553
  rb_const_set(mAttributeBuilder, id_underscore, rb_obj_freeze(rb_str_new_cstr("_")));
553
554
  }
555
+ #endif
@@ -33,11 +33,11 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency 'bundler'
34
34
  spec.add_development_dependency 'coffee-script'
35
35
  spec.add_development_dependency 'erubi'
36
- spec.add_development_dependency 'haml'
36
+ spec.add_development_dependency 'haml', '>= 5'
37
37
  spec.add_development_dependency 'less'
38
38
  spec.add_development_dependency 'minitest-reporters', '~> 1.1'
39
39
  spec.add_development_dependency 'rails', '>= 4.0.0'
40
- spec.add_development_dependency 'rake', '~> 10.0'
40
+ spec.add_development_dependency 'rake'
41
41
  spec.add_development_dependency 'rake-compiler'
42
42
  spec.add_development_dependency 'sass'
43
43
  spec.add_development_dependency 'slim'
@@ -9,7 +9,9 @@ module Hamlit::AttributeBuilder
9
9
  itemscope allowfullscreen default inert sortable
10
10
  truespeed typemustmatch download].freeze
11
11
 
12
- if /java/ === RUBY_PLATFORM # JRuby
12
+ # Java extension is not implemented for JRuby yet.
13
+ # TruffleRuby does not implement `rb_ary_sort_bang`, etc.
14
+ if /java/ === RUBY_PLATFORM || RUBY_ENGINE == 'truffleruby'
13
15
  class << self
14
16
  def build(escape_attrs, quote, format, object_ref, *hashes)
15
17
  hashes << Hamlit::ObjectRef.parse(object_ref) if object_ref
@@ -14,7 +14,9 @@ module Hamlit
14
14
 
15
15
  def compile(node)
16
16
  hashes = []
17
- return runtime_compile(node) if node.value[:object_ref] != :nil
17
+ if node.value[:object_ref] != :nil || !Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
18
+ return runtime_compile(node)
19
+ end
18
20
  node.value[:attributes_hashes].each do |attribute_str|
19
21
  hash = AttributeParser.parse(attribute_str)
20
22
  return runtime_compile(node) unless hash
@@ -11,6 +11,10 @@ module Hamlit
11
11
  end
12
12
 
13
13
  def compile(node, &block)
14
+ unless Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
15
+ return dynamic_compile(node, &block)
16
+ end
17
+
14
18
  no_children = node.children.empty?
15
19
  case
16
20
  when no_children && node.value[:escape_interpolation]
@@ -28,8 +28,10 @@ module Hamlit
28
28
  nil
29
29
  when node.value[:parse]
30
30
  return compile_interpolated_plain(node) if node.value[:escape_interpolation]
31
- return delegate_optimization(node) if RubyExpression.string_literal?(node.value[:value])
32
- return delegate_optimization(node) if Temple::StaticAnalyzer.static?(node.value[:value])
31
+ if Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
32
+ return delegate_optimization(node) if RubyExpression.string_literal?(node.value[:value])
33
+ return delegate_optimization(node) if Temple::StaticAnalyzer.static?(node.value[:value])
34
+ end
33
35
 
34
36
  var = @identity.generate
35
37
  [:multi,
@@ -53,6 +55,10 @@ module Hamlit
53
55
 
54
56
  # We should handle interpolation here to escape only interpolated values.
55
57
  def compile_interpolated_plain(node)
58
+ unless Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
59
+ return [:multi, [:escape, node.value[:escape_interpolation], [:dynamic, "%Q[#{node.value[:value]}]"]], [:newline]]
60
+ end
61
+
56
62
  temple = [:multi]
57
63
  StringSplitter.compile(node.value[:value]).each do |type, value|
58
64
  case type
@@ -25,8 +25,10 @@ module Hamlit
25
25
  use Parser
26
26
  use Compiler
27
27
  use HTML
28
- use StringSplitter
29
- filter :StaticAnalyzer
28
+ if Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
29
+ use StringSplitter
30
+ filter :StaticAnalyzer
31
+ end
30
32
  use Escapable
31
33
  use ForceEscapable
32
34
  filter :ControlFlow
@@ -5,6 +5,9 @@ module Hamlit
5
5
  class Filters
6
6
  class Plain < Base
7
7
  def compile(node)
8
+ unless Ripper.respond_to?(:lex)
9
+ raise NotImplementedError.new('This platform does not have Ripper.lex required for :plain filter')
10
+ end
8
11
  text = node.value[:text]
9
12
  text = text.rstrip unless ::Hamlit::HamlUtil.contains_interpolation?(text) # for compatibility
10
13
  [:multi, *compile_plain(text)]
Binary file
@@ -23,7 +23,8 @@ module Hamlit
23
23
  end
24
24
  end
25
25
 
26
- def call(template)
26
+ def call(template, source = nil)
27
+ source ||= template.source
27
28
  options = RailsTemplate.options
28
29
 
29
30
  # https://github.com/haml/haml/blob/4.0.7/lib/haml/template/plugin.rb#L19-L20
@@ -32,7 +33,7 @@ module Hamlit
32
33
  options = options.merge(format: :xhtml)
33
34
  end
34
35
 
35
- Engine.new(options).call(template.source)
36
+ Engine.new(options).call(source)
36
37
  end
37
38
 
38
39
  def supports_streaming?
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  module Hamlit
3
3
  module Utils
4
- if /java/ === RUBY_PLATFORM # JRuby
4
+ # Java extension is not implemented for JRuby yet.
5
+ # TruffleRuby does not implement `rb_ary_sort_bang`, etc.
6
+ if /java/ === RUBY_PLATFORM || RUBY_ENGINE == 'truffleruby'
5
7
  require 'cgi/escape'
6
8
 
7
9
  def self.escape_html(html)
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Hamlit
3
- VERSION = '2.9.2'
3
+ VERSION = '2.9.4'
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.9.2
4
+ version: 2.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-29 00:00:00.000000000 Z
11
+ date: 2019-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: temple
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '5'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '5'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: less
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -154,16 +154,16 @@ dependencies:
154
154
  name: rake
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: '10.0'
159
+ version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: '10.0'
166
+ version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rake-compiler
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -311,6 +311,7 @@ files:
311
311
  - lib/hamlit/filters/text_base.rb
312
312
  - lib/hamlit/filters/tilt_base.rb
313
313
  - lib/hamlit/force_escapable.rb
314
+ - lib/hamlit/hamlit.su
314
315
  - lib/hamlit/helpers.rb
315
316
  - lib/hamlit/html.rb
316
317
  - lib/hamlit/identity.rb
@@ -353,8 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
353
354
  - !ruby/object:Gem::Version
354
355
  version: '0'
355
356
  requirements: []
356
- rubyforge_project:
357
- rubygems_version: 2.7.6
357
+ rubygems_version: 3.0.3
358
358
  signing_key:
359
359
  specification_version: 4
360
360
  summary: High Performance Haml Implementation