Sha256: 73617da80ed0e754afd862de85d4a6086fa38315c8176b205e82440bb88e1de6

Contents?: true

Size: 1.35 KB

Versions: 26

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require_relative "base"

module Glossarist
  module Designation
    class Expression < Base
      attr_accessor :prefix
      attr_accessor :usage_info

      # List of grammar info.
      # @return [Array<GrammarInfo>]
      attr_reader :grammar_info

      def grammar_info=(grammar_info)
        @grammar_info = grammar_info.map { |g| GrammarInfo.new(g) }
      end

      # @todo Added to cater for current iev-data implementation,
      #   might be removed in the future.
      def self.from_h(hash)
        gender = hash.delete("gender") || hash.delete(:gender)
        number = hash.delete("plurality") || hash.delete(:plurality)
        part_of_speech = hash.delete("part_of_speech") || hash.delete(:part_of_speech)

        if gender || number || part_of_speech
          hash["grammar_info"] = [{
            "gender" => gender,
            "number" => number,
            part_of_speech => part_of_speech,
          }.compact]
        end

        super
      end

      def to_h
        {
          "type" => "expression",
          "prefix" => prefix,
          "normative_status" => normative_status,
          "usage_info" => usage_info,
          "designation" => designation,
          "geographical_area" => geographical_area,
          "grammar_info" => grammar_info&.map(&:to_h),
        }.compact
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
glossarist-2.3.0 lib/glossarist/designation/expression.rb
glossarist-2.2.1 lib/glossarist/designation/expression.rb
glossarist-2.2.0 lib/glossarist/designation/expression.rb
glossarist-2.1.0 lib/glossarist/designation/expression.rb
glossarist-2.0.10 lib/glossarist/designation/expression.rb
glossarist-2.0.9 lib/glossarist/designation/expression.rb
glossarist-2.0.8 lib/glossarist/designation/expression.rb
glossarist-2.0.7 lib/glossarist/designation/expression.rb
glossarist-2.0.6 lib/glossarist/designation/expression.rb
glossarist-2.0.5 lib/glossarist/designation/expression.rb
glossarist-2.0.4 lib/glossarist/designation/expression.rb
glossarist-2.0.3 lib/glossarist/designation/expression.rb
glossarist-2.0.2 lib/glossarist/designation/expression.rb
glossarist-2.0.1 lib/glossarist/designation/expression.rb
glossarist-2.0.0 lib/glossarist/designation/expression.rb
glossarist-1.1.0 lib/glossarist/designation/expression.rb
glossarist-1.0.9 lib/glossarist/designation/expression.rb
glossarist-1.0.8 lib/glossarist/designation/expression.rb
glossarist-1.0.7 lib/glossarist/designation/expression.rb
glossarist-1.0.6 lib/glossarist/designation/expression.rb