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