rufo 0.0.19 → 0.0.20
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 +4 -4
- data/.rufo +1 -0
- data/README.md +3 -0
- data/lib/rufo/formatter.rb +27 -5
- data/lib/rufo/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b322ac4c05931d04475299c6b98e3ca70537941c
|
4
|
+
data.tar.gz: 707eeb3653a5e309028fd3aea0f104654f9d7e4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14cbee46609b75b46199a5dcd1b54f6066efc8b1fda1ec1e0f6494191f41fe6f0d8148c632c46bcb6868cd7a8ade5421d9d0a04dfbaaa125c51300b65d1a273c
|
7
|
+
data.tar.gz: 4b983949675d6764b73ecf1479ad26992aace76b197b1e96a348a8699416e83b2da645bf2392f066d5dca30a1d08e8c486ecb7a11c1ef5a9f2c98390f0373a59
|
data/.rufo
CHANGED
data/README.md
CHANGED
data/lib/rufo/formatter.rb
CHANGED
@@ -52,12 +52,16 @@ class Rufo::Formatter
|
|
52
52
|
# Hash keys positions
|
53
53
|
@hash_keys_positions = []
|
54
54
|
|
55
|
+
# Case when positions
|
56
|
+
@case_when_positions = []
|
57
|
+
|
55
58
|
# Settings
|
56
59
|
indent_size options.fetch(:indent_size, 2)
|
57
60
|
space_after_hash_brace options.fetch(:space_after_hash_brace, :dynamic)
|
58
61
|
align_comments options.fetch(:align_comments, true)
|
59
62
|
align_assignments options.fetch(:align_assignments, false)
|
60
63
|
align_hash_keys options.fetch(:align_hash_keys, true)
|
64
|
+
align_case_when options.fetch(:align_case_when, true)
|
61
65
|
end
|
62
66
|
|
63
67
|
# The indent size (default: 2)
|
@@ -94,6 +98,11 @@ class Rufo::Formatter
|
|
94
98
|
@align_hash_keys = value
|
95
99
|
end
|
96
100
|
|
101
|
+
# Whether to align successive case when (default: true)
|
102
|
+
def align_case_when(value)
|
103
|
+
@align_case_when = value
|
104
|
+
end
|
105
|
+
|
97
106
|
def format
|
98
107
|
visit @sexp
|
99
108
|
consume_end
|
@@ -101,6 +110,7 @@ class Rufo::Formatter
|
|
101
110
|
|
102
111
|
do_align_assignments if @align_assignments
|
103
112
|
do_align_hash_keys if @align_hash_keys
|
113
|
+
do_align_case_when if @align_case_when
|
104
114
|
do_align_comments if @align_comments
|
105
115
|
end
|
106
116
|
|
@@ -672,10 +682,14 @@ class Rufo::Formatter
|
|
672
682
|
track_alignment @hash_keys_positions, 0, @current_hash.object_id
|
673
683
|
end
|
674
684
|
|
685
|
+
def track_case_when
|
686
|
+
track_alignment @case_when_positions
|
687
|
+
end
|
688
|
+
|
675
689
|
def track_alignment(target, offset = 0, id = nil)
|
676
690
|
last = target.last
|
677
691
|
if last && last[0] == @line
|
678
|
-
|
692
|
+
# Track only the first alignment in a line
|
679
693
|
return
|
680
694
|
end
|
681
695
|
|
@@ -1799,7 +1813,7 @@ class Rufo::Formatter
|
|
1799
1813
|
|
1800
1814
|
if has_newline
|
1801
1815
|
write_line
|
1802
|
-
write_indent
|
1816
|
+
write_indent
|
1803
1817
|
end
|
1804
1818
|
|
1805
1819
|
if last_token
|
@@ -2402,10 +2416,14 @@ class Rufo::Formatter
|
|
2402
2416
|
if then_keyword
|
2403
2417
|
next_token
|
2404
2418
|
skip_space
|
2419
|
+
track_case_when
|
2405
2420
|
skip_semicolons
|
2406
2421
|
|
2407
2422
|
if newline? || comment?
|
2408
2423
|
inline = false
|
2424
|
+
|
2425
|
+
# Cancel tracking of `case when ... then` on a nelwine.
|
2426
|
+
@case_when_positions.pop
|
2409
2427
|
else
|
2410
2428
|
write " then "
|
2411
2429
|
end
|
@@ -2415,7 +2433,9 @@ class Rufo::Formatter
|
|
2415
2433
|
if newline? || comment?
|
2416
2434
|
inline = false
|
2417
2435
|
else
|
2418
|
-
write ";
|
2436
|
+
write ";"
|
2437
|
+
track_case_when
|
2438
|
+
write " "
|
2419
2439
|
end
|
2420
2440
|
end
|
2421
2441
|
|
@@ -2926,11 +2946,13 @@ class Rufo::Formatter
|
|
2926
2946
|
do_align @hash_keys_positions, true, true
|
2927
2947
|
end
|
2928
2948
|
|
2949
|
+
def do_align_case_when
|
2950
|
+
do_align @case_when_positions
|
2951
|
+
end
|
2952
|
+
|
2929
2953
|
def do_align(elements, adjust_comments = true, hash_keys = false)
|
2930
2954
|
lines = @output.lines
|
2931
2955
|
|
2932
|
-
elements.reject! { |l, c, indent, id, off, ignore| ignore == :ignore }
|
2933
|
-
|
2934
2956
|
# Chunk comments that are in consecutive lines
|
2935
2957
|
chunks = chunk_while(elements) do |(l1, c1, i1, id1), (l2, c2, i2, id2)|
|
2936
2958
|
l1 + 1 == l2 && i1 == i2 && id1 == id2
|
data/lib/rufo/version.rb
CHANGED