Class: Multisync::Selector
- Inherits:
-
Object
- Object
- Multisync::Selector
- Defined in:
- lib/multisync/selector.rb
Instance Attribute Summary collapse
-
#catalog ⇒ Object
readonly
Given catalog.
-
#result ⇒ Object
readonly
Selected tasks.
-
#sets ⇒ Object
readonly
Given set names.
Instance Method Summary collapse
-
#initialize(catalog, sets) ⇒ Selector
constructor
A new instance of Selector.
- #selected?(subject) ⇒ Boolean
- #tasks ⇒ Object
- #visit(subject, _level) ⇒ Object
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
#catalog ⇒ Object (readonly)
Given catalog
5 6 7 |
# File 'lib/multisync/selector.rb', line 5 def catalog @catalog end |
#result ⇒ Object (readonly)
Selected tasks
11 12 13 |
# File 'lib/multisync/selector.rb', line 11 def result @result end |
#sets ⇒ Object (readonly)
Given set names
8 9 10 |
# File 'lib/multisync/selector.rb', line 8 def sets @sets end |
Instance Method Details
#selected?(subject) ⇒ 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 |
#tasks ⇒ Object
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 |