better_html 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/better_html/parser.rb +19 -0
- data/lib/better_html/version.rb +1 -1
- data/test/better_html/parser_test.rb +12 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32b2be796cb45394207282b6a25e8693d1ce3f97
|
4
|
+
data.tar.gz: 476a5f910d219388ae59fce6d659a42c39592b7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1db514d84e7fd2ba2f6af76afeb01ca1dfd386d98b4c0cf969046e7ab48b4359a3c6697e38836db7722916a250dd716e5e477376981c9b711f48dd435626990
|
7
|
+
data.tar.gz: 9cc7b477585bdb26bedc4ee9858e8a1b02d0ba9fdbc19f4dc602049bbc6ae359429443cd3ea0939da4913165042df6d49c781980436c04514e19bc4d1521f116
|
data/lib/better_html/parser.rb
CHANGED
@@ -9,6 +9,16 @@ module BetterHtml
|
|
9
9
|
class Parser
|
10
10
|
attr_reader :template_language
|
11
11
|
|
12
|
+
class Error < HtmlError
|
13
|
+
attr_reader :location
|
14
|
+
alias_method :loc, :location
|
15
|
+
|
16
|
+
def initialize(message, location:)
|
17
|
+
super(message)
|
18
|
+
@location = location
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
12
22
|
def initialize(document, template_language: :html)
|
13
23
|
@document = document
|
14
24
|
@template_language = template_language
|
@@ -33,6 +43,15 @@ module BetterHtml
|
|
33
43
|
@ast ||= build_document_node
|
34
44
|
end
|
35
45
|
|
46
|
+
def parser_errors
|
47
|
+
@erb.parser.errors.map do |error|
|
48
|
+
Error.new(
|
49
|
+
error.message,
|
50
|
+
location: Tokenizer::Location.new(@document, error.position, error.position + 1)
|
51
|
+
)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
36
55
|
def inspect
|
37
56
|
"#<#{self.class.name} ast=#{ast.inspect}>"
|
38
57
|
end
|
data/lib/better_html/version.rb
CHANGED
@@ -12,6 +12,18 @@ module BetterHtml
|
|
12
12
|
assert_equal s(:document), tree.ast
|
13
13
|
end
|
14
14
|
|
15
|
+
test "parser errors" do
|
16
|
+
tree = Parser.new('<>')
|
17
|
+
|
18
|
+
assert_equal 1, tree.parser_errors.size
|
19
|
+
assert_equal "expected '/' or tag name", tree.parser_errors[0].message
|
20
|
+
assert_equal 1..2, tree.parser_errors[0].location.range
|
21
|
+
assert_equal <<~EOF.strip, tree.parser_errors[0].location.line_source_with_underline
|
22
|
+
<>
|
23
|
+
^
|
24
|
+
EOF
|
25
|
+
end
|
26
|
+
|
15
27
|
test "consume cdata nodes" do
|
16
28
|
code = "<![CDATA[ foo ]]>"
|
17
29
|
tree = Parser.new(code)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: better_html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francois Chagnon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ast
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.0.
|
103
|
+
version: 0.0.6
|
104
104
|
type: :runtime
|
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.0.
|
110
|
+
version: 0.0.6
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|