rufo 0.8.1 → 0.9.0

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: 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