Class: Factbook::ProfileBuilder

Inherits:
Object
  • Object
show all
Includes:
NormalizeHelper, LogUtils::Logging
Defined in:
lib/factbook-fields/builder.rb

Overview

builder – lets us rebuild a profile from “dumped” hash

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from NormalizeHelper

#normalize_title

Constructor Details

#initialize(text_or_data) ⇒ ProfileBuilder

Returns a new instance of ProfileBuilder.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/factbook-fields/builder.rb', line 20

def initialize( text_or_data )

  data = if text_or_data.is_a?( String )
           text = text_or_data
           JSON.parse( text )
         else  ## assume it's already a hash
            text_or_data
         end


  @profile = Profile.new
  @errors  = []       ## fix/todo: sorry - for now no errors possible/tracked

  data.each do |k1,v1|
    category_title    = k1
    category_data     = v1

    category = Category.new( category_title )

    ## get fields
    category_data.each do |k2,v2|
      field_title = k2
      field_data  = v2

      field = Field.new( field_title )

      #####
      ## note: run data hash through normalize_title (again)
      if field_data.is_a?( Hash )
        new_field_data = {}
        field_data.each do |k3,v3|
          new_field_data[ normalize_title(k3) ] = v3
        end
        field_data = new_field_data
      end

      field.data  = field_data

      category << field
    end
    @profile << category
  end
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



13
14
15
# File 'lib/factbook-fields/builder.rb', line 13

def errors
  @errors
end

#profileObject (readonly)

Returns the value of attribute profile.



13
14
15
# File 'lib/factbook-fields/builder.rb', line 13

def profile
  @profile
end