Skip to content
This repository has been archived by the owner on May 4, 2022. It is now read-only.

Commit

Permalink
Extract collection to Collectible module (#34)
Browse files Browse the repository at this point in the history
* Extract collection to Collectible module
* Use nested module blocks instead of compact form
* Use yield instead of block.call
* Tell Rubocop to ignore nested method definition (But just here)
* Add frozen string literal comment to new class
  • Loading branch information
allolex committed Jan 31, 2017
1 parent 540eb30 commit 8a79c90
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 37 deletions.
34 changes: 34 additions & 0 deletions lib/nacre/concerns/collectible.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# frozen_string_literal: true
module Nacre
module Collectible
def self.included(base)
base.class_exec do
def initialize(resource_list = []) # rubocop:disable NestedMethodDefinition
@members = []

resource_list.each do |resource_params|
members << self.class.resource_class.new(resource_params)
end
end
end
end

def members
@members
end

def members=(list)
@members = list
end

def each
members.each do |member|
yield member
end
end

def params
members.map(&:params)
end
end
end
24 changes: 5 additions & 19 deletions lib/nacre/order/invoice_collection.rb
Original file line number Diff line number Diff line change
@@ -1,26 +1,12 @@
require 'nacre/concerns/collectible'

module Nacre
class Order::InvoiceCollection

include Collectible
include Enumerable

attr_accessor :members

def initialize(resource_list = [])
self.members = []
resource_list.each do |resource_params|
members << Nacre::Order::Invoice.new(resource_params)
end
end

def each(&block)
members.each do |member|
block.call(member)
end
end

def params
members.map(&:params)
def self.resource_class
Nacre::Order::Invoice
end

end
end
23 changes: 5 additions & 18 deletions lib/nacre/product/sales_channel_collection.rb
Original file line number Diff line number Diff line change
@@ -1,26 +1,14 @@
require "nacre/concerns/collectible"

module Nacre
class Product::SalesChannelCollection

include Collectible
include Enumerable
extend Inflectible

attr_accessor :members

def initialize(resource_list = [])
self.members = []
resource_list.each do |resource_params|
members << Nacre::Product::SalesChannel.new(resource_params)
end
end

def each(&block)
members.each do |member|
block.call(member)
end
end

def params
members.map(&:params)
def self.resource_class
Nacre::Product::SalesChannel
end

def product_name
Expand All @@ -34,6 +22,5 @@ def product_name
name_sources.first.product_name
end
end

end
end

0 comments on commit 8a79c90

Please sign in to comment.