errata 0.1.4 → 0.1.5
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.
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/errata.gemspec +8 -8
- data/lib/errata.rb +5 -4
- data/lib/erratum.rb +2 -2
- data/test/errata_test.rb +63 -20
- metadata +6 -6
    
        data/Rakefile
    CHANGED
    
    | @@ -10,7 +10,8 @@ begin | |
| 10 10 | 
             
                gem.email = "seamus@abshere.net"
         | 
| 11 11 | 
             
                gem.homepage = "http://github.com/seamusabshere/errata"
         | 
| 12 12 | 
             
                gem.authors = ["Seamus Abshere", "Andy Rossmeissl"]
         | 
| 13 | 
            -
                 | 
| 13 | 
            +
                gem.add_dependency 'activesupport', '~>2.3.4'
         | 
| 14 | 
            +
                gem.add_dependency 'remote_table', '~>0.2.1'
         | 
| 14 15 | 
             
                gem.require_path = "lib"
         | 
| 15 16 | 
             
                gem.files.include %w(lib/erratum) unless gem.files.empty? # seems to fail once it's in the wild
         | 
| 16 17 | 
             
                gem.rdoc_options << '--line-numbers' << '--inline-source'
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.1. | 
| 1 | 
            +
            0.1.5
         | 
    
        data/errata.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{errata}
         | 
| 8 | 
            -
              s.version = "0.1. | 
| 8 | 
            +
              s.version = "0.1.5"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Seamus Abshere", "Andy Rossmeissl"]
         | 
