Sha256: 66f1d3ca0e629f474f68e37662d6c7e1af46df6e145d418e1b98961fb1af1b77

Contents?: true

Size: 1.1 KB

Versions: 6

Compression:

Stored size: 1.1 KB

Contents

class Usher
  class Splitter

    def self.for_delimiters(delimiters_array)
      delimiters = Delimiters.new(delimiters_array)
      delimiters_array.any?{|d| d.size > 1} ?
        MultiCharacterSplitterInstance.new(delimiters) :
        SingleCharacterSplitterInstance.new(delimiters)
    end

    class SingleCharacterSplitterInstance
    
      def initialize(delimiters)
        @url_split_regex = Regexp.new("[#{delimiters.collect{|d| Regexp.quote(d)}.join}]|[^#{delimiters.collect{|d| Regexp.quote(d)}.join}]+")
      end
      
      def url_split(path)
        path.scan(@url_split_regex)
      end
      alias split url_split
    end
    
    class MultiCharacterSplitterInstance
    
      def initialize(delimiters)
        @delimiters = delimiters
      end

      def url_split(path)
        split_path = path.split(delimiters_regexp)
        split_path.reject!{|s| s.size.zero? }
        split_path
      end
      alias split url_split

      protected

      def delimiters_regexp
        Regexp.new("(#{@delimiters.unescaped.collect{|d| Regexp.quote(d)}.join('|')})")
      end
      
    end    
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
usher-0.6.2 lib/usher/splitter.rb
usher-0.6.1 lib/usher/splitter.rb
usher-0.6.0 lib/usher/splitter.rb
usher-0.5.13 lib/usher/splitter.rb
usher-0.5.12 lib/usher/splitter.rb
usher-0.5.11 lib/usher/splitter.rb