Sha256: 2b7a5fe85e971e99cc39117d259eddbe9cf297ba7a5ff7a9febc9190cc7caed4

Contents?: true

Size: 961 Bytes

Versions: 2

Compression:

Stored size: 961 Bytes

Contents

module Tc211::Termbase

class Concept < Hash
  attr_accessor :id
  attr_accessor :terms
  DEFAULT_LANGUAGE = "eng"

  def initialize(options={})
    terms = options.delete(:terms) || []
    terms.each do |term|
      add_term(term)
    end

    options.each_pair do |k,v|
      self.send("#{k}=", v)
    end
  end

  def add_term(term)
    self[term.language_code] = term
  end

  def default_term
    if self[DEFAULT_LANGUAGE]
      self[DEFAULT_LANGUAGE]
    else
      puts "[tc211-termbase] term (lang: #{keys.first}, ID: #{id}) is missing a corresponding English term, probably needs updating."
      self[keys.first]
    end
  end

  def to_hash
    default_hash = {
      "term" => default_term.term,
      "termid" => id
    }

    self.inject(default_hash) do |acc, (lang, term)|
      acc.merge!(lang => term.to_hash)
    end
  end

  def to_file(filename)
    File.open(filename,"w") do |file|
      file.write(to_hash.to_yaml)
    end
  end

end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tc211-termbase-0.1.2 lib/tc211/termbase/concept.rb
tc211-termbase-0.1.1 lib/tc211/termbase/concept.rb