Class: OO::License

Inherits:
Object
  • Object
show all
Defined in:
lib/oo/license.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#keyObject (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_markObject



8
9
10
# File 'lib/oo/license.rb', line 8

def mask_mark
  '*'
end

.masksObject



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_depthObject



12
13
14
# File 'lib/oo/license.rb', line 12

def max_depth
  OO.configuration.license_max_depth
end

.separatorObject



4
5
6
# File 'lib/oo/license.rb', line 4

def separator
  '.'
end

Instance Method Details

#depthObject



53
54
55
# File 'lib/oo/license.rb', line 53

def depth
  to_a.size
end

#genre_masksObject



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_markObject



61
62
63
# File 'lib/oo/license.rb', line 61

def mask_mark
  self.class.mask_mark
end

#masksObject



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

#parentObject



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

#separatorObject



57
58
59
# File 'lib/oo/license.rb', line 57

def separator
  self.class.separator
end

#to_aObject



49
50
51
# File 'lib/oo/license.rb', line 49

def to_a
  key.split(separator)
end