w_syntax_tree-erb 0.10.0 → 0.10.2

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: e48aeaba8ef070f5f13bdd166cf4dd9f1f1e4693de8537d2dbf5b86f90092de6
4
- data.tar.gz: ade025cc4a31c3f0b5461650a97ff2074de6dc868197ab09a2d2b0c047b1d0cc
3
+ metadata.gz: 657167139e259c320442756b2da4ce405e3ef3df7c3c370e6cd681561c3e7de6
4
+ data.tar.gz: 7f369c4b9bb2416a533a10734a4b384496712712e9787465d96ff76661a8be6d
5
5
  SHA512:
6
- metadata.gz: 58ff254dc23a076b7bbc87606c3672c8bde4b5df6d526cb6ea5d6cedf54c1f9fb9b0b832b7ae06d7eb23731bf5a95cade7d0a443e9ce11ea71a1578ce0591d49
7
- data.tar.gz: 30fbe095d0e624ed126897ff1fccc229a03f4a0375d67e9718257900856e1587be7b406a510b61e8ea6574af9c7a1c46fd2ee0c15586819c20e90e452bfbbace
6
+ metadata.gz: 2a4efea93faf97c4fe05e9a7af6e0dcfd488ffbdea1ad1380e4d13d2a033490cc65ce275b3311d1c1d4c50d7d59efce2552fdd4e13a8324fc8cd5d514ac1c513
7
+ data.tar.gz: 022be3662cdffa4bf6416354a1f8b518bf1ca0f84875c99d5a919519b7b48e8e8ec608f132c6e3a0f1eaeb2651a7ae337dec0b7961ea14782019205f0221faa2
data/CHANGELOG.md CHANGED
@@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.10.2] - 2023-08-22
10
+
11
+ ### Fixes
12
+
13
+ - Handles formatting empty documents and removing leading new-linews in files with content.
14
+ - Removes trailing whitespace from char data if it is the last element in a document, block or group.
15
+
16
+ ## [0.10.1] - 2023-08-20
17
+
18
+ ### Added
19
+
20
+ - Allow `DOCTYPE` to be after other tags, to work with e.g. ERB-tags on first line.
21
+
9
22
  ## [0.10.0] - 2023-08-20
10
23
 
11
24
  - Changes how whitespace and newlines are handled.
@@ -70,7 +83,8 @@ Output:
70
83
  - Can format a lot of .html.erb-syntax and works as a plugin to syntax_tree.
71
84
  - This is still early and there are a lot of different weird syntaxes out there.
72
85
 
73
- [unreleased]: https://github.com/davidwessman/syntax_tree-erb/compare/v0.10.0...HEAD
86
+ [unreleased]: https://github.com/davidwessman/syntax_tree-erb/compare/v0.10.1...HEAD
87
+ [0.10.1]: https://github.com/davidwessman/syntax_tree-erb/compare/v0.10.0...v0.10.1
74
88
  [0.10.0]: https://github.com/davidwessman/syntax_tree-erb/compare/v0.9.5...v0.10.0
75
89
  [0.9.5]: https://github.com/davidwessman/syntax_tree-erb/compare/v0.9.4...v0.9.5
76
90
  [0.9.4]: https://github.com/davidwessman/syntax_tree-erb/compare/v0.9.3...v0.9.4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- w_syntax_tree-erb (0.10.0)
4
+ w_syntax_tree-erb (0.10.2)
5
5
  prettier_print (~> 1.2, >= 1.2.0)
6
6
  syntax_tree (~> 6.1, >= 6.1.1)
7
7
 
@@ -327,7 +327,7 @@ module SyntaxTree
327
327
  group = []
328
328
 
329
329
  if child_nodes.size == 1
330
- visit(child_nodes.first)
330
+ visit(child_nodes.first.without_new_line)
331
331
  return
332
332
  end
333
333
 
@@ -606,6 +606,21 @@ module SyntaxTree
606
606
  def skip?
607
607
  value.value.strip.empty?
608
608
  end
609
+
610
+ # Also remove trailing whitespace
611
+ def without_new_line
612
+ self.class.new(
613
+ **deconstruct_keys([]).merge(
614
+ new_line: nil,
615
+ value:
616
+ Token.new(
617
+ type: value.type,
618
+ location: value.location,
619
+ value: value.value.rstrip
620
+ )
621
+ )
622
+ )
623
+ end
609
624
  end
610
625
 
611
626
  class NewLine < Node
@@ -20,16 +20,16 @@ module SyntaxTree
20
20
  def initialize(source)
21
21
  @source = source
22
22
  @tokens = make_tokens
23
+ @found_doctype = false
23
24
  end
24
25
 
25
26
  def parse
26
- doctype = maybe { parse_doctype }
27
27
  elements = many { parse_any_tag }
28
28
 
29
29
  location =
30
30
  elements.first.location.to(elements.last.location) if elements.any?
31
31
 
32
- Document.new(elements: [doctype].compact + elements, location: location)
32
+ Document.new(elements: elements, location: location)
33
33
  end
34
34
 
35
35
  def debug_tokens
@@ -44,11 +44,23 @@ module SyntaxTree
44
44
  loop do
45
45
  tag =
46
46
  atleast do
47
- maybe { parse_html_comment } || maybe { parse_erb_tag } ||
48
- maybe { parse_erb_comment } || maybe { parse_html_element } ||
49
- maybe { parse_new_line } || maybe { parse_chardata }
47
+ maybe { parse_doctype } || maybe { parse_html_comment } ||
48
+ maybe { parse_erb_tag } || maybe { parse_erb_comment } ||
49
+ maybe { parse_html_element } || maybe { parse_new_line } ||
50
+ maybe { parse_chardata }
50
51
  end
51
52
 
53
+ if tag.is_a?(Doctype)
54
+ if @found_doctype
55
+ raise(ParseError, "Only one doctype element is allowed")
56
+ else
57
+ @found_doctype = true
58
+ end
59
+ end
60
+
61
+ # Ignore new lines in beginning of document
62
+ next if tag.is_a?(NewLine)
63
+
52
64
  # Allow skipping empty CharData
53
65
  return tag unless tag.skip?
54
66
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SyntaxTree
4
4
  module ERB
5
- VERSION = "0.10.0"
5
+ VERSION = "0.10.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: w_syntax_tree-erb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Newton
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-08-20 00:00:00.000000000 Z
12
+ date: 2023-08-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: prettier_print