rufo 0.2.0 → 0.3.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 +4 -4
- data/.travis.yml +5 -1
- data/CHANGELOG.md +12 -0
- data/README.md +1 -1
- data/lib/rufo/command.rb +2 -2
- data/lib/rufo/dot_file.rb +4 -4
- data/lib/rufo/formatter.rb +127 -23
- data/lib/rufo/settings.rb +2 -1
- data/lib/rufo/version.rb +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 68781ad7a9acb9d0469157827d84c19a3c43582d
         | 
| 4 | 
            +
              data.tar.gz: 8dd6f678a49a8e26bd01f534ca0b3c060b88d8a9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 82a80a462d83f51b449a64c6b12c6a49fdd658b3321bc720a24239613ca375e5340585e2e81bd667c9c88eb956bf5d5dae557434186924817b8e9ef3c8f9ec9d
         | 
| 7 | 
            +
              data.tar.gz: df226a82d72e7ec562b6b002e9c89956a6add4a8b5f2933c7e4f53ea53140f270acbf21e50ab297689dab1a0dad2e71fc671ee5fa24a2a638a6756cec8762dbd
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -2,10 +2,14 @@ sudo: false | |
| 2 2 | 
             
            language: ruby
         | 
| 3 3 | 
             
            cache: bundler
         | 
| 4 4 | 
             
            rvm:
         | 
| 5 | 
            +
              - 2.5.0
         | 
| 5 6 | 
             
              - 2.4.2
         | 
| 6 7 | 
             
              - 2.3.5
         | 
| 7 8 | 
             
              - 2.2.8
         | 
| 8 9 | 
             
              - ruby-head
         | 
| 9 | 
            -
             | 
| 10 | 
            +
            matrix:
         | 
| 11 | 
            +
              allow_failures:
         | 
| 12 | 
            +
                - rvm: ruby-head
         | 
| 13 | 
            +
            before_install: gem install bundler -v 1.16.1
         | 
| 10 14 | 
             
            script:
         | 
| 11 15 | 
             
              - bundle exec rake ci
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -6,6 +6,18 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. | |
| 6 6 |  | 
| 7 7 | 
             
            ## [Unreleased]
         | 
| 8 8 |  | 
| 9 | 
            +
            ## [0.3.0] - 2018-03-24
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ### Added
         | 
| 12 | 
            +
            - Added Idempotency check to source_specs/ tester.
         | 
| 13 | 
            +
            - Normalize string quotes according to quote_style, which defaults to :double.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ## Fixed
         | 
