syntax_tree-haml 4.0.1 → 4.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '081e23c9f9f103fd51db64973ec590cb21e1f4e34b31dc6769e70d2e7ec83db8'
4
- data.tar.gz: 900420a1918e007b906c3bf94d9d8639bc379acd82f29b1cdd307c2ca21688a7
3
+ metadata.gz: c410fddce7b0b3de3dca5f4f0ff6f1f495f70897d1a07f956ceb3cedb8a3bc42
4
+ data.tar.gz: 6f4866aefe38f780411b65fa2671a9f9491aba0249884dc6c6f627d1a76f5520
5
5
  SHA512:
6
- metadata.gz: 991fb1d1aedd65e2bcea53b89cc710dd3734109770bf03dc79070437129397cfbaa4b7a400c4584881e41a52db46bf0254cd84d3499ff1b4a3b3763ef29cb32e
7
- data.tar.gz: b48967b39546927871d86c485210ba6ccf007ae608bd3cdbacc8962658c1648d56e3ac76074e73042962142b799f0785b4719f8b680abbc972088e2eea622327
6
+ metadata.gz: b79312706a5519a3d6933040c99f353ca344290d9c026d27ee2b6aa5b092ef8f03e735ae5e0de4b832bf7acbdceeceb844bdb9ca46ddd1b6aa9ea3f8c1d37cbc
7
+ data.tar.gz: e0993ba8112bb8149cbcaf972ba588e2b347431254bf0d3d0a63482657d18d5f70af4aa58f185b9d696d5c028bae55621cb483ad9800474242c2236be3043e98
@@ -1,9 +1,11 @@
1
1
  name: Main
2
+
2
3
  on:
3
4
  push:
4
5
  branches:
5
6
  - main
6
7
  pull_request: {}
8
+
7
9
  jobs:
8
10
  ci:
9
11
  strategy:
@@ -14,10 +16,9 @@ jobs:
14
16
  - '2.7.5'
15
17
  - '3.0'
16
18
  - '3.1'
19
+ - '3.2'
17
20
  name: CI
18
21
  runs-on: ubuntu-latest
19
- env:
20
- CI: true
21
22
  steps:
22
23
  - uses: actions/checkout@v3
23
24
  - uses: ruby/setup-ruby@v1
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
+ ## [4.0.3] - 2023-03-12
10
+
11
+ ### Changed
12
+
13
+ - Fixed a bug where blank lines were being inserted into filter nodes accidentally.
14
+
15
+ ## [4.0.2] - 2023-03-09
16
+
17
+ ### Changed
18
+
19
+ - Require `prettier_print` `1.2.1` or higher to fix the infinite loop bug.
20
+ - Maintain blank lines in nested nodes.
21
+
9
22
  ## [4.0.1] - 2023-03-07
10
23
 
11
24
  ### Changed
@@ -93,7 +106,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
93
106
 
94
107
  - 🎉 Initial release! 🎉
95
108
 
96
- [unreleased]: https://github.com/ruby-syntax-tree/syntax_tree-haml/compare/v4.0.1...HEAD
109
+ [unreleased]: https://github.com/ruby-syntax-tree/syntax_tree-haml/compare/v4.0.3...HEAD
110
+ [4.0.3]: https://github.com/ruby-syntax-tree/syntax_tree-haml/compare/v4.0.2...v4.0.3
111
+ [4.0.2]: https://github.com/ruby-syntax-tree/syntax_tree-haml/compare/v4.0.1...v4.0.2
97
112
  [4.0.1]: https://github.com/ruby-syntax-tree/syntax_tree-haml/compare/v4.0.0...v4.0.1
98
113
  [4.0.0]: https://github.com/ruby-syntax-tree/syntax_tree-haml/compare/v3.0.0...v4.0.0
99
114
  [3.0.0]: https://github.com/ruby-syntax-tree/syntax_tree-haml/compare/v2.0.0...v3.0.0
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- syntax_tree-haml (4.0.1)
4
+ syntax_tree-haml (4.0.3)
5
5
  haml (>= 5.2)
