hamlit 2.11.0 → 2.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +12 -10
- data/CHANGELOG.md +8 -1
- data/Gemfile +1 -3
- data/REFERENCE.md +4 -4
- data/lib/hamlit/compiler/children_compiler.rb +17 -3
- data/lib/hamlit/temple_line_counter.rb +31 -0
- data/lib/hamlit/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 315b433bd4a2af17f13b1a8ff54787c65b25beabcbdb1274dd86b29248e75f60
|
4
|
+
data.tar.gz: cd02934b413dd1cf6891f35f5cb1ee8731d68e0f82eb300bf92679b7574ec598
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 128daeb6d3f1d34fd33718b90b20b75117cda4147e8783d039b2daf0e019d836ac580d78fd3e01561f53f4348e442d3a04169761048cc2105ef1e3cae5c5c131
|
7
|
+
data.tar.gz: 0c11bc8dce803aa8d2adfdc78c7b91274678371adb7d30a8a36d997b60ada32320349712cd39c1feec7d965f5e1bbf6b6ab878a3769d4e20ee245afd1772bf79
|
data/.travis.yml
CHANGED
@@ -9,11 +9,13 @@ matrix:
|
|
9
9
|
include:
|
10
10
|
- rvm: 2.3.8
|
11
11
|
env: TASK=test
|
12
|
-
- rvm: 2.4.
|
12
|
+
- rvm: 2.4.9
|
13
13
|
env: TASK=test
|
14
|
-
- rvm: 2.5.
|
14
|
+
- rvm: 2.5.7
|
15
15
|
env: TASK=test
|
16
|
-
- rvm: 2.6.
|
16
|
+
- rvm: 2.6.5
|
17
|
+
env: TASK=test
|
18
|
+
- rvm: 2.7.0
|
17
19
|
env: TASK=test
|
18
20
|
- rvm: ruby-head
|
19
21
|
env: TASK=test
|
@@ -21,19 +23,19 @@ matrix:
|
|
21
23
|
env: TASK=test
|
22
24
|
- rvm: truffleruby
|
23
25
|
env: TASK=test
|
24
|
-
- rvm: 2.
|
26
|
+
- rvm: 2.7.0
|
25
27
|
env: TASK=bench TEMPLATE=benchmark/boolean_attribute.haml,benchmark/class_attribute.haml,benchmark/id_attribute.haml,benchmark/data_attribute.haml,benchmark/common_attribute.haml
|
26
|
-
- rvm: 2.
|
28
|
+
- rvm: 2.7.0
|
27
29
|
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
|
28
|
-
- rvm: 2.
|
30
|
+
- rvm: 2.7.0
|
29
31
|
env: TASK=bench SLIM_BENCH=1
|
30
|
-
- rvm: 2.
|
32
|
+
- rvm: 2.7.0
|
31
33
|
env: TASK=bench TEMPLATE=benchmark/etc/attribute_builder.haml
|
32
|
-
- rvm: 2.
|
34
|
+
- rvm: 2.7.0
|
33
35
|
env: TASK=bench TEMPLATE=benchmark/etc/static_analyzer.haml
|
34
|
-
- rvm: 2.
|
36
|
+
- rvm: 2.7.0
|
35
37
|
env: TASK=bench TEMPLATE=benchmark/etc/string_interpolation.haml
|
36
|
-
- rvm: 2.
|
38
|
+
- rvm: 2.7.0
|
37
39
|
env: TASK=bench TEMPLATE=test/haml/templates/standard.haml COMPILE=1
|
38
40
|
allow_failures:
|
39
41
|
- rvm: ruby-head
|
data/CHANGELOG.md
CHANGED
@@ -4,7 +4,14 @@ 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.11.
|
7
|
+
## [2.11.1](https://github.com/k0kubun/hamlit/compare/v2.11.0...v2.11.1) - 2020-08-25
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
|
11
|
+
- Fix a line number on an error after filters like preserve, plain, and ruby.
|
12
|
+
*Thanks to @rgisiger*
|
13
|
+
|
14
|
+
## [2.11.0](https://github.com/k0kubun/hamlit/compare/v2.10.1...v2.11.0) - 2019-12-12
|
8
15
|
|
9
16
|
### Added
|
10
17
|
|
data/Gemfile
CHANGED
@@ -22,9 +22,7 @@ else
|
|
22
22
|
gem 'redcarpet'
|
23
23
|
|
24
24
|
if RUBY_PLATFORM !~ /mswin|mingw/ && RUBY_ENGINE != 'truffleruby'
|
25
|
-
|
26
|
-
gem 'faml'
|
27
|
-
end
|
25
|
+
gem 'faml'
|
28
26
|
gem 'stackprof'
|
29
27
|
end
|
30
28
|
end
|
data/REFERENCE.md
CHANGED
@@ -122,10 +122,10 @@ and merging multiple ids results in concatenation by "\_".
|
|
122
122
|
%div{ id: false }
|
123
123
|
|
124
124
|
# Output
|
125
|
-
<div id='foo_bar'></
|
126
|
-
<div id='foo_bar'></
|
127
|
-
<div id='foo_bar'></
|
128
|
-
<div id=''></
|
125
|
+
<div id='foo_bar'></div>
|
126
|
+
<div id='foo_bar'></div>
|
127
|
+
<div id='foo_bar'></div>
|
128
|
+
<div id=''></div>
|
129
129
|
```
|
130
130
|
|
131
131
|
### class attribute
|
@@ -1,4 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require 'hamlit/temple_line_counter'
|
3
|
+
|
2
4
|
module Hamlit
|
3
5
|
class Compiler
|
4
6
|
class ChildrenCompiler
|
@@ -14,7 +16,7 @@ module Hamlit
|
|
14
16
|
node.children.each do |n|
|
15
17
|
rstrip_whitespace!(temple) if nuke_prev_whitespace?(n)
|
16
18
|
insert_newlines!(temple, n)
|
17
|
-
temple <<
|
19
|
+
temple << moving_lineno(n) { block.call(n) }
|
18
20
|
temple << :whitespace if insert_whitespace?(n)
|
19
21
|
end
|
20
22
|
rstrip_whitespace!(temple) if nuke_inner_whitespace?(node)
|
@@ -27,19 +29,31 @@ module Hamlit
|
|
27
29
|
(node.line - @lineno).times do
|
28
30
|
temple << [:newline]
|
29
31
|
end
|
32
|
+
|
30
33
|
@lineno = node.line
|
34
|
+
end
|
31
35
|
|
36
|
+
def moving_lineno(node, &block)
|
37
|
+
# before: As they may have children, we need to increment lineno before compilation.
|
32
38
|
case node.type
|
33
39
|
when :script, :silent_script
|
34
40
|
@lineno += 1
|
35
|
-
when :filter
|
36
|
-
@lineno += (node.value[:text] || '').split("\n").size
|
37
41
|
when :tag
|
38
42
|
node.value[:attributes_hashes].each do |attribute_hash|
|
39
43
|
@lineno += attribute_hash.count("\n")
|
40
44
|
end
|
41
45
|
@lineno += 1 if node.children.empty? && node.value[:parse]
|
42
46
|
end
|
47
|
+
|
48
|
+
temple = block.call # compile
|
49
|
+
|
50
|
+
# after: filter may not have children, and for some dynamic filters we can't predict the number of lines.
|
51
|
+
case node.type
|
52
|
+
when :filter
|
53
|
+
@lineno += TempleLineCounter.count_lines(temple)
|
54
|
+
end
|
55
|
+
|
56
|
+
temple
|
43
57
|
end
|
44
58
|
|
45
59
|
def confirm_whitespace(temple)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Hamlit
|
3
|
+
# A module to count lines of expected code. This would be faster than actual code generation
|
4
|
+
# and counting newlines in it.
|
5
|
+
module TempleLineCounter
|
6
|
+
class UnexpectedExpression < StandardError; end
|
7
|
+
|
8
|
+
def self.count_lines(exp)
|
9
|
+
type, *args = exp
|
10
|
+
case type
|
11
|
+
when :multi
|
12
|
+
args.map { |a| count_lines(a) }.reduce(:+) || 0
|
13
|
+
when :dynamic, :code
|
14
|
+
args.first.count("\n")
|
15
|
+
when :static
|
16
|
+
0 # It has not real newline "\n" but escaped "\\n".
|
17
|
+
when :case
|
18
|
+
arg, *cases = args
|
19
|
+
arg.count("\n") + cases.map do |cond, e|
|
20
|
+
(cond == :else ? 0 : cond.count("\n")) + count_lines(e)
|
21
|
+
end.reduce(:+)
|
22
|
+
when :escape
|
23
|
+
count_lines(args[1])
|
24
|
+
when :newline
|
25
|
+
1
|
26
|
+
else
|
27
|
+
raise UnexpectedExpression.new("[HAML BUG] Unexpected Temple expression '#{type}' is given!")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
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.11.
|
4
|
+
version: 2.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takashi Kokubun
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: temple
|
@@ -364,6 +364,7 @@ files:
|
|
364
364
|
- lib/hamlit/ruby_expression.rb
|
365
365
|
- lib/hamlit/string_splitter.rb
|
366
366
|
- lib/hamlit/template.rb
|
367
|
+
- lib/hamlit/temple_line_counter.rb
|
367
368
|
- lib/hamlit/utils.rb
|
368
369
|
- lib/hamlit/version.rb
|
369
370
|
homepage: https://github.com/k0kubun/hamlit
|
@@ -385,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
385
386
|
- !ruby/object:Gem::Version
|
386
387
|
version: '0'
|
387
388
|
requirements: []
|
388
|
-
rubygems_version: 3.
|
389
|
+
rubygems_version: 3.1.2
|
389
390
|
signing_key:
|
390
391
|
specification_version: 4
|
391
392
|
summary: High Performance Haml Implementation
|