Class: Multisync::Selector

Inherits:
Object
  • Object
show all
Defined in:
lib/multisync/selector.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(catalog, sets) ⇒ Selector

Returns a new instance of Selector.



13
14
15
16
17
# File 'lib/multisync/selector.rb', line 13

def initialize catalog, sets
  @catalog = catalog
  @sets = sets
  @result = []
end

Instance Attribute Details

#catalogObject (readonly)

Given catalog



5
6
7
# File 'lib/multisync/selector.rb', line 5

def catalog
  @catalog
end

#resultObject (readonly)

Selected tasks



11
12
13
# File 'lib/multisync/selector.rb', line 11

def result
  @result
end

#setsObject (readonly)

Given set names



8
9
10
# File 'lib/multisync/selector.rb', line 8

def sets
  @sets
end

Instance Method Details

#selected?(subject) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
31
32
33
34
35
# File 'lib/multisync/selector.rb', line 28

def selected? subject
  # only return the leaves of the definition tree
  return false unless subject.members.empty?
  # no sets defined, but subject is in the default set
  return true if sets.empty? && subject.default?
  # subject matches any of the given sets
  sets.any? {|set| /\b#{set}\b/.match subject.fullname }
end

#tasksObject



19
20
21
22
# File 'lib/multisync/selector.rb', line 19

def tasks
  catalog.traverse self
  result
end

#visit(subject, _level) ⇒ Object



24
25
26
# File 'lib/multisync/selector.rb', line 24

def visit subject, _level
  result << subject if selected?(subject)
end