aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stif/netex_file.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/stif/netex_file.rb')
-rw-r--r--lib/stif/netex_file.rb31
1 files changed, 19 insertions, 12 deletions
diff --git a/lib/stif/netex_file.rb b/lib/stif/netex_file.rb
index b3e093727..e58f22f08 100644
--- a/lib/stif/netex_file.rb
+++ b/lib/stif/netex_file.rb
@@ -2,7 +2,7 @@ module STIF
class NetexFile
CALENDAR_FILE_NAME = 'calendriers.xml'
- LINE_FILE_FORMAT = %r{\A offre_ (.*?) _ .* \. xml \z}x
+ LINE_FILE_FORMAT = %r{\A offre_ (?<line_object_id> .*?) _ .* \. xml \z}x
XML_NAME_SPACE = "http://www.netex.org.uk/netex"
@@ -14,22 +14,29 @@ module STIF
frames = Hash.new { |h,k| h[k] = NetexFile::Frame.new(k) }
Zip::File.open(@file_name) do |zipfile|
zipfile.each do |entry|
- next unless entry.ftype == :file
-
- entry_dir_name, entry_file_name = File.split(entry.name)
- case entry_file_name
- when CALENDAR_FILE_NAME
- entry.get_input_stream do |stream|
- frames[entry_dir_name].parse_calendars(stream.read)
- end
- when LINE_FILE_FORMAT
- frames[entry_dir_name].add_offer_file($1)
- end
+ add_frame(to_frames: frames, from_entry: entry) if entry.ftype == :file
+
end
end
frames.values
end
+
+ private
+
+ def add_frame(to_frames:, from_entry:)
+ entry_dir_name, entry_file_name = File.split(from_entry.name)
+ case entry_file_name
+ when CALENDAR_FILE_NAME
+ from_entry.get_input_stream do |stream|
+ to_frames[entry_dir_name].parse_calendars(stream.read)
+ end
+ when LINE_FILE_FORMAT
+ to_frames[entry_dir_name].add_offer_file($1)
+ end
+ end
+
+
class Frame
class << self