comma_splice 0.1.0 → 0.1.1
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/CHANGELOG.md +9 -0
- data/Gemfile.lock +2 -2
- data/README.md +2 -2
- data/lib/comma_splice/helpers/variable_column_finder.rb +3 -3
- data/lib/comma_splice/line_corrector.rb +4 -13
- data/lib/comma_splice/version.rb +1 -1
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 74958cacc824b9e475df20acee4cc75ac354738ab4ed475a7ddc5f3ce5c7c553
         | 
| 4 | 
            +
              data.tar.gz: 3b7129b58e24be7e9549e2971b994fd159e0d21675118e3c413a38dc1823db9c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 112fea4670275a7222bbf60d13c8f61cea9386a60eaaf2cf16fd514f5c0ffd69a4e2e0453658408977607608340ca1e94e7f53581565d10014501c18d61a6570
         | 
| 7 | 
            +
              data.tar.gz: b62a9835b22555efd4aad03c467c1d24f298d50c34b399171f8fc5bcb0d8c1ddfff1be14268599fe5ce67b88c6b9201c6c3e250e72de34361ba252594a6146e1
         | 
    
        data/CHANGELOG.md
    ADDED
    
    | @@ -0,0 +1,9 @@ | |
| 1 | 
            +
            # Changelog
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ### 0.1.1 (January 24, 2020)
         | 
| 4 | 
            +
            - [BUGFIX] handle case where all columns are equal widths
         | 
| 5 | 
            +
            - [BUGFIX] Improve error message
         | 
| 6 | 
            +
            - [IMPROVEMENT] simplify slicing [\#1](https://github.com/jkeen/comma_splice/pull/1) ([AlexMooney](https://github.com/AlexMooney))
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            ### 0.1.0 (August 5th, 2019)
         | 
| 9 | 
            +
            - Initial Release
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # Comma Splice
         | 
| 2 2 |  | 
| 3 | 
            -
            This gem tackles one very specific problem: when CSVs have commas in the values and the values haven't been quoted. This determines which commas separate fields and which commas are part of a value, and corrects the file.
         | 
| 3 | 
            +
            This gem tackles [one very specific problem](https://medium.com/@jeffkeen/how-to-correct-32-000-incorrect-csv-files-in-fewer-than-32-000-steps-a5f1ba25d951): when CSVs have commas in the values and the values haven't been quoted. This determines which commas separate fields and which commas are part of a value, and corrects the file.
         | 
| 4 4 |  | 
| 5 5 | 
             
            For example, given the following CSV
         | 
| 6 6 |  | 
| @@ -19,7 +19,7 @@ which parses incorrectly as: | |
| 19 19 | 
             
            | 01-27-2019 @ 12:31:00 | Lester Sterling | Lester Sterling Special | Merritone Rock Steady 2: This Music Got Soul 1966-1967 | Dub Store   |
         | 
| 20 20 |  | 
| 21 21 |  | 
| 22 | 
            -
            Running this through `comma_splice  | 
| 22 | 
            +
            Running this through `comma_splice correct /path/to/file` will return this corrected content:
         | 
| 23 23 |  | 
| 24 24 | 
             
            ```
         | 
| 25 25 | 
             
            timestamp,artist,title,albumtitle,label
         | 
| @@ -34,10 +34,10 @@ module CommaSplice | |
| 34 34 | 
             
                  end
         | 
| 35 35 |  | 
| 36 36 | 
             
                  start_column = variables.find_index(true)
         | 
| 37 | 
            -
                  end_column = variables.reverse.find_index(true) | 
| 37 | 
            +
                  end_column = variables.reverse.find_index(true)
         | 
| 38 38 |  | 
| 39 | 
            -
                  @start_column = start_column
         | 
| 40 | 
            -
                  @end_column = end_column
         | 
| 39 | 
            +
                  @start_column = start_column || 0
         | 
| 40 | 
            +
                  @end_column = (end_column || 1) * -1
         | 
| 41 41 | 
             
                end
         | 
| 42 42 |  | 
| 43 43 | 
             
                private
         | 
| @@ -13,8 +13,8 @@ module CommaSplice | |
| 13 13 | 
             
                  @left_bounds = left_bounds
         | 
| 14 14 | 
             
                  @right_bounds = right_bounds
         | 
| 15 15 |  | 
| 16 | 
            -
                  raise 'right bounds must be  | 
| 17 | 
            -
                  raise 'left bounds must be  | 
| 16 | 
            +
                  raise 'right bounds must be negative' unless right_bounds.negative?
         | 
| 17 | 
            +
                  raise 'left bounds must be not be negative' if left_bounds.negative?
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 20 | 
             
                def needs_correcting?
         | 
| @@ -35,17 +35,8 @@ module CommaSplice | |
| 35 35 | 
             
                  # the only values that could contain an extra comma are "artist,title,albumtitle,label"
         | 
| 36 36 | 
             
                  # therefore our left_bounds = 4, right_bounds = -5
         | 
| 37 37 |  | 
| 38 | 
            -
                  values_before =  | 
| 39 | 
            -
             | 
| 40 | 
            -
                                  else
         | 
| 41 | 
            -
                                    []
         | 
| 42 | 
            -
                                  end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                  values_after =  if right_bounds < -1
         | 
| 45 | 
            -
                                    values[(right_bounds + 1)..-1]
         | 
| 46 | 
            -
                                  else
         | 
| 47 | 
            -
                                    []
         | 
| 48 | 
            -
                                  end
         | 
| 38 | 
            +
                  values_before = values[0...left_bounds]
         | 
| 39 | 
            +
                  values_after = values.slice(right_bounds + 1, -(right_bounds + 1))
         | 
| 49 40 | 
             
                  [values_before, corrector.correction, values_after].flatten.join(',')
         | 
| 50 41 | 
             
                end
         | 
| 51 42 |  | 
    
        data/lib/comma_splice/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: comma_splice
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jeff Keen
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-01-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -104,6 +104,7 @@ extra_rdoc_files: [] | |
| 104 104 | 
             
            files:
         | 
| 105 105 | 
             
            - ".gitignore"
         | 
| 106 106 | 
             
            - ".rspec"
         | 
| 107 | 
            +
            - CHANGELOG.md
         | 
| 107 108 | 
             
            - Gemfile
         | 
| 108 109 | 
             
            - Gemfile.lock
         | 
| 109 110 | 
             
            - LICENSE.txt
         | 
| @@ -142,8 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 142 143 | 
             
                - !ruby/object:Gem::Version
         | 
| 143 144 | 
             
                  version: '0'
         | 
| 144 145 | 
             
            requirements: []
         | 
| 145 | 
            -
             | 
| 146 | 
            -
            rubygems_version: 2.7.8
         | 
| 146 | 
            +
            rubygems_version: 3.0.6
         | 
| 147 147 | 
             
            signing_key: 
         | 
| 148 148 | 
             
            specification_version: 4
         | 
| 149 149 | 
             
            summary: Fixes CSVs with unescaped commas
         |