| 12 | 
            -
              s.date = %q{ | 
| 12 | 
            +
              s.date = %q{2010-02-25}
         | 
| 13 13 | 
             
              s.description = %q{Correct strings based on remote errata files}
         | 
| 14 14 | 
             
              s.email = %q{seamus@abshere.net}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -51,15 +51,15 @@ Gem::Specification.new do |s| | |
| 51 51 | 
             
                s.specification_version = 3
         | 
| 52 52 |  | 
| 53 53 | 
             
                if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
         | 
| 54 | 
            -
                  s.add_runtime_dependency(%q<activesupport>, [" | 
| 55 | 
            -
                  s.add_runtime_dependency(%q<remote_table>, [" | 
| 54 | 
            +
                  s.add_runtime_dependency(%q<activesupport>, ["~> 2.3.4"])
         | 
| 55 | 
            +
                  s.add_runtime_dependency(%q<remote_table>, ["~> 0.2.1"])
         | 
| 56 56 | 
             
                else
         | 
| 57 | 
            -
                  s.add_dependency(%q<activesupport>, [" | 
| 58 | 
            -
                  s.add_dependency(%q<remote_table>, [" | 
| 57 | 
            +
                  s.add_dependency(%q<activesupport>, ["~> 2.3.4"])
         | 
| 58 | 
            +
                  s.add_dependency(%q<remote_table>, ["~> 0.2.1"])
         | 
| 59 59 | 
             
                end
         | 
| 60 60 | 
             
              else
         | 
| 61 | 
            -
                s.add_dependency(%q<activesupport>, [" | 
| 62 | 
            -
                s.add_dependency(%q<remote_table>, [" | 
| 61 | 
            +
                s.add_dependency(%q<activesupport>, ["~> 2.3.4"])
         | 
| 62 | 
            +
                s.add_dependency(%q<remote_table>, ["~> 0.2.1"])
         | 
| 63 63 | 
             
              end
         | 
| 64 64 | 
             
            end
         | 
| 65 65 |  | 
    
        data/lib/errata.rb
    CHANGED
    
    | @@ -1,5 +1,4 @@ | |
| 1 | 
            -
            require ' | 
| 2 | 
            -
            require 'activesupport'
         | 
| 1 | 
            +
            require 'active_support'
         | 
| 3 2 | 
             
            require 'remote_table'
         | 
| 4 3 | 
             
            require 'erratum'
         | 
| 5 4 | 
             
            require 'erratum/delete'
         | 
| @@ -10,6 +9,8 @@ require 'erratum/transform' | |
| 10 9 | 
             
            require 'erratum/truncate'
         | 
| 11 10 |  | 
| 12 11 | 
             
            class Errata
         | 
| 12 | 
            +
              ERRATUM_TYPES = %w{delete replace simplify transform truncate}
         | 
| 13 | 
            +
             | 
| 13 14 | 
             
              attr_reader :klass
         | 
| 14 15 |  | 
| 15 16 | 
             
              def initialize(options = {})
         | 
| @@ -33,10 +34,10 @@ class Errata | |
| 33 34 | 
             
              private
         | 
| 34 35 |  | 
| 35 36 | 
             
              def rejections
         | 
| 36 | 
            -
                @_rejections ||= @_table.rows.map { | | 
| 37 | 
            +
                @_rejections ||= @_table.rows.map { |hash| hash.symbolize_keys!; ::Errata::Erratum::Reject.new(self, hash) if hash[:action] == 'reject' }.compact
         | 
| 37 38 | 
             
              end
         | 
| 38 39 |  | 
| 39 40 | 
             
              def corrections
         | 
| 40 | 
            -
                @_corrections ||= @_table.rows.map { | | 
| 41 | 
            +
                @_corrections ||= @_table.rows.map { |hash| hash.symbolize_keys!; "::Errata::Erratum::#{hash[:action].camelcase}".constantize.new(self, hash) if ERRATUM_TYPES.include?(hash[:action]) }.compact
         | 
| 41 42 | 
             
              end
         | 
| 42 43 | 
             
            end
         | 
    
        data/lib/erratum.rb
    CHANGED
    
    | @@ -4,10 +4,10 @@ class Errata | |
| 4 4 | 
             
                delegate :klass, :to => :errata
         | 
| 5 5 |  | 
| 6 6 | 
             
                def initialize(errata, options = {})
         | 
| 7 | 
            -
                  raise "you can't set this from outside" if options. | 
| 7 | 
            +
                  raise "you can't set this from outside" if options[:prefix].present?
         | 
| 8 8 | 
             
                  @errata = errata
         | 
| 9 9 | 
             
                  @column = options[:section]
         | 
| 10 | 
            -
                  @matching_method = "#{options[:condition].gsub(/[^a-z0-9]/i, '_').downcase}?".to_sym if options[:condition]
         | 
| 10 | 
            +
                  @matching_method = "#{options[:condition].gsub(/[^a-z0-9]/i, '_').downcase}?".to_sym if options[:condition].present?
         | 
| 11 11 | 
             
                end
         | 
| 12 12 |  | 
| 13 13 | 
             
                def inspect
         | 
    
        data/test/errata_test.rb
    CHANGED
    
    | @@ -1,34 +1,77 @@ | |
| 1 1 | 
             
            require 'test_helper'
         | 
| 2 2 |  | 
| 3 | 
            -
            class  | 
| 4 | 
            -
               | 
| 5 | 
            -
                row | 
| 3 | 
            +
            class AutomobileVariant
         | 
| 4 | 
            +
              class << self
         | 
| 5 | 
            +
                def transmission_is_blank?(row)
         | 
| 6 | 
            +
                  row['transmission'].blank?
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def is_a_2007_gmc_or_chevrolet?(row)
         | 
| 10 | 
            +
                  row['year'] == 2007 and %w(GMC CHEVROLET).include? row['MFR'].upcase
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def is_a_porsche?(row)
         | 
| 14 | 
            +
                  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'PORSCHE' }
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def is_not_a_porsche?(row)
         | 
| 18 | 
            +
                  !is_a_porsche? row
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def is_a_mercedes_benz?(row)
         | 
| 22 | 
            +
                  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v =~ /MERCEDES/i }
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def is_a_lexus?(row)
         | 
| 26 | 
            +
                  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'LEXUS' }
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def is_a_bmw?(row)
         | 
| 30 | 
            +
                  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'BMW' }
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def is_a_ford?(row)
         | 
| 34 | 
            +
                  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'FORD' }
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                def is_a_rolls_royce_and_model_contains_bentley?(row)
         | 
| 38 | 
            +
                  is_a_rolls_royce?(row) and model_contains_bentley?(row)
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                def is_a_bentley?(row)
         | 
| 42 | 
            +
                  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v.upcase == 'BENTLEY' }
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                def is_a_rolls_royce?(row)
         | 
| 46 | 
            +
                  row.slice('MFR', 'Manufacturer', 'carline_mfr_name').any? { |k, v| v =~ /ROLLS/i }
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                def is_a_turbo_brooklands?(row)
         | 
| 50 | 
            +
                  row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /TURBO R\/RL BKLDS/i }
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                def model_contains_maybach?(row)
         | 
| 54 | 
            +
                  row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /MAYBACH/i }
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
                
         | 
| 57 | 
            +
                def model_contains_bentley?(row)
         | 
| 58 | 
            +
                  row.slice('CAR LINE', 'carline name', 'carline_name').any? { |k, v| v =~ /BENTLEY/i }
         | 
| 59 | 
            +
                end
         | 
| 6 60 | 
             
              end
         | 
| 7 61 | 
             
            end
         | 
| 8 62 |  | 
| 9 63 | 
             
            class ErrataTest < Test::Unit::TestCase
         | 
| 10 64 | 
             
              def setup
         | 
| 11 | 
            -
                @e = Errata.new(:url => 'http:// | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
              
         | 
| 14 | 
            -
              should "return implied matching methods" do
         | 
| 15 | 
            -
                flunk "create a fake errata for Brewery"
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
              
         | 
| 18 | 
            -
              should "use matching methods" do
         | 
| 19 | 
            -
                flunk "create a fake errata for Brewery"
         | 
| 65 | 
            +
                @e = Errata.new(:url => 'http://spreadsheets.google.com/pub?key=t9WkYT39zjrStx7ruCFrZJg', :klass => AutomobileVariant)
         | 
| 20 66 | 
             
              end
         | 
| 21 | 
            -
             | 
| 67 | 
            +
                
         | 
| 22 68 | 
             
              should "correct rows" do
         | 
| 23 | 
            -
                 | 
| 24 | 
            -
                 | 
| 25 | 
            -
                 | 
| 26 | 
            -
                @e.correct!(rover)
         | 
| 27 | 
            -
                assert_equal 'Mercedes-Benz', mercedes['manufacturer_name']
         | 
| 28 | 
            -
                assert_equal 'Rover',         rover['manufacturer_name']
         | 
| 69 | 
            +
                alfa = { "carline_mfr_name"=>"ALFA ROMEO" }
         | 
| 70 | 
            +
                @e.correct!(alfa)
         | 
| 71 | 
            +
                assert_equal 'Alfa Romeo', alfa['carline_mfr_name']
         | 
| 29 72 | 
             
              end
         | 
| 30 73 |  | 
| 31 74 | 
             
              should "reject rows" do
         | 
| 32 | 
            -
                assert @e.rejects?(' | 
| 75 | 
            +
                assert @e.rejects?('carline_mfr_name' => 'AURORA CARS')
         | 
| 33 76 | 
             
              end
         | 
| 34 77 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: errata
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Seamus Abshere
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date:  | 
| 13 | 
            +
            date: 2010-02-25 00:00:00 -05:00
         | 
| 14 14 | 
             
            default_executable: 
         | 
| 15 15 | 
             
            dependencies: 
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -19,9 +19,9 @@ dependencies: | |
| 19 19 | 
             
              version_requirement: 
         | 
| 20 20 | 
             
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 21 21 | 
             
                requirements: 
         | 
| 22 | 
            -
                - -  | 
| 22 | 
            +
                - - ~>
         | 
| 23 23 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 24 | 
            -
                    version:  | 
| 24 | 
            +
                    version: 2.3.4
         | 
| 25 25 | 
             
                version: 
         | 
| 26 26 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 27 27 | 
             
              name: remote_table
         | 
| @@ -29,9 +29,9 @@ dependencies: | |
| 29 29 | 
             
              version_requirement: 
         | 
| 30 30 | 
             
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 31 31 | 
             
                requirements: 
         | 
| 32 | 
            -
                - -  | 
| 32 | 
            +
                - - ~>
         | 
| 33 33 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 34 | 
            -
                    version:  | 
| 34 | 
            +
                    version: 0.2.1
         | 
| 35 35 | 
             
                version: 
         | 
| 36 36 | 
             
            description: Correct strings based on remote errata files
         | 
| 37 37 | 
             
            email: seamus@abshere.net
         |