Sha256: d0302e9f251408015b240aec097f89add37f62888ac15f1968dd23f7a069548a

Contents?: true

Size: 1.78 KB

Versions: 6

Compression:

Stored size: 1.78 KB

Contents

require_relative "metadata_section"
require_relative "terms_section"
require "iso-639"

module Tc211::Termbase

class TerminologySheet
  attr_accessor :sheet

  def initialize(sheet)
    @sheet = sheet
    self
  end

  def language
    @sheet.name
  end

  def language_code
    # Hack to make ISO_639 gem work...
    lang = case language
    when "Dutch"
      "Dutch; Flemish"
    when "Spanish"
      "Spanish; Castilian"
    else
      language
    end
    ISO_639.find_by_english_name(lang).alpha3
  rescue
    raise StandardError.new("Failed to find alpha3 code for language: #{lang}")
  end

  def sections_raw
    # Sections either start with "A" => "Item", or they have empty lines between
    raw_sections = @sheet.simple_rows.to_a

    raw_sections.reject! do |section|
      section.empty?
    end

    raw_sections = raw_sections.slice_before do |row|
      row["A"].to_s == "Item" || row["A"].to_s.match(/^ISO 19135 Field/)
    end.to_a
  end

  def terms_section
    sections

    sections.detect do |section|
      section.is_a?(TermsSection)
    end
  end

  def sections
    return @sections if @sections

    @sections = []
    sections_raw.each_with_index do |x,i|
      # puts "rows: #{x.inspect}"

      section = nil
      %w(MetadataSection TermsSection).each do |t|
        break if section
        begin
          # puts "rows: #{x.inspect}"
          section = ::Tc211::Termbase.const_get(t).new(x, {language_code: language_code})
        rescue SheetSection::RowHeaderMatchError
        end
      end

      unless section
        raise SheetSection::UnknownHeaderError.new("Unable to find header row match for section #{i} header, contents: #{x.inspect}")
      end

      puts "--------- Section #{i} is a #{section.class.name} ---------"

      @sections << section
    end

  end

end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
tc211-termbase-0.1.10 lib/tc211/termbase/terminology_sheet.rb
tc211-termbase-0.1.9 lib/tc211/termbase/terminology_sheet.rb
tc211-termbase-0.1.8 lib/tc211/termbase/terminology_sheet.rb
tc211-termbase-0.1.7 lib/tc211/termbase/terminology_sheet.rb
tc211-termbase-0.1.6 lib/tc211/termbase/terminology_sheet.rb
tc211-termbase-0.1.5 lib/tc211/termbase/terminology_sheet.rb