diff options
| author | Robert | 2017-11-27 11:24:31 +0100 | 
|---|---|---|
| committer | Robert | 2017-12-14 15:34:46 +0100 | 
| commit | 424496bc6e7b6f94b0f34d3c11fb95fd7f6088c5 (patch) | |
| tree | 93b48c0c97478ead12d0fc61d625247a1b878d62 /lib | |
| parent | e82600d2efcc90f327b90d04239fe41b80031ad4 (diff) | |
| download | chouette-core-424496bc6e7b6f94b0f34d3c11fb95fd7f6088c5.tar.bz2 | |
Refs: #5006@12h;
   Implementing allowed vs foreign line lookup for the zip service
   - Adapting `lib/stif/netex_file.rb` to expose the already implemented matching
   - `app/services/zip_service.rb` augmented to check for allowed lines and returning forbidden lines
   - Specs with fixtures and using the beforementioned new zip support in the specs
   - Fixture directories for the new specs
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 | 
