hamlit 2.9.3-java → 2.9.4-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 +4 -4
- data/.travis.yml +3 -1
- data/CHANGELOG.md +12 -0
- data/Gemfile +5 -3
- data/REFERENCE.md +7 -1
- data/ext/hamlit/hamlit.c +2 -0
- data/hamlit.gemspec +1 -1
- data/lib/hamlit/attribute_builder.rb +3 -1
- data/lib/hamlit/attribute_compiler.rb +3 -1
- data/lib/hamlit/compiler/script_compiler.rb +4 -0
- data/lib/hamlit/compiler/tag_compiler.rb +8 -2
- data/lib/hamlit/engine.rb +4 -2
- data/lib/hamlit/filters/plain.rb +3 -0
- data/lib/hamlit/hamlit.su +0 -0
- data/lib/hamlit/utils.rb +3 -1
- data/lib/hamlit/version.rb +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c44c5a360e172c2bcc8383952fd5c8b03fb287c818b0b0d5394862f0b55b659
|
4
|
+
data.tar.gz: 95d39c6eb8060801ddeb0f8ae61ada9d3755b4ac0750725c468d70ddf29aa5c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a530cade0a6cf8110c4f4f213094ee4712559744cd5eeb8c0c5a81daf5c696bc3f147f91cfc07260304ce4b2c00203cb59fa0fdb1fd7d7bd2a4130a9e06f39cd
|
7
|
+
data.tar.gz: f5b1f560f7bffec014ff5e2217ec5a5502743c09352f362c3de551ae390baf775a342e9395a892dcac7bda969acda68230fcb6f64aac46c107e9ab860dbeaf1d
|
data/.travis.yml
CHANGED
@@ -17,7 +17,9 @@ matrix:
|
|
17
17
|
env: TASK=test
|
18
18
|
- rvm: ruby-head
|
19
19
|
env: TASK=test
|
20
|
-
- rvm: jruby-9.
|
20
|
+
- rvm: jruby-9.2.8.0
|
21
|
+
env: TASK=test
|
22
|
+
- rvm: truffleruby
|
21
23
|
env: TASK=test
|
22
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
|
data/CHANGELOG.md
CHANGED
@@ -4,18 +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
|
+
|
7
13
|
## [2.9.3](https://github.com/k0kubun/hamlit/compare/v2.9.2...v2.9.3) - 2019-04-09
|
8
14
|
|
15
|
+
### Fixed
|
16
|
+
|
9
17
|
- Fix deprecation warning on Rails 6 [#138](https://github.com/k0kubun/hamlit/issues/138).
|
10
18
|
*Thanks to @r7kamura*
|
11
19
|
|
12
20
|
## [2.9.2](https://github.com/k0kubun/hamlit/compare/v2.9.1...v2.9.2) - 2018-11-30
|
13
21
|
|
22
|
+
### Fixed
|
23
|
+
|
14
24
|
- Fix possible `autoload` failure of dependency [#131](https://github.com/k0kubun/hamlit/issues/131).
|
15
25
|
*Thanks to @wimrijnders*
|
16
26
|
|
17
27
|
## [2.9.1](https://github.com/k0kubun/hamlit/compare/v2.9.0...v2.9.1) - 2018-11-01
|
18
28
|
|
29
|
+
### Added
|
30
|
+
|
19
31
|
- Start supporting JRuby [#100](https://github.com/k0kubun/hamlit/issues/100).
|
20
32
|
|
21
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'
|
22
|
+
gem 'redcarpet'
|
23
23
|
|
24
|
-
if RUBY_PLATFORM !~ /mswin|mingw/
|
25
|
-
|
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/REFERENCE.md
CHANGED
@@ -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
|
-
|
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).
|
data/ext/hamlit/hamlit.c
CHANGED
@@ -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
|
data/hamlit.gemspec
CHANGED
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
|
|
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'
|
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
|
-
|
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
|
-
|
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
|
-
|
32
|
-
|
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
|
data/lib/hamlit/engine.rb
CHANGED
@@ -25,8 +25,10 @@ module Hamlit
|
|
25
25
|
use Parser
|
26
26
|
use Compiler
|
27
27
|
use HTML
|
28
|
-
|
29
|
-
|
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
|
data/lib/hamlit/filters/plain.rb
CHANGED
@@ -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
|
data/lib/hamlit/utils.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module Hamlit
|
3
3
|
module Utils
|
4
|
-
|
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)
|
data/lib/hamlit/version.rb
CHANGED
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.
|
4
|
+
version: 2.9.4
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Takashi Kokubun
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -153,17 +153,17 @@ dependencies:
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
requirement: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
|
-
- - "
|
156
|
+
- - ">="
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: '
|
158
|
+
version: '0'
|
159
159
|
name: rake
|
160
160
|
prerelease: false
|
161
161
|
type: :development
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
166
|
+
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
requirement: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
@@ -310,6 +310,7 @@ files:
|
|
310
310
|
- lib/hamlit/filters/text_base.rb
|
311
311
|
- lib/hamlit/filters/tilt_base.rb
|
312
312
|
- lib/hamlit/force_escapable.rb
|
313
|
+
- lib/hamlit/hamlit.su
|
313
314
|
- lib/hamlit/helpers.rb
|
314
315
|
- lib/hamlit/html.rb
|
315
316
|
- lib/hamlit/identity.rb
|
@@ -353,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
353
354
|
version: '0'
|
354
355
|
requirements: []
|
355
356
|
rubyforge_project:
|
356
|
-
rubygems_version: 2.7.
|
357
|
+
rubygems_version: 2.7.9
|
357
358
|
signing_key:
|
358
359
|
specification_version: 4
|
359
360
|
summary: High Performance Haml Implementation
|