Class: Glossarist::V1::Concept
- Inherits:
-
Lutaml::Model::Serializable
- Object
- Lutaml::Model::Serializable
- Glossarist::V1::Concept
- Defined in:
- lib/glossarist/v1/concept.rb
Constant Summary collapse
- KNOWN_KEYS =
%w[termid term groups references].freeze
Class Method Summary collapse
Instance Method Summary collapse
- #lang_blocks_from(model, value) ⇒ Object
- #lang_blocks_to(model, doc) ⇒ Object
- #termid? ⇒ Boolean
- #to_managed_concept ⇒ Object
Class Method Details
.from_file(path) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/glossarist/v1/concept.rb', line 23 def self.from_file(path) return nil unless path && File.exist?(path) concept = from_yaml(File.read(path)) return nil unless concept&.termid? concept rescue Psych::SyntaxError, Lutaml::Model::InvalidFormatError nil end |
Instance Method Details
#lang_blocks_from(model, value) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/glossarist/v1/concept.rb', line 51 def lang_blocks_from(model, value) blocks = {} value.each do |key, v| next if KNOWN_KEYS.include?(key) next unless v.is_a?(Hash) data = v.dup data["language_code"] ||= key blocks[key] = data end model.language_blocks = blocks end |
#lang_blocks_to(model, doc) ⇒ Object
64 65 66 67 68 |
# File 'lib/glossarist/v1/concept.rb', line 64 def lang_blocks_to(model, doc) model.language_blocks.each do |lang, data| doc[lang] = data end end |
#termid? ⇒ Boolean
34 35 36 |
# File 'lib/glossarist/v1/concept.rb', line 34 def termid? !!termid && !termid.empty? end |
#to_managed_concept ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/glossarist/v1/concept.rb', line 38 def to_managed_concept mc = ManagedConcept.new(data: { id: termid }) language_blocks.each_value do |data| mc.add_localization(LocalizedConcept.of_yaml({ "data" => data })) end assign_domains(mc) if groups.is_a?(Array) && groups.any? assign_references(mc) if references.is_a?(Array) && references.any? mc end |