Class: Factbook::JsonBuilder
- Inherits:
-
Object
- Object
- Factbook::JsonBuilder
- Includes:
- NormalizeHelper, LogUtils::Logging
- Defined in:
- lib/factbook/builder_json.rb
Overview
json builder – lets us rebuild a page from “dumped” json (instead of parsing html page)
Instance Attribute Summary collapse
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
-
#info ⇒ Object
readonly
Returns the value of attribute info.
-
#json ⇒ Object
readonly
Returns the value of attribute json.
-
#sects ⇒ Object
readonly
Returns the value of attribute sects.
-
#text ⇒ Object
readonly
Returns the value of attribute text.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(text) ⇒ JsonBuilder
constructor
A new instance of JsonBuilder.
Methods included from NormalizeHelper
Constructor Details
#initialize(text) ⇒ JsonBuilder
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 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/factbook/builder_json.rb', line 30 def initialize( text ) @text = text @json = JSON.parse( text ) @info = nil ## fix/todo: sorry - for now no page info (use header in json - why? why not??) @errors = [] ## fix/todo: sorry - for now no errors possible/tracked @sects = [] @json.each do |k1,v1| sect_title = k1 sect_subsects = v1 sect = Sect.new sect.title = sect_title ## get subsections subsects = [] sect_subsects.each do |k2,v2| subsect_title = k2 subsect_data = v2 subsect = Subsect.new subsect.title = subsect_title ##### ## note: run data hash through normalize_category (again) if subsect_data.is_a?( Hash ) new_subsect_data = {} subsect_data.each do |k3,v3| new_subsect_data[ normalize_category(k3) ] = v3 end subsect_data = new_subsect_data end subsect.data = subsect_data subsects << subsect end sect.subsects = subsects @sects << sect end end |
Instance Attribute Details
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
23 24 25 |
# File 'lib/factbook/builder_json.rb', line 23 def errors @errors end |
#info ⇒ Object (readonly)
Returns the value of attribute info.
23 24 25 |
# File 'lib/factbook/builder_json.rb', line 23 def info @info end |
#json ⇒ Object (readonly)
Returns the value of attribute json.
23 24 25 |
# File 'lib/factbook/builder_json.rb', line 23 def json @json end |
#sects ⇒ Object (readonly)
Returns the value of attribute sects.
23 24 25 |
# File 'lib/factbook/builder_json.rb', line 23 def sects @sects end |
#text ⇒ Object (readonly)
Returns the value of attribute text.
23 24 25 |
# File 'lib/factbook/builder_json.rb', line 23 def text @text end |
Class Method Details
.from_file(path) ⇒ Object
13 14 15 16 |
# File 'lib/factbook/builder_json.rb', line 13 def self.from_file( path ) text = File.read( path ) ## fix: use File.read_utf8 from textutils self.from_string( text ) end |
.from_string(text) ⇒ Object
18 19 20 |
# File 'lib/factbook/builder_json.rb', line 18 def self.from_string( text ) self.new( text ) end |