Sha256: e526b979bcd179984b16f029f7ab653b9478967b3d7ebf11e44e8b432abde4ae

Contents?: true

Size: 1.29 KB

Versions: 9

Compression:

Stored size: 1.29 KB

Contents

require "glossarist"

module Stepmod
  module Utils
    class Term < Glossarist::LocalizedConcept
      # Term acronym
      attr_accessor :acronym

      def to_mn_adoc
        mn_adoc = ["=== #{definition.map(&:content).join}"]
        mn_adoc << "\nalt:[#{acronym}]" if acronym
        mn_adoc << "\n\n#{designations.map(&:designation).join(', ')}" if designations&.any?

        mn_adoc.join
      end

      class << self
        def from_h(hash)
          _, definition, acronym = treat_acronym(hash["definition"])

          hash["definition"] = [definition]

          hash["acronym"] = acronym.gsub(/\(|\)/, "") if acronym
          add_designations(hash, hash["synonyms"]) if hash["synonyms"]

          new(hash.reject { |k, _| k == "synonyms" })
        end

        private

        def add_designations(hash, synonyms)
          hash["designations"] ||= []
          hash["designations"] << designation_hash(synonyms) if synonyms
        end

        def designation_hash(value, type = "expression")
          {
            "designation" => value,
            "type" => type,
          }
        end

        def treat_acronym(term_def)
          return [nil, term_def.strip, nil] unless term_def.match?(/.+\(.+?\)$/)

          term_def.match(/(.+?)(\(.+\))$/).to_a
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
stepmod-utils-0.6.8 lib/stepmod/utils/term.rb
stepmod-utils-0.6.7 lib/stepmod/utils/term.rb
stepmod-utils-0.6.6 lib/stepmod/utils/term.rb
stepmod-utils-0.6.5 lib/stepmod/utils/term.rb
stepmod-utils-0.6.3 lib/stepmod/utils/term.rb
stepmod-utils-0.6.2 lib/stepmod/utils/term.rb
stepmod-utils-0.6.1 lib/stepmod/utils/term.rb
stepmod-utils-0.6.0 lib/stepmod/utils/term.rb
stepmod-utils-0.5.0 lib/stepmod/utils/term.rb