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