diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/stif/netex_file.rb | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/lib/stif/netex_file.rb b/lib/stif/netex_file.rb index a977c1ad3..b3e093727 100644 --- a/lib/stif/netex_file.rb +++ b/lib/stif/netex_file.rb @@ -2,8 +2,9 @@ module STIF class NetexFile CALENDAR_FILE_NAME = 'calendriers.xml' - LINE_FILE_FORMAT = /^offre_.*\.xml$/ - XML_NAME_SPACE = "http://www.netex.org.uk/netex" + LINE_FILE_FORMAT = %r{\A offre_ (.*?) _ .* \. xml \z}x + XML_NAME_SPACE = "http://www.netex.org.uk/netex" + def initialize(file_name) @file_name = file_name @@ -22,49 +23,53 @@ module STIF frames[entry_dir_name].parse_calendars(stream.read) end when LINE_FILE_FORMAT - frames[entry_dir_name].add_offer_file(entry_file_name) + frames[entry_dir_name].add_offer_file($1) end end end frames.values end - end + class Frame - class NetexFile::Frame + class << self + def get_line_object_id file_name + base_name = File.split(file_name).last + STIF::NetexFile::LINE_FILE_FORMAT.match(base_name).try(:[], 1) + end + end - attr_accessor :name + attr_accessor :name - def initialize(name) - @name = name - end + def initialize(name) + @name = name + end + + def parse_calendars(calendars) + # <netex:ValidBetween> + # <netex:FromDate>2017-03-01</netex:FromDate> + # <netex:ToDate>2017-03-31</netex:ToDate> + # </netex:ValidBetween> + xml = Nokogiri::XML(calendars) + xml.xpath("//netex:ValidBetween", "netex" => NetexFile::XML_NAME_SPACE).each do |valid_between| + from_date = valid_between.xpath("netex:FromDate").try :text + to_date = valid_between.xpath("netex:ToDate").try :text + periods << Range.new(Date.parse(from_date), Date.parse(to_date)) + end + end - def parse_calendars(calendars) - # <netex:ValidBetween> - # <netex:FromDate>2017-03-01</netex:FromDate> - # <netex:ToDate>2017-03-31</netex:ToDate> - # </netex:ValidBetween> - xml = Nokogiri::XML(calendars) - xml.xpath("//netex:ValidBetween", "netex" => NetexFile::XML_NAME_SPACE).each do |valid_between| - from_date = valid_between.xpath("netex:FromDate").try :text - to_date = valid_between.xpath("netex:ToDate").try :text - periods << Range.new(Date.parse(from_date), Date.parse(to_date)) + def add_offer_file(line_object_id) + line_refs << line_object_id end - end - def add_offer_file(file_name) - if file_name =~ /^offre_([^_]*)_/ - line_refs << $1 + def periods + @periods ||= [] end - end - def periods - @periods ||= [] - end + def line_refs + @line_refs ||= [] + end - def line_refs - @line_refs ||= [] end - end end |
