module Refcode::Encodable

Public Class Methods

included(base) click to toggle source
# File lib/refcode/encodable.rb, line 5
def self.included base
  base.extend ClassMethods
end

Public Instance Methods

generate_refcode(val) click to toggle source
# File lib/refcode/encodable.rb, line 9
def generate_refcode val
  check_refcode_options!
  encoder.encode val
end
parse_refcode(code) click to toggle source
# File lib/refcode/encodable.rb, line 14
def parse_refcode code
  check_refcode_options!
  encoder.decode code
end

Private Instance Methods

check_refcode_options!() click to toggle source
# File lib/refcode/encodable.rb, line 40
def check_refcode_options!
  raise RefcodeInitException.new('You must call the has_refcode method in your class definition') unless self.class.refcode_options
end
encoder() click to toggle source
# File lib/refcode/encodable.rb, line 31
def encoder
  Refcode::Encoder.new do |r|
    check_refcode_options!
    r.secret = get_option_value(self.class.refcode_options[:secret])
    r.salt = get_option_value(self.class.refcode_options[:salt])
    raise "Value for salt is nil (#{salt_option} given)" if r.salt.nil?
  end
end
get_option_value(option) click to toggle source
# File lib/refcode/encodable.rb, line 44
def get_option_value option
  if option.respond_to? :call
    option.call self
  elsif option.is_a? Symbol
    self.send option
  else
    option
  end
end