diff options
| author | Robert | 2017-12-07 13:08:55 +0100 |
|---|---|---|
| committer | Robert | 2017-12-14 15:34:46 +0100 |
| commit | 1e508ac3046bdc9f5c2c7b96959ab55912f9a680 (patch) | |
| tree | 0ae495259a04848c821d80347ab063b8cf9057f4 /lib | |
| parent | 9bde9a3d24e3893a7a4ee89c95044899e59c89f4 (diff) | |
| download | chouette-core-1e508ac3046bdc9f5c2c7b96959ab55912f9a680.tar.bz2 | |
Refs #5006@0.5h; CR pass III / (i)
- refact of NetexFile#frames
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/stif/netex_file.rb | 31 |
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 |
