conglomerate 0.2.1 → 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/Gemfile +1 -0
- data/lib/conglomerate/serializer.rb +13 -8
- data/lib/conglomerate/version.rb +1 -1
- data/spec/conglomerate_spec.rb +2 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9da3788aca18b7373349738518eb060890f2bc0b
         | 
| 4 | 
            +
              data.tar.gz: 13ce8616d35fa4e79621b924bc58d3444cbd0fcb
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b82efadf83f9b16cb46617c81995e7e5b1df6e9706c08406aa0c33e0a2d45b9a10cb5fe2bfca3d62606409743da4ce329b1869ccf53f4cb0dd2e35f12673832c
         | 
| 7 | 
            +
              data.tar.gz: 2647c169ae848cc2a0bfdd319b35e1dd2db0c30a2929ee1107f0a7e9bb9dec3b480fb35a9f8c63a740bb584859bf14ccd5fd25fc320659b7dacf3dbaaf0c1d53
         | 
    
        data/Gemfile
    CHANGED
    
    
| @@ -42,8 +42,11 @@ module Conglomerate | |
| 42 42 | 
             
                end
         | 
| 43 43 |  | 
| 44 44 | 
             
                def apply_data(collection, data: [], object: nil)
         | 
| 45 | 
            -
                  data = data.map do | | 
| 46 | 
            -
                     | 
| 45 | 
            +
                  data = data.map do |datum|
         | 
| 46 | 
            +
                    name = datum[:name]
         | 
| 47 | 
            +
                    value = object.nil? ? "" : object.send(name)
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    {"name" => name.to_s, datum.fetch(:type, "value").to_s => value}
         | 
| 47 50 | 
             
                  end
         | 
| 48 51 |  | 
| 49 52 | 
             
                  if data.empty?
         | 
| @@ -75,8 +78,8 @@ module Conglomerate | |
| 75 78 | 
             
                      )
         | 
| 76 79 | 
             
                    end
         | 
| 77 80 |  | 
| 78 | 
            -
                     | 
| 79 | 
            -
                    item = apply_data(item, :data =>  | 
| 81 | 
            +
                    attributes = self.class._attributes
         | 
| 82 | 
            +
                    item = apply_data(item, :data => attributes, :object => object)
         | 
| 80 83 |  | 
| 81 84 | 
             
                    links = self.class._attributes
         | 
| 82 85 | 
             
                      .select { |attr| attr[:block] }
         | 
| @@ -98,7 +101,6 @@ module Conglomerate | |
| 98 101 | 
             
                def apply_template(collection)
         | 
| 99 102 | 
             
                  attrs = self.class._attributes
         | 
| 100 103 | 
             
                    .select { |attr| attr[:template] }
         | 
| 101 | 
            -
                    .map { |attr| attr[:name] }
         | 
| 102 104 |  | 
| 103 105 | 
             
                  if attrs.empty?
         | 
| 104 106 | 
             
                    collection
         | 
| @@ -173,14 +175,17 @@ module Conglomerate | |
| 173 175 | 
             
                  end
         | 
| 174 176 |  | 
| 175 177 | 
             
                  def query(rel, data: [], &block)
         | 
| 178 | 
            +
                    data = [*data]
         | 
| 179 | 
            +
                    data = data.map { |datum| {:name => datum} }
         | 
| 176 180 | 
             
                    self._queries = self._queries << {
         | 
| 177 | 
            -
                      :rel => rel, :data =>  | 
| 181 | 
            +
                      :rel => rel, :data => data, :block => block
         | 
| 178 182 | 
             
                    }
         | 
| 179 183 | 
             
                  end
         | 
| 180 184 |  | 
| 181 | 
            -
                  def attribute(name, template: false, rel: nil, &block)
         | 
| 185 | 
            +
                  def attribute(name, template: false, rel: nil, type: :value, &block)
         | 
| 182 186 | 
             
                    self._attributes = self._attributes << {
         | 
| 183 | 
            -
                      :name => name, :template => template, :rel => rel, : | 
| 187 | 
            +
                      :name => name, :template => template, :rel => rel, :type => type,
         | 
| 188 | 
            +
                      :block => block
         | 
| 184 189 | 
             
                    }
         | 
| 185 190 | 
             
                  end
         | 
| 186 191 |  | 
    
        data/lib/conglomerate/version.rb
    CHANGED
    
    
    
        data/spec/conglomerate_spec.rb
    CHANGED
    
    | @@ -15,7 +15,7 @@ class ConglomerateTestSerializer | |
| 15 15 | 
             
              attribute :roster_id, :rel => :roster do |item|
         | 
| 16 16 | 
             
                roster_url(item.roster_id)
         | 
| 17 17 | 
             
              end
         | 
| 18 | 
            -
              attribute :team_ids, :rel => :teams do |item|
         | 
| 18 | 
            +
              attribute :team_ids, :rel => :teams, :type => :array do |item|
         | 
| 19 19 | 
             
                team_url(item.team_ids.join(","))
         | 
| 20 20 | 
             
              end
         | 
| 21 21 | 
             
              attribute :user_ids, :rel => :users do |item|
         | 
| @@ -156,7 +156,7 @@ describe Conglomerate do | |
| 156 156 | 
             
                            {"name" => "id", "value" => 1},
         | 
| 157 157 | 
             
                            {"name" => "event_id", "value" => 2},
         | 
| 158 158 | 
             
                            {"name" => "roster_id", "value" => nil},
         | 
| 159 | 
            -
                            {"name" => "team_ids", " | 
| 159 | 
            +
                            {"name" => "team_ids", "array" => [1,2]},
         | 
| 160 160 | 
             
                            {"name" => "user_ids", "value" => []}
         | 
| 161 161 | 
             
                          ],
         | 
| 162 162 | 
             
                          "links" => [
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: conglomerate
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Shane Emmons
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014-01- | 
| 11 | 
            +
            date: 2014-01-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |