Sha256: bbd5cc117636e51c92c268a9e9f3c829c534d59eb07f1b807e6e5c4cc30505cd

Contents?: true

Size: 1.3 KB

Versions: 3

Compression:

Stored size: 1.3 KB

Contents

module Bioinform
  class Parser
    module SingleMotifParser
      def self.included(base)
        base.class_eval { extend ClassMethods }
        include Enumerable
        alias_method :split, :to_a
      end
      module ClassMethods
        def split_on_motifs(input, pm_klass = PM)
          [ input.is_a?(pm_klass) ? self : pm_klass.new(input, self) ]
        end
      end
      def each
        if block_given?
          yield self
        else
          self.to_enum(:each)
        end
      end
    end
    include SingleMotifParser

    module MultipleMotifsParser
      def self.included(base)
        base.class_eval { extend ClassMethods }
        include Enumerable
        alias_method :split, :to_a
      end
      module ClassMethods
        def split_on_motifs(input, pm_klass = PM)
          split(input).map{|el| el.is_a?(pm_klass) ? el : pm_klass.new(el)}
        end
        def split(input)
          self.new(input).split
        end
        private :split
      end

      def scanner_reset
      end

      def each
        if block_given?
          scanner_reset
          while result = parse
            yield result
          end
        else
          self.to_enum(:each)
        end
      end

      private :scanner_reset
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bioinform-0.1.12 lib/bioinform/parsers/splittable_parser.rb
bioinform-0.1.11 lib/bioinform/parsers/splittable_parser.rb
bioinform-0.1.10 lib/bioinform/parsers/splittable_parser.rb