Class: Loom::Pattern::ReferenceSet

Inherits:
Object
  • Object
show all
Defined in:
lib/loom/pattern/reference_set.rb

Overview

A collection of Pattern::Reference objects

Defined Under Namespace

Classes: Builder

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeReferenceSet

Returns a new instance of ReferenceSet.



18
19
20
# File 'lib/loom/pattern/reference_set.rb', line 18

def initialize
  @slug_to_ref_map = {}
end

Class Method Details

.load_from_file(path) ⇒ Object



12
13
14
15
# File 'lib/loom/pattern/reference_set.rb', line 12

def load_from_file(path)
  Loom.log.debug1(self) { "loading patterns from file => #{path}" }
  Builder.create File.read(path), path
end

Instance Method Details

#add_pattern_refs(refs) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/loom/pattern/reference_set.rb', line 41

def add_pattern_refs(refs)
  map = @slug_to_ref_map
  refs.each do |ref|
    Loom.log.debug2(self) { "adding ref to set => #{ref.slug}" }
    raise DuplicatePatternRef, ref.slug if map[ref.slug]
    map[ref.slug] = ref
  end
end

#get_pattern_ref(slug) ⇒ Object Also known as: []



30
31
32
33
34
# File 'lib/loom/pattern/reference_set.rb', line 30

def get_pattern_ref(slug)
  ref = @slug_to_ref_map[slug]
  raise UnknownPatternMethod, slug unless ref
  ref
end

#merge!(ref_set) ⇒ Object



37
38
39
# File 'lib/loom/pattern/reference_set.rb', line 37

def merge!(ref_set)
  self.add_pattern_refs(ref_set.pattern_refs)
end

#pattern_refsObject



26
27
28
# File 'lib/loom/pattern/reference_set.rb', line 26

def pattern_refs
  @slug_to_ref_map.values
end

#slugsObject



22
23
24
# File 'lib/loom/pattern/reference_set.rb', line 22

def slugs
  @slug_to_ref_map.keys
end