| 16 | 
            +
            - Fix printing of extraneous trailing semicolons from inline classes, modules, methods (issue [#59](https://github.com/ruby-formatter/rufo/issues/59))
         | 
| 17 | 
            +
            - Fix unhandled white space between array getter/setters `x[0] [0]` (issue [#62](https://github.com/ruby-formatter/rufo/issues/62))
         | 
| 18 | 
            +
            - Fix comma printing for heredocs when inside a hash (issue [#61](https://github.com/ruby-formatter/rufo/issues/61))
         | 
| 19 | 
            +
            - Fix array literals against changes to Ruby 2.5.0
         | 
| 20 | 
            +
             | 
| 9 21 | 
             
            ## [0.2.0] - 2017-11-13
         | 
| 10 22 | 
             
            ### Changed
         | 
| 11 23 | 
             
            Config parsing and handling:
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # Rufo
         | 
| 2 2 |  | 
| 3 | 
            -
            [](https://travis-ci.org/ruby-formatter/rufo)
         | 
| 3 | 
            +
            [](https://travis-ci.org/ruby-formatter/rufo)
         | 
| 4 4 | 
             
            [](https://rubygems.org/gems/rufo)
         | 
| 5 5 |  | 
| 6 6 | 
             
            **Ru**by **fo**rmatter
         | 
    
        data/lib/rufo/command.rb
    CHANGED
    
    | @@ -65,7 +65,7 @@ class Rufo::Command | |
| 65 65 |  | 
| 66 66 | 
             
                args.each do |arg|
         | 
| 67 67 | 
             
                  if Dir.exist?(arg)
         | 
| 68 | 
            -
                    files.concat Dir[File.join(arg,  | 
| 68 | 
            +
                    files.concat Dir[File.join(arg, "**", "*.rb")].select(&File.method(:file?))
         | 
| 69 69 | 
             
                  elsif File.exist?(arg)
         | 
| 70 70 | 
             
                    files << arg
         | 
| 71 71 | 
             
                  else
         | 
| @@ -109,7 +109,7 @@ Rufo Warning! | |
| 109 109 | 
             
              end
         | 
| 110 110 |  | 
| 111 111 | 
             
              def squiggly_warning_files
         | 
| 112 | 
            -
                @squiggly_warning_files.join( | 
| 112 | 
            +
                @squiggly_warning_files.join(", ")
         | 
| 113 113 | 
             
              end
         | 
| 114 114 |  | 
| 115 115 | 
             
              def backported_version
         | 
    
        data/lib/rufo/dot_file.rb
    CHANGED
    
    | @@ -22,12 +22,12 @@ class Rufo::DotFile | |
| 22 22 | 
             
                file_contents.lines
         | 
| 23 23 | 
             
                             .map { |s| s.strip.split(/\s+/, 2) }
         | 
| 24 24 | 
             
                             .each_with_object({}) do |(name, value), acc|
         | 
| 25 | 
            -
                  value ||=  | 
| 26 | 
            -
                  if value.start_with?( | 
| 25 | 
            +
                  value ||= ""
         | 
| 26 | 
            +
                  if value.start_with?(":")
         | 
| 27 27 | 
             
                    value = value[1..-1].to_sym
         | 
| 28 | 
            -
                  elsif value ==  | 
| 28 | 
            +
                  elsif value == "true"
         | 
| 29 29 | 
             
                    value = true
         | 
| 30 | 
            -
                  elsif value ==  | 
| 30 | 
            +
                  elsif value == "false"
         | 
| 31 31 | 
             
                    value = false
         | 
| 32 32 | 
             
                  else
         | 
| 33 33 | 
             
                    $stderr.puts "Unknown config value=#{value.inspect} for #{name.inspect}"
         | 
    
        data/lib/rufo/formatter.rb
    CHANGED
    
    | @@ -159,7 +159,20 @@ class Rufo::Formatter | |
| 159 159 | 
             
                # This is [[line, original_line], ...]
         | 
| 160 160 | 
             
                @inline_declarations = []
         | 
| 161 161 |  | 
| 162 | 
            +
                # This is used to track how far deep we are in the AST.
         | 
| 163 | 
            +
                # This is useful as it allows you to check if you are inside an array
         | 
| 164 | 
            +
                # when dealing with heredocs.
         | 
| 165 | 
            +
                @node_level = 0
         | 
| 166 | 
            +
             | 
| 167 | 
            +
                # This represents the node level of the most recent literal elements list.
         | 
| 168 | 
            +
                # It is used to track if we are in a list of elements so that commas
         | 
| 169 | 
            +
                # can be added appropriately for heredocs for example.
         | 
| 170 | 
            +
                @literal_elements_level = nil
         | 
| 171 | 
            +
             | 
| 162 172 | 
             
                init_settings(options)
         | 
| 173 | 
            +
             | 
| 174 | 
            +
                # Which quote character are we using?
         | 
| 175 | 
            +
                @quote_char = (quote_style == :double) ? '"' : "'"
         | 
| 163 176 | 
             
              end
         | 
| 164 177 |  | 
| 165 178 | 
             
              def format
         | 
| @@ -175,6 +188,7 @@ class Rufo::Formatter | |
| 175 188 | 
             
              end
         | 
| 176 189 |  | 
| 177 190 | 
             
              def visit(node)
         | 
| 191 | 
            +
                @node_level += 1
         | 
| 178 192 | 
             
                unless node.is_a?(Array)
         | 
| 179 193 | 
             
                  bug "unexpected node: #{node} at #{current_token}"
         | 
| 180 194 | 
             
                end
         | 
| @@ -473,6 +487,8 @@ class Rufo::Formatter | |
| 473 487 | 
             
                else
         | 
| 474 488 | 
             
                  bug "Unhandled node: #{node.first}"
         | 
| 475 489 | 
             
                end
         | 
| 490 | 
            +
              ensure
         | 
| 491 | 
            +
                @node_level -= 1
         | 
| 476 492 | 
             
              end
         | 
| 477 493 |  | 
| 478 494 | 
             
              def visit_exps(exps, with_indent: false, with_lines: true, want_trailing_multiline: false)
         | 
| @@ -574,32 +590,96 @@ class Rufo::Formatter | |
| 574 590 | 
             
                  # Accumulate heredoc: we'll write it once
         | 
| 575 591 | 
             
                  # we find a newline.
         | 
| 576 592 | 
             
                  @heredocs << [node, tilde]
         | 
| 577 | 
            -
                  next_token
         | 
| 593 | 
            +
                  # Get the next_token while capturing any output.
         | 
| 594 | 
            +
                  # This is needed so that we can add a comma if one is not already present.
         | 
| 595 | 
            +
                  captured_output = capture_output { next_token }
         | 
| 596 | 
            +
             | 
| 597 | 
            +
                  inside_literal_elements_list = !@literal_elements_level.nil? &&
         | 
| 598 | 
            +
                                                 (@node_level - @literal_elements_level) == 2
         | 
| 599 | 
            +
                  needs_comma = !comma? && trailing_commas
         | 
| 600 | 
            +
             | 
| 601 | 
            +
                  if inside_literal_elements_list && needs_comma
         | 
| 602 | 
            +
                    write ","
         | 
| 603 | 
            +
                    @last_was_heredoc = true
         | 
| 604 | 
            +
                  end
         | 
| 605 | 
            +
             | 
| 606 | 
            +
                  @output << captured_output
         | 
| 578 607 | 
             
                  return
         | 
| 579 608 | 
             
                elsif current_token_kind == :on_backtick
         | 
| 580 609 | 
             
                  consume_token :on_backtick
         | 
| 581 610 | 
             
                else
         | 
| 611 | 
            +
                  return if format_simple_string(node)
         | 
| 582 612 | 
             
                  consume_token :on_tstring_beg
         | 
| 583 613 | 
             
                end
         | 
| 584 614 |  | 
| 585 615 | 
             
                visit_string_literal_end(node)
         | 
| 586 616 | 
             
              end
         | 
| 587 617 |  | 
| 588 | 
            -
               | 
| 618 | 
            +
              # For simple string formatting, look for nodes like:
         | 
| 619 | 
            +
              #  [:string_literal, [:string_content, [:@tstring_content, "abc", [...]]]]
         | 
| 620 | 
            +
              # and return the simple string inside.
         | 
| 621 | 
            +
              def simple_string(node)
         | 
| 622 | 
            +
                inner = node[1][1..-1]
         | 
| 623 | 
            +
                return if inner.length > 1
         | 
| 624 | 
            +
                inner = inner[0]
         | 
| 625 | 
            +
                return "" if !inner
         | 
| 626 | 
            +
                return if inner[0] != :@tstring_content
         | 
| 627 | 
            +
                string = inner[1]
         | 
| 628 | 
            +
                string
         | 
| 629 | 
            +
              end
         | 
| 630 | 
            +
             | 
| 631 | 
            +
              # should we format this string according to :quote_style?
         | 
| 632 | 
            +
              def should_format_string?(string)
         | 
| 633 | 
            +
                # don't format %q or %Q
         | 
| 634 | 
            +
                return unless current_token_value == "'" || current_token_value == '"'
         | 
| 635 | 
            +
                # don't format strings containing slashes
         | 
| 636 | 
            +
                return if string.include?("\\")
         | 
| 637 | 
            +
                # don't format strings that contain our quote character
         | 
| 638 | 
            +
                return if string.include?(@quote_char)
         | 
| 639 | 
            +
                true
         | 
| 640 | 
            +
              end
         | 
| 641 | 
            +
             | 
| 642 | 
            +
              def format_simple_string(node)
         | 
| 643 | 
            +
                # is it a simple string node?
         | 
| 644 | 
            +
                string = simple_string(node)
         | 
| 645 | 
            +
                return if !string
         | 
| 646 | 
            +
             | 
| 647 | 
            +
                # is it eligible for formatting?
         | 
| 648 | 
            +
                return if !should_format_string?(string)
         | 
| 649 | 
            +
             | 
| 650 | 
            +
                # success!
         | 
| 651 | 
            +
                write @quote_char
         | 
| 652 | 
            +
                next_token
         | 
| 653 | 
            +
                with_unmodifiable_string_lines do
         | 
| 654 | 
            +
                  inner = node[1][1..-1]
         | 
| 655 | 
            +
                  visit_exps(inner, with_lines: false)
         | 
| 656 | 
            +
                end
         | 
| 657 | 
            +
                write @quote_char
         | 
| 658 | 
            +
                next_token
         | 
| 659 | 
            +
             | 
| 660 | 
            +
                true
         | 
| 661 | 
            +
              end
         | 
| 662 | 
            +
             | 
| 663 | 
            +
              # Every line between the first line and end line of this string (excluding the
         | 
| 664 | 
            +
              # first line) must remain like it is now (we don't want to mess with that when
         | 
| 665 | 
            +
              # indenting/dedenting)
         | 
| 666 | 
            +
              #
         | 
| 667 | 
            +
              # This can happen with heredocs, but also with string literals spanning
         | 
| 668 | 
            +
              # multiple lines.
         | 
| 669 | 
            +
              def with_unmodifiable_string_lines(&block)
         | 
| 589 670 | 
             
                line = @line
         | 
| 671 | 
            +
                yield
         | 
| 672 | 
            +
                (line + 1..@line).each do |i|
         | 
| 673 | 
            +
                  @unmodifiable_string_lines[i] = true
         | 
| 674 | 
            +
                end
         | 
| 675 | 
            +
              end
         | 
| 590 676 |  | 
| 677 | 
            +
              def visit_string_literal_end(node)
         | 
| 591 678 | 
             
                inner = node[1]
         | 
| 592 679 | 
             
                inner = inner[1..-1] unless node[0] == :xstring_literal
         | 
| 593 | 
            -
                visit_exps(inner, with_lines: false)
         | 
| 594 680 |  | 
| 595 | 
            -
                 | 
| 596 | 
            -
             | 
| 597 | 
            -
                # now (we don't want to mess with that when indenting/dedenting)
         | 
| 598 | 
            -
                #
         | 
| 599 | 
            -
                # This can happen with heredocs, but also with string literals
         | 
| 600 | 
            -
                # spanning multiple lines.
         | 
| 601 | 
            -
                (line + 1..@line).each do |i|
         | 
| 602 | 
            -
                  @unmodifiable_string_lines[i] = true
         | 
| 681 | 
            +
                with_unmodifiable_string_lines do
         | 
| 682 | 
            +
                  visit_exps(inner, with_lines: false)
         | 
| 603 683 | 
             
                end
         | 
| 604 684 |  | 
| 605 685 | 
             
                case current_token_kind
         | 
| @@ -1256,11 +1336,7 @@ class Rufo::Formatter | |
| 1256 1336 |  | 
| 1257 1337 | 
             
                visit call
         | 
| 1258 1338 |  | 
| 1259 | 
            -
                 | 
| 1260 | 
            -
                  consume_space
         | 
| 1261 | 
            -
                else
         | 
| 1262 | 
            -
                  consume_space
         | 
| 1263 | 
            -
                end
         | 
| 1339 | 
            +
                consume_space
         | 
| 1264 1340 |  | 
| 1265 1341 | 
             
                old_dot_column = @dot_column
         | 
| 1266 1342 | 
             
                old_original_dot_column = @original_dot_column
         | 
| @@ -1619,7 +1695,7 @@ class Rufo::Formatter | |
| 1619 1695 | 
             
                skip_space
         | 
| 1620 1696 | 
             
                if comma?
         | 
| 1621 1697 | 
             
                  check :on_comma
         | 
| 1622 | 
            -
                  write  | 
| 1698 | 
            +
                  write ","
         | 
| 1623 1699 | 
             
                  next_token
         | 
| 1624 1700 | 
             
                  skip_space_or_newline
         | 
| 1625 1701 | 
             
                end
         | 
| @@ -2139,14 +2215,26 @@ class Rufo::Formatter | |
| 2139 2215 | 
             
                has_space = current_token_value.end_with?(" ")
         | 
| 2140 2216 | 
             
                write current_token_value.strip
         | 
| 2141 2217 |  | 
| 2142 | 
            -
                # If there's a newline after `%w(`, write line and indent
         | 
| 2143 | 
            -
                if current_token_value.include?("\n") && elements
         | 
| 2218 | 
            +
                # (pre 2.5.0) If there's a newline after `%w(`, write line and indent
         | 
| 2219 | 
            +
                if current_token_value.include?("\n") && elements # "%w[\n"
         | 
| 2144 2220 | 
             
                  write_line
         | 
| 2145 | 
            -
                  write_indent | 
| 2221 | 
            +
                  write_indent next_indent
         | 
| 2146 2222 | 
             
                end
         | 
| 2147 2223 |  | 
| 2148 2224 | 
             
                next_token
         | 
| 2149 2225 |  | 
| 2226 | 
            +
                # fix for 2.5.0 ripper change
         | 
| 2227 | 
            +
                if current_token_kind == :on_words_sep && elements && !elements.empty?
         | 
| 2228 | 
            +
                  value = current_token_value
         | 
| 2229 | 
            +
                  has_space = value.start_with?(" ")
         | 
| 2230 | 
            +
                  if value.include?("\n") && elements # "\n "
         | 
| 2231 | 
            +
                    write_line
         | 
| 2232 | 
            +
                    write_indent next_indent
         | 
| 2233 | 
            +
                  end
         | 
| 2234 | 
            +
                  next_token
         | 
| 2235 | 
            +
                  has_space = true if current_token_value.start_with?(" ")
         | 
| 2236 | 
            +
                end
         | 
| 2237 | 
            +
             | 
| 2150 2238 | 
             
                if elements && !elements.empty?
         | 
| 2151 2239 | 
             
                  write_space if has_space
         | 
| 2152 2240 | 
             
                  column = @column
         | 
| @@ -2310,6 +2398,7 @@ class Rufo::Formatter | |
| 2310 2398 |  | 
| 2311 2399 | 
             
                token_column = current_token_column
         | 
| 2312 2400 |  | 
| 2401 | 
            +
                skip_space
         | 
| 2313 2402 | 
             
                check :on_lbracket
         | 
| 2314 2403 | 
             
                write "["
         | 
| 2315 2404 | 
             
                next_token
         | 
| @@ -2600,6 +2689,8 @@ class Rufo::Formatter | |
| 2600 2689 | 
             
                first_space = nil
         | 
| 2601 2690 |  | 
| 2602 2691 | 
             
                elements.each_with_index do |elem, i|
         | 
| 2692 | 
            +
                  @literal_elements_level = @node_level
         | 
| 2693 | 
            +
             | 
| 2603 2694 | 
             
                  is_last = last?(i, elements)
         | 
| 2604 2695 | 
             
                  wrote_comma = false
         | 
| 2605 2696 |  | 
| @@ -2641,9 +2732,10 @@ class Rufo::Formatter | |
| 2641 2732 | 
             
                    write_space unless is_last
         | 
| 2642 2733 | 
             
                  end
         | 
| 2643 2734 | 
             
                end
         | 
| 2735 | 
            +
                @literal_elements_level = nil
         | 
| 2644 2736 |  | 
| 2645 2737 | 
             
                if needs_trailing_comma
         | 
| 2646 | 
            -
                  write "," unless wrote_comma || !trailing_commas
         | 
| 2738 | 
            +
                  write "," unless wrote_comma || !trailing_commas || @last_was_heredoc
         | 
| 2647 2739 |  | 
| 2648 2740 | 
             
                  consume_end_of_line(first_space: first_space)
         | 
| 2649 2741 | 
             
                  write_indent
         | 
| @@ -2675,7 +2767,7 @@ class Rufo::Formatter | |
| 2675 2767 |  | 
| 2676 2768 | 
             
              def check_heredocs_in_literal_elements(is_last, needs_trailing_comma, wrote_comma)
         | 
| 2677 2769 | 
             
                if (newline? || comment?) && !@heredocs.empty?
         | 
| 2678 | 
            -
                  if  | 
| 2770 | 
            +
                  if is_last && trailing_commas
         | 
| 2679 2771 | 
             
                    write "," unless wrote_comma
         | 
| 2680 2772 | 
             
                    wrote_comma = true
         | 
| 2681 2773 | 
             
                  end
         | 
| @@ -3075,9 +3167,12 @@ class Rufo::Formatter | |
| 3075 3167 | 
             
                    # print it, but only if it's not followed by a newline
         | 
| 3076 3168 | 
             
                    if !found_newline && want_semicolon && last != :semicolon
         | 
| 3077 3169 | 
             
                      skip_space
         | 
| 3078 | 
            -
                       | 
| 3170 | 
            +
                      kind = current_token_kind
         | 
| 3171 | 
            +
                      case kind
         | 
| 3079 3172 | 
             
                      when :on_ignored_nl, :on_eof
         | 
| 3080 3173 | 
             
                      else
         | 
| 3174 | 
            +
                        return if (kind == :on_kw) &&
         | 
| 3175 | 
            +
                                  (%w[class module def].include?(current_token_value))
         | 
| 3081 3176 | 
             
                        write "; "
         | 
| 3082 3177 | 
             
                        last = :semicolon
         | 
| 3083 3178 | 
             
                      end
         | 
| @@ -3335,6 +3430,15 @@ class Rufo::Formatter | |
| 3335 3430 | 
             
                end
         | 
| 3336 3431 | 
             
              end
         | 
| 3337 3432 |  | 
| 3433 | 
            +
              def capture_output
         | 
| 3434 | 
            +
                old_output = @output
         | 
| 3435 | 
            +
                @output = "".dup
         | 
| 3436 | 
            +
                yield
         | 
| 3437 | 
            +
                result = @output
         | 
| 3438 | 
            +
                @output = old_output
         | 
| 3439 | 
            +
                result
         | 
| 3440 | 
            +
              end
         | 
| 3441 | 
            +
             | 
| 3338 3442 | 
             
              def write(value)
         | 
| 3339 3443 | 
             
                @output << value
         | 
| 3340 3444 | 
             
                @last_was_newline = false
         | 
    
        data/lib/rufo/settings.rb
    CHANGED
    
    | @@ -4,6 +4,7 @@ module Rufo::Settings | |
| 4 4 | 
             
                align_case_when: [false, true],
         | 
| 5 5 | 
             
                align_chained_calls: [false, true],
         | 
| 6 6 | 
             
                trailing_commas: [true, false],
         | 
| 7 | 
            +
                quote_style: [:double, :single],
         | 
| 7 8 | 
             
              }
         | 
| 8 9 |  | 
| 9 10 | 
             
              attr_accessor *OPTIONS.keys
         | 
| @@ -14,7 +15,7 @@ module Rufo::Settings | |
| 14 15 | 
             
                  value = options.fetch(name, default)
         | 
| 15 16 | 
             
                  unless valid_options.include?(value)
         | 
| 16 17 | 
             
                    $stderr.puts "Invalid value for #{name}: #{value.inspect}. Valid " \
         | 
| 17 | 
            -
                                 "values are: #{valid_options.map(&:inspect).join( | 
| 18 | 
            +
                                 "values are: #{valid_options.map(&:inspect).join(", ")}"
         | 
| 18 19 | 
             
                    value = default
         | 
| 19 20 | 
             
                  end
         | 
| 20 21 | 
             
                  self.public_send("#{name}=", value)
         | 
    
        data/lib/rufo/version.rb
    CHANGED
    
    
    
        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. | 
| 4 | 
            +
              version: 0.3.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:  | 
| 11 | 
            +
            date: 2018-03-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 121 121 | 
             
                  version: '0'
         | 
| 122 122 | 
             
            requirements: []
         | 
| 123 123 | 
             
            rubyforge_project: 
         | 
| 124 | 
            -
            rubygems_version: 2.6. | 
| 124 | 
            +
            rubygems_version: 2.6.14
         | 
| 125 125 | 
             
            signing_key: 
         | 
| 126 126 | 
             
            specification_version: 4
         | 
| 127 127 | 
             
            summary: Ruby code formatter
         |