class Filmrolls::XMLFormat::Parser

Public Class Methods

load(io) click to toggle source
   # File lib/filmrolls/xmlformat.rb
 8 def self.load(io)
 9   doc = Nokogiri::XML(io)
10   doc.remove_namespaces!
11   {
12     cameras:
13       doc.xpath('/data/cameras/camera').map { |n| load_camera(n) },
14     lenses:
15       doc.xpath('/data/lenses/lens').map { |n| load_lens(n) },
16     accessories:
17       doc.xpath('/data/accessories/accessory').map { |n| load_accessory(n) },
18     rolls:
19       doc.xpath('/data/filmRolls/filmRoll').map { |n| load_filmroll(n) }
20   }
21 end

Private Class Methods

load_accessory(node) click to toggle source
   # File lib/filmrolls/xmlformat.rb
34 def load_accessory(node)
35   node.text
36 end
load_camera(node) click to toggle source
   # File lib/filmrolls/xmlformat.rb
26 def load_camera(node)
27   node.text
28 end
load_filmroll(node) click to toggle source
   # File lib/filmrolls/xmlformat.rb
38 def load_filmroll(node)
39   {
40     id: node.at_xpath('./note').text,
41     film: node.at_xpath('./title').text,
42     speed: node.at_xpath('./speed').text.to_i,
43     camera: node.at_xpath('./camera').text,
44     load: DateTime.iso8601(node.at_xpath('./load').text),
45     unload: DateTime.iso8601(node.at_xpath('./unload').text),
46     frames: node.xpath('./frames/frame').map { |n| load_frame(n) }
47   }
48 end
load_frame(node) click to toggle source
   # File lib/filmrolls/xmlformat.rb
50 def load_frame(node)
51   {
52     lens: node.at_xpath('./lens').text,
53     aperture: node.at_xpath('./aperture').text.to_f,
54     shutter_speed: node.at_xpath('./shutterSpeed').text.to_r,
55     compensation: node.at_xpath('./compensation').text.to_f,
56     accessory: node.at_xpath('./accessory').text,
57     date: DateTime.iso8601(node.at_xpath('./date').text),
58     note: node.at_xpath('./note').text,
59     position: Geokit::LatLng.new(
60       node.at_xpath('./latitude').text.to_f,
61       node.at_xpath('./longitude').text.to_f
62     )
63   }
64 end
load_lens(node) click to toggle source
   # File lib/filmrolls/xmlformat.rb
30 def load_lens(node)
31   node.text
32 end