Class: OO::License
- Inherits:
-
Object
- Object
- OO::License
- Defined in:
- lib/oo/license.rb
Instance Attribute Summary collapse
-
#key ⇒ Object
(also: #to_s)
readonly
Returns the value of attribute key.
Class Method Summary collapse
Instance Method Summary collapse
- #depth ⇒ Object
- #genre_masks ⇒ Object
-
#initialize(attrs = {}) ⇒ License
constructor
A new instance of License.
- #mask_key(mask) ⇒ Object
- #mask_mark ⇒ Object
- #masks ⇒ Object
- #parent ⇒ Object
- #separator ⇒ Object
- #to_a ⇒ Object
Constructor Details
#initialize(attrs = {}) ⇒ License
Returns a new instance of License.
29 30 31 |
# File 'lib/oo/license.rb', line 29 def initialize(attrs = {}) @key = attrs.fetch(:key) end |
Instance Attribute Details
#key ⇒ Object (readonly) Also known as: to_s
Returns the value of attribute key.
25 26 27 |
# File 'lib/oo/license.rb', line 25 def key @key end |
Class Method Details
.mask_mark ⇒ Object
8 9 10 |
# File 'lib/oo/license.rb', line 8 def mask_mark '*' end |
.masks ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/oo/license.rb', line 16 def masks masks = {} max_depth.times do |t| masks["#{t + 1}"] = mask_mark + "#{separator}#{mask_mark}" * t end masks end |
.max_depth ⇒ Object
12 13 14 |
# File 'lib/oo/license.rb', line 12 def max_depth OO.configuration.license_max_depth end |
.separator ⇒ Object
4 5 6 |
# File 'lib/oo/license.rb', line 4 def separator '.' end |
Instance Method Details
#depth ⇒ Object
53 54 55 |
# File 'lib/oo/license.rb', line 53 def depth to_a.size end |
#genre_masks ⇒ Object
65 66 67 |
# File 'lib/oo/license.rb', line 65 def genre_masks (depth..self.class.masks.size).map { |n| self.class.masks[n.to_s] } end |
#mask_key(mask) ⇒ Object
69 70 71 72 73 |
# File 'lib/oo/license.rb', line 69 def mask_key(mask) mask = mask.split(separator) mask[0..depth - 1] = *to_a mask.join(separator) end |
#mask_mark ⇒ Object
61 62 63 |
# File 'lib/oo/license.rb', line 61 def mask_mark self.class.mask_mark end |
#masks ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/oo/license.rb', line 33 def masks masks = [] gen_masks = genre_masks current = self while current.key != mask_mark gen_masks.each { |mask| masks << current.mask_key(mask) } current = current.parent end (masks + gen_masks).uniq end |
#parent ⇒ Object
44 45 46 47 |
# File 'lib/oo/license.rb', line 44 def parent return self.class.new(key: mask_mark) if depth == 1 self.class.new(key: to_a[0..-2].join(separator)) end |
#separator ⇒ Object
57 58 59 |
# File 'lib/oo/license.rb', line 57 def separator self.class.separator end |
#to_a ⇒ Object
49 50 51 |
# File 'lib/oo/license.rb', line 49 def to_a key.split(separator) end |