Sha256: 6d84d88f77b565bf983930051eb0af217f92d9ab557bdbae8c2b85e9275a3d0a

Contents?: true

Size: 1.41 KB

Versions: 26

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require_relative "../utilities"

module Glossarist
  module Designation
    class GrammarInfo
      include Glossarist::Utilities::Enum
      include Glossarist::Utilities::BooleanAttributes
      include Glossarist::Utilities::CommonFunctions

      register_enum :gender, Glossarist::GlossaryDefinition::GRAMMAR_INFO_GENDERS, multiple: true
      register_enum :number, Glossarist::GlossaryDefinition::GRAMMAR_INFO_NUMBERS, multiple: true

      register_boolean_attributes Glossarist::GlossaryDefinition::GRAMMAR_INFO_BOOLEAN_ATTRIBUTES

      def initialize(options = {})
        sanitized_options(options).each do |attr, value|
          public_send("#{attr}=", value)
        end
      end

      def part_of_speech=(pos)
        public_send("#{pos}=", pos)
      end

      def to_h
        {
          "preposition" => preposition?,
          "participle" => participle?,
          "adj" => adj?,
          "verb" => verb?,
          "adverb" => adverb?,
          "noun" => noun?,
          "gender" => gender,
          "number" => number,
        }
      end

      private

      def sanitized_options(options)
        hash = symbolize_keys(options)
        slice_keys(hash, [
          :gender,
          :number,
          :preposition,
          :participle,
          :adj,
          :verb,
          :adverb,
          :noun,
          :part_of_speech,
        ])
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

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