Class: Speckle::List::Builder
- Inherits:
-
Object
- Object
- Speckle::List::Builder
- Defined in:
- lib/speckle/list/builder.rb
Instance Method Summary collapse
- #add_filter(filter) ⇒ Object
- #add_source(source) ⇒ Object
- #build ⇒ Object
- #filter_list(list, filter) ⇒ Object
-
#initialize ⇒ Builder
constructor
A new instance of Builder.
- #rebuild ⇒ Object
Constructor Details
#initialize ⇒ Builder
4 5 6 7 8 |
# File 'lib/speckle/list/builder.rb', line 4 def initialize @sources = [] @filters = [] @filtered = nil end |
Instance Method Details
#add_filter(filter) ⇒ Object
14 15 16 |
# File 'lib/speckle/list/builder.rb', line 14 def add_filter(filter) @filters << filter end |
#add_source(source) ⇒ Object
10 11 12 |
# File 'lib/speckle/list/builder.rb', line 10 def add_source(source) @sources << source end |
#build ⇒ Object
37 38 39 40 |
# File 'lib/speckle/list/builder.rb', line 37 def build rebuild if @filtered.nil? @filtered end |
#filter_list(list, filter) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/speckle/list/builder.rb', line 18 def filter_list(list, filter) filtered = [] list.each do |item| result = filter.run(item) filtered.concat(result) end filtered end |
#rebuild ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/speckle/list/builder.rb', line 28 def rebuild filtered = @sources @filters.each do |filter| filtered = filter_list(filtered, filter) end @filtered = filtered end |