Sha256: bad6723dfd2c27821501f849615a704854822379c21d2f1fb05c733df622deda

Contents?: true

Size: 903 Bytes

Versions: 3

Compression:

Stored size: 903 Bytes

Contents

module Obo
  class Stanza
    attr_reader :name
    attr_reader :tagvalues

    def initialize(name)
      @name = name
      @tagvalues = Hash.new{|h,k| h[k] = []}
    end

    def [](tag)
      values = @tagvalues[tag]
      case values.length
      when 0
        nil
      when 1
        values.first
      else values
      end
    end

    def add(tag,value)
      @tagvalues[tag] << case value
                         when 'true'
                           true
                         when 'false'
                           false
                         else value
                         end
    end

    def method_missing(method, *args, &block)
      values = self[method.to_s]

      if values
        return values
      elsif method =~ /\?$/
        self.send(method[0..-2])
      else
        raise NoMethodError, "No method #{method} on #{self.class}"
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
obo-0.1.5 lib/obo/stanza.rb
obo-0.1.4 lib/obo/stanza.rb
obo-0.1.3 lib/obo/stanza.rb