hamlit 2.9.3-java → 2.9.4-java
Sign up to get free protection for your applications and to get access to all the features.
- 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
|