6
- prettier_print (>= 1.0.0)
6
+ prettier_print (>= 1.2.1)
7
7
  syntax_tree (>= 6.0.0)
8
8
 
9
9
  GEM
@@ -15,7 +15,7 @@ GEM
15
15
  thor
16
16
  tilt
17
17
  minitest (5.18.0)
18
- prettier_print (1.2.0)
18
+ prettier_print (1.2.1)
19
19
  rake (13.0.6)
20
20
  simplecov (0.22.0)
21
21
  docile (~> 1.1)
@@ -69,15 +69,17 @@ module SyntaxTree
69
69
  q.breakable_force
70
70
  first = true
71
71
 
72
- node.value[:text].each_line(chomp: true) do |line|
73
- if first
74
- first = false
75
- else
76
- q.breakable_force
77
- end
72
+ node.value[:text]
73
+ .rstrip
74
+ .each_line(chomp: true) do |line|
75
+ if first
76
+ first = false
77
+ else
78
+ q.breakable_force
79
+ end
78
80
 
79
- q.text(line)
80
- end
81
+ q.text(line)
82
+ end
81
83
  end
82
84
  end
83
85
  end
@@ -124,8 +126,7 @@ module SyntaxTree
124
126
 
125
127
  node.children.each do |child|
126
128
  q.breakable_force if previous_line && (child.line - previous_line) > 1
127
- previous_line =
128
- child.children.any? ? child.children.last.line : child.line
129
+ previous_line = child.last_line
129
130
 
130
131
  visit(child)
131
132
  q.breakable_force
@@ -504,9 +505,17 @@ module SyntaxTree
504
505
  q.group do
505
506
  q.group { yield }
506
507
  q.indent do
508
+ previous_line = nil
509
+
507
510
  node.children.each do |child|
508
511
  q.breakable_force
512
+
513
+ if previous_line && (child.line - previous_line) > 1
514
+ q.breakable_force
515
+ end
516
+
509
517
  visit(child)
518
+ previous_line = child.last_line
510
519
  end
511
520
  end
512
521
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SyntaxTree
4
4
  module Haml
5
- VERSION = "4.0.1"
5
+ VERSION = "4.0.3"
6
6
  end
7
7
  end
@@ -82,10 +82,30 @@ class Haml::Parser::ParseNode
82
82
  end
83
83
  end
84
84
 
85
+ # This is our entrypoint for the formatter. We effectively delegate this to
86
+ # accepting the Format visitor.
85
87
  def format(q)
86
88
  accept(SyntaxTree::Haml::Format.new(q))
87
89
  end
88
90
 
91
+ # When we're formatting a list of children, we need to know the last line a
92
+ # node is on. This is because the next node in the list of children should be
93
+ # at most 1 blank line below the last line of the previous node. We cache this
94
+ # because at worst it requires walking the entire tree because filter nodes
95
+ # can take up multiple lines.
96
+ def last_line
97
+ @last_line ||=
98
+ if children.any?
99
+ children.last.last_line
100
+ elsif type == :filter
101
+ line + value[:text].rstrip.count("\n") + 1
102
+ else
103
+ line
104
+ end
105
+ end
106
+
107
+ # This is our entrypoint for the pretty printer. We effectively delegate this
108
+ # to accepting the PrettyPrint visitor.
89
109
  def pretty_print(q)
90
110
  accept(SyntaxTree::Haml::PrettyPrint.new(q))
91
111
  end
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = %w[lib]
26
26
 
27
27
  spec.add_dependency "haml", ">= 5.2"
28
- spec.add_dependency "prettier_print", ">= 1.0.0"
28
+ spec.add_dependency "prettier_print", ">= 1.2.1"
29
29
  spec.add_dependency "syntax_tree", ">= 6.0.0"
30
30
 
31
31
  spec.add_development_dependency "bundler"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syntax_tree-haml
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Newton
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-07 00:00:00.000000000 Z
11
+ date: 2023-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: haml
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0
33
+ version: 1.2.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0
40
+ version: 1.2.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: syntax_tree
43
43
  requirement: !ruby/object:Gem::Requirement