Module: Jafry::Identificator

Extended by:
Accessor
Defined in:
lib/jafry/identificator.rb

Overview

Module for automaticaly creatings schemes ids

Since:

  • 0.2.0

Defined Under Namespace

Classes: Hash, Number

Constant Summary collapse

@@schemes =

Since:

  • 0.2.0

[]

Class Method Summary collapse

Methods included from Accessor

mattrs

Class Method Details

.build_type(type) ⇒ Type

Creates new scheme id type

Parameters:

  • type (String)

    Id type

Returns:

  • (Type)

    Type of id

Since:

  • 0.2.0



62
63
64
# File 'lib/jafry/identificator.rb', line 62

def build_type(type)
  const_get("Jafry::Identificator::#{type.capitalize}").new
end

.find_or_register(scheme_name) ⇒ Hash

Finds registered scheme and if there is no one, creates new

Parameters:

  • scheme_name (String)

    Scheme name

Returns:

  • (Hash)

    Identification information about scheme

Since:

  • 0.2.0



43
44
45
46
# File 'lib/jafry/identificator.rb', line 43

def find_or_register(scheme_name)
  return find_scheme(scheme_name) if find_scheme(scheme_name)
  register_scheme(scheme_name)
end

.find_scheme(scheme_name) ⇒ Hash

Finds registered scheme

Parameters:

  • scheme_name (String)

    Scheme name

Returns:

  • (Hash)

    Identification information about scheme

Since:

  • 0.2.0



34
35
36
# File 'lib/jafry/identificator.rb', line 34

def find_scheme(scheme_name)
  self.schemes.select {|item| item[:scheme] == scheme_name}.last
end

.generate_hashString

Helper method for generate unique hash

Returns:

  • (String)

    Unique md5 hash

Since:

  • 0.2.0



95
96
97
# File 'lib/jafry/identificator.rb', line 95

def generate_hash
  Digest::MD5.hexdigest([Time.now, rand].join)
end

.generate_id(scheme) ⇒ Object

Generates id

Parameters:

  • scheme (Scheme)

    Scheme instance

Since:

  • 0.2.0



70
71
72
73
# File 'lib/jafry/identificator.rb', line 70

def generate_id(scheme)
  config = Jafry::Configurator.get_config(scheme.self_name)
  build_type(config[:id_type]).id_scaffold(config[:id_wrapper], scheme)
end

.hash_counter(scheme) ⇒ Object

Creates hash id

Parameters:

  • scheme (Scheme)

    Scheme instance

Since:

  • 0.2.0



87
88
89
# File 'lib/jafry/identificator.rb', line 87

def hash_counter(scheme)
  find_or_register(scheme.self_name)[:counter] = generate_hash
end

.inc_scheme_counter(scheme) ⇒ Object

Increment id counter by 1

Parameters:

  • scheme (Scheme)

    Scheme instance

Since:

  • 0.2.0



79
80
81
# File 'lib/jafry/identificator.rb', line 79

def inc_scheme_counter(scheme)
  find_or_register(scheme.self_name)[:counter] += 1
end

.register_scheme(scheme_name) ⇒ Hash

Creates identification record about scheme

Parameters:

  • scheme_name (String)

    Scheme name

Returns:

  • (Hash)

    Identification information about scheme

Since:

  • 0.2.0



21
22
23
24
25
26
27
# File 'lib/jafry/identificator.rb', line 21

def register_scheme(scheme_name)
  config = Jafry::Configurator.get_config(scheme_name)
  config = Jafry::Configurator.set_config(scheme_name) unless config
  scheme = build_type(config[:id_type]).scheme_scaffold(scheme_name)
  self.schemes << scheme
  scheme
end

.set_id_for_scheme(scheme) ⇒ Scheme

Modifies scheme with current id

Parameters:

  • scheme (Scheme)

    Scheme instance

Returns:

Since:

  • 0.2.0



53
54
55
# File 'lib/jafry/identificator.rb', line 53

def set_id_for_scheme(scheme)
  scheme.merge!(generate_id(scheme))
end