Sha256: 6311dc1e94fd3a619a6ec22aef90dc7fbf5d583aaf7eb7fef85372ea6953e0f5

Contents?: true

Size: 1.2 KB

Versions: 6

Compression:

Stored size: 1.2 KB

Contents

require "creek"
require "yaml"
require "pathname"
require_relative "information_sheet"
require_relative "terminology_sheet"

module Tc211::Termbase
  class TermWorkbook
    attr_accessor :workbook, :glossary_info, :languages, :filename

    SPECIAL_SHEETS = [
      "Glossary Information",
      "Character Encoding Spreadsheet",
    ].freeze

    def initialize(filepath)
      @filename = filepath
      @workbook = Creek::Book.new(filepath)
      @glossary_info = InformationSheet.new(
        find_sheet_by_name("Glossary Information"),
      )
      @languages = languages_supported
      self
    end

    def languages_supported
      @workbook.sheets.map(&:name).reject! do |name|
        SPECIAL_SHEETS.include?(name)
      end
    end

    def language_sheet(lang)
      raise unless @languages.include?(lang)

      TerminologySheet.new(find_sheet_by_name(lang))
    end

    def find_sheet_by_name(sheet_name)
      @workbook.sheets.detect do |sheet|
        sheet.name == sheet_name
      end
    end

    def write_glossary_info
      glossary_info_fn = Pathname.new(@filename).sub_ext(".yaml")
      File.open(glossary_info_fn, "w") do |file|
        file.write(glossary_info.to_yaml)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
tc211-termbase-0.2.8 lib/tc211/termbase/term_workbook.rb
tc211-termbase-0.2.7 lib/tc211/termbase/term_workbook.rb
tc211-termbase-0.2.6 lib/tc211/termbase/term_workbook.rb
tc211-termbase-0.2.5 lib/tc211/termbase/term_workbook.rb
tc211-termbase-0.2.4 lib/tc211/termbase/term_workbook.rb
tc211-termbase-0.2.3 lib/tc211/termbase/term_workbook.rb