rufo 0.8.1 → 0.9.0

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: e8e977df730572c1448155a1bc4e3fd358a1abcdadf78c18700874e75e9c54aa
4
- data.tar.gz: 07a074f0137daf3c957dd2d6646efb72281b062b93a7df7b1981b3fdcdd3ca79
3
+ metadata.gz: ea171b0f22404cea26bb2f1263b5787721a968bc4be3dccb96d258ca7ab1586a
4
+ data.tar.gz: bdbafe76de95494aadff70e0183805dbe5a1734373b45d8fa5f6c4c8addb4e48
5
5
  SHA512:
6
- metadata.gz: 32de1903e674e7a21f34b0e092d2fd4af9fa9db9f4570611b9e50bb7ec1ba031df7b940dbc9797855688d3a6956dfa2830a0251bf4ec7296b6f4a7b5117ad5fd
7
- data.tar.gz: 9592effea9978267ab0dc2d641b8e033a7a4156723a68e0aaf2b1742f69b768329a6a8d4824fcd0fdaf1ed342279f59a1cb2e15c13514045d350ddbfcbce6060
6
+ metadata.gz: 79279d81687a7137424100278d5fbc3727052317ad264bbf9b9379ec8f1902bf4e2a8239d6ba43b219149912372f9db78bc82288ff645889bd1333741c072b9d
7
+ data.tar.gz: 604473d7682a92356a4e3fd9aa865f3a0cb5ee248e7bac2b237c8f917d5feffa7fc66597dfbd5a91101154cfdbd5f9adb4d402fad2e0fcf034b4a3be79452867
@@ -12,6 +12,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
12
12
 
13
13
  ### Added
14
14
 
15
+ ## [0.9.0] - 2020-01-11
16
+
17
+ ### Added
18
+
19
+ - Support for trim style erb templates ending with `-%>`.
20
+ - Support for rails raw mode erb templates starting with `<%==`.
21
+ - Support for ruby 2.7 features. This includes beginless ranges `..10`, method argument forwarding `def forward(...); to(...); end` and keyword args not being allowed `def foo(*args, **nil)`.
22
+
15
23
  ## [0.8.1] - 2020-01-02
16
24
 
17
25
  ### Fixed
@@ -1,6 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
  require "erb"
3
3
 
4
+ class CustomScanner < ERB::Compiler::TrimScanner
5
+ def initialize(src)
6
+ super(src, "<>", false)
7
+ @scan_reg = /(.*?)(%>\r?\n|#{(stags + etags).join("|")}|\n|\z)/m
8
+ end
9
+
10
+ def stags
11
+ ["<%=="] + super
12
+ end
13
+
14
+ def etags
15
+ super + ["-%>"]
16
+ end
17
+ end
18
+
4
19
  class Rufo::ErbFormatter
5
20
  def self.format(code, **options)
6
21
  new(code, **options).format
@@ -9,9 +24,8 @@ class Rufo::ErbFormatter
9
24
  attr_reader :result
10
25
 
11
26
  def initialize(code, **options)
12
- compiler = ERB::Compiler.new("<>")
13
27
  @options = options
14
- @scanner = compiler.make_scanner(code)
28
+ @scanner = CustomScanner.new(code)
15
29
  @code_mode = false
16
30
  @current_lineno = 0
17
31
  @current_column = 0
@@ -484,6 +484,8 @@ class Rufo::Formatter
484
484
  visit_begin_node(node)
485
485
  when :END
486
486
  visit_end_node(node)
487
+ when :args_forward
488
+ consume_op("...")
487
489
  else
488
490
  bug "Unhandled node: #{node.first}"
489
491
  end
@@ -2052,6 +2054,7 @@ class Rufo::Formatter
2052
2054
  end
2053
2055
 
2054
2056
  skip_space_or_newline
2057
+ consume_keyword("nil") if current_token[1] == :on_kw
2055
2058
  check :on_rparen
2056
2059
  write ")"
2057
2060
  next_token
@@ -2125,6 +2128,8 @@ class Rufo::Formatter
2125
2128
  case rest_param
2126
2129
  when 0, [:excessed_comma]
2127
2130
  write_params_comma
2131
+ when [:args_forward]
2132
+ consume_op "..."
2128
2133
  else
2129
2134
  # [:rest_param, [:@ident, "x", [1, 15]]]
2130
2135
  _, rest = rest_param
@@ -2377,7 +2382,7 @@ class Rufo::Formatter
2377
2382
  # [:dot2, left, right]
2378
2383
  _, left, right = node
2379
2384
 
2380
- visit left
2385
+ visit left unless left.nil?
2381
2386
  skip_space_or_newline
2382
2387
  consume_op(inclusive ? ".." : "...")
2383
2388
  skip_space_or_newline
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rufo
4
- VERSION = "0.8.1"
4
+ VERSION = "0.9.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rufo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ary Borenszweig
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-02 00:00:00.000000000 Z
11
+ date: 2020-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  requirements: []
169
- rubygems_version: 3.0.3
169
+ rubygems_version: 3.1.2
170
170
  signing_key:
171
171
  specification_version: 4
172
172
  summary: Ruby code formatter