omnis 0.3.0 → 0.4.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.
- data/README.md +8 -0
- data/lib/omnis/transformer.rb +9 -1
- data/lib/omnis/version.rb +1 -1
- data/spec/lib/omnis/transformer_spec.rb +11 -0
- metadata +1 -7
    
        data/README.md
    CHANGED
    
    | @@ -94,6 +94,14 @@ class BookingTransformer | |
| 94 94 | 
             
              property :agency,       "agency"
         | 
| 95 95 | 
             
              property :date_from,    "services.0.date_from", :default => "n/a", :format => ->v { v.to_s(:date) }
         | 
| 96 96 | 
             
              property :date_to,      "services.0.date_to",   :default => "n/a", :format => ->v { v.to_s(:date) }
         | 
| 97 | 
            +
             | 
| 98 | 
            +
              property :ref            # if no extra params are provided it will call self.ref at runtime
         | 
| 99 | 
            +
             | 
| 100 | 
            +
              to_value {|i| i.upcase } # apply this lambda to all extraced values
         | 
| 101 | 
            +
             | 
| 102 | 
            +
              def self.ref(src)
         | 
| 103 | 
            +
                extract(src, 'ref')
         | 
| 104 | 
            +
              end
         | 
| 97 105 | 
             
            end
         | 
| 98 106 | 
             
            ```
         | 
| 99 107 |  | 
    
        data/lib/omnis/transformer.rb
    CHANGED
    
    | @@ -47,6 +47,14 @@ module Omnis | |
| 47 47 | 
             
                    end
         | 
| 48 48 | 
             
                  end
         | 
| 49 49 |  | 
| 50 | 
            +
                  def to_value(&block)
         | 
| 51 | 
            +
                    @to_value = block
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  def apply_to_value(value)
         | 
| 55 | 
            +
                    @to_value ? @to_value.(value) : value
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
             | 
| 50 58 | 
             
                  def extractor(obj)
         | 
| 51 59 | 
             
                      @extractor = obj
         | 
| 52 60 | 
             
                  end
         | 
| @@ -69,7 +77,7 @@ module Omnis | |
| 69 77 | 
             
                  def property_value(property, source)
         | 
| 70 78 | 
             
                    value = property.extract(source)
         | 
| 71 79 | 
             
                    return property.default if property.default && (value == Nothing || value.nil?)
         | 
| 72 | 
            -
                    return value
         | 
| 80 | 
            +
                    return self.class.apply_to_value(value)
         | 
| 73 81 | 
             
                  end
         | 
| 74 82 |  | 
| 75 83 | 
             
                  def transform(source)
         | 
    
        data/lib/omnis/version.rb
    CHANGED
    
    
| @@ -73,4 +73,15 @@ describe Omnis::Transformer do | |
| 73 73 | 
             
                xformer = TestBuiltInXformer.new.to_proc
         | 
| 74 74 | 
             
                xformer.({}).should == {:ref => 'ref_value'}
         | 
| 75 75 | 
             
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              it 'use to_value if provided' do
         | 
| 78 | 
            +
                class TestToValueTransformer
         | 
| 79 | 
            +
                  include Omnis::Transformer
         | 
| 80 | 
            +
                  property(:ref) { 'abc' }
         | 
| 81 | 
            +
                  to_value {|i| i.upcase }
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                xformer = TestToValueTransformer.new.to_proc
         | 
| 85 | 
            +
                xformer.({}).should == { :ref => 'ABC' }
         | 
| 86 | 
            +
              end
         | 
| 76 87 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: omnis
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -199,18 +199,12 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 199 199 | 
             
              - - ! '>='
         | 
| 200 200 | 
             
                - !ruby/object:Gem::Version
         | 
| 201 201 | 
             
                  version: '0'
         | 
| 202 | 
            -
                  segments:
         | 
| 203 | 
            -
                  - 0
         | 
| 204 | 
            -
                  hash: -4082639984471618075
         | 
| 205 202 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 206 203 | 
             
              none: false
         | 
| 207 204 | 
             
              requirements:
         | 
| 208 205 | 
             
              - - ! '>='
         | 
| 209 206 | 
             
                - !ruby/object:Gem::Version
         | 
| 210 207 | 
             
                  version: '0'
         | 
| 211 | 
            -
                  segments:
         | 
| 212 | 
            -
                  - 0
         | 
| 213 | 
            -
                  hash: -4082639984471618075
         | 
| 214 208 | 
             
            requirements: []
         | 
| 215 209 | 
             
            rubyforge_project: 
         | 
| 216 210 | 
             
            rubygems_version: 1.8.23
         |