class Docks::Containers::PatternLibrary

Attributes

patterns[R]

Public Class Methods

new() click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 6
def initialize
  @patterns = {}
  @summary = false
end

Public Instance Methods

<<(pattern) click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 11
def <<(pattern)
  @patterns[pattern.name.to_s] ||= pattern
end
[](pattern_name) click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 15
def [](pattern_name)
  @patterns[Docks.pattern_id(pattern_name)]
end
find(descriptor) click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 47
def find(descriptor)
  descriptor = Descriptor.new(descriptor, assume: :pattern)
  pattern = @patterns[descriptor.pattern]
  return false if pattern.nil?

  symbol = pattern.find(descriptor)
  symbol = nil if !symbol || symbol == pattern
  ::OpenStruct.new(pattern: pattern, symbol: symbol)
end
group_by(grouper, &block) click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 25
def group_by(grouper, &block)
  grouped_patterns = {}
  grouper = grouper.to_sym

  @patterns.each do |name, pattern|
    grouper_value = pattern.send(grouper)
    next if grouper_value.nil?
    grouped_patterns[grouper_value] ||= []
    grouped_patterns[grouper_value] << pattern
  end

  if block_given?
    grouped_patterns.each(&block)
  else
    grouped_patterns
  end
end
groups(&block) click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 43
def groups(&block)
  group_by(:group, &block)
end
has_pattern?(pattern_name) click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 19
def has_pattern?(pattern_name)
  !self[pattern_name].nil?
end
summarize()
Alias for: summary
summarize!()
Alias for: summary!
summarized?() click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 57
def summarized?; @summary end
Also aliased as: summary?
summary() click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 60
def summary
  return self if summarized?

  summary = self.class.new
  summary.instance_variable_set(:@summary, true)
  summary.instance_variable_set(:@patterns, Hash[@patterns.map { |name, pattern| [name, pattern.summary] }])
  summary
end
Also aliased as: summarize
summary!() click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 70
def summary!
  @summary = true
  @patterns = Hash[@patterns.map { |name, pattern| [name, pattern.summary] }]
end
Also aliased as: summarize!
summary?()
Alias for: summarized?
to_json() click to toggle source
# File lib/docks/containers/pattern_library_container.rb, line 23
def to_json; @patterns.to_json end