class OO::Licence

Attributes

key[R]
to_s[R]

Public Class Methods

mask_mark() click to toggle source
# File lib/oo/licence.rb, line 8
def mask_mark
  '*'
end
masks() click to toggle source
# File lib/oo/licence.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() click to toggle source
# File lib/oo/licence.rb, line 12
def max_depth
  OO.configuration.licence_max_depth
end
new(attrs = {}) click to toggle source
# File lib/oo/licence.rb, line 29
def initialize(attrs = {})
  @key = attrs.fetch(:key)
end
separator() click to toggle source
# File lib/oo/licence.rb, line 4
def separator
  '.'
end

Public Instance Methods

depth() click to toggle source
# File lib/oo/licence.rb, line 53
def depth
  to_a.size
end
genre_masks() click to toggle source
# File lib/oo/licence.rb, line 65
def genre_masks
  (depth..self.class.masks.size).map { |n| self.class.masks[n.to_s] }
end
mask_key(mask) click to toggle source
# File lib/oo/licence.rb, line 69
def mask_key(mask)
  mask = mask.split(separator)
  mask[0..depth - 1] = *to_a
  mask.join(separator)
end
mask_mark() click to toggle source
# File lib/oo/licence.rb, line 61
def mask_mark
  self.class.mask_mark
end
masks() click to toggle source
# File lib/oo/licence.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() click to toggle source
# File lib/oo/licence.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() click to toggle source
# File lib/oo/licence.rb, line 57
def separator
  self.class.separator
end
to_a() click to toggle source
# File lib/oo/licence.rb, line 49
def to_a
  key.split(separator)
end