glossarist 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2545436241f3fc01daf4879682439d3f4650a44a45af855cc5260ad445caca0b
4
- data.tar.gz: c62fb0db9a7d1dc9ec4ad4ea9015a53a413bfbc922be77db276e4739926615a6
3
+ metadata.gz: c0462402c995f5b7e9fb01a4ee0d8e1f9ee3c5633c18fa071d9db6aa9f21f99f
4
+ data.tar.gz: 444e2d92467c4101edc81bc1af65fb6aeecaa0e138f63a49076f2283802baf17
5
5
  SHA512:
6
- metadata.gz: d611e1a09d99e64b7ad5e745d729fba2fe59d707f7f0469aa43fa3def04286c91128f5a65088f28943df550ef7eb6099d3354cadbafa7c68a93b08873512e2c1
7
- data.tar.gz: c1e0ec90c6a41c9a4c26f8db587d0cfbb986fb3c2086494554fbde8dfc829abf0406d2bf4e123d85710c2e23c699ac82b0db9c5328f3498f3c378bd509617c81
6
+ metadata.gz: ab7f0f87234df6fcd73286969c53e1186fcd247b4d8972a8d305b74cc995a4200785db43215a0d5aae719bc164123035f87a1756c104aa3d36b38775585f2019
7
+ data.tar.gz: d5f4a8834eb1d8bbb19d8352c13159e4626c8ff65233b5269658b77c4ee753bbcd8dcaf4502981b1ae2556a13e8af8deb45661e86f485cf7df25cf0f9d1cbb57
data/glossarist.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_dependency "relaton", "~> 1.16.0"
33
+ spec.add_dependency "relaton", "~> 1.16"
34
34
  spec.add_dependency "thor"
35
35
 
36
36
  spec.add_development_dependency "pry", "~> 0.14.0"
@@ -17,11 +17,11 @@ module Glossarist
17
17
  collection ||= ManagedConceptCollection.new
18
18
 
19
19
  Dir.glob(concepts_glob) do |filename|
20
- concept = load_concept_from_file(filename)
21
- concept.localized_concepts.each do |_lang, id|
22
- localized_concept = load_localized_concept(id)
23
- concept.add_l10n(localized_concept)
24
- end
20
+ concept = if v1_collection?
21
+ Glossarist::V1Reader.load_concept_from_file(filename)
22
+ else
23
+ load_concept_from_file(filename)
24
+ end
25
25
 
26
26
  collection.store(concept)
27
27
  end
@@ -35,7 +35,14 @@ module Glossarist
35
35
  def load_concept_from_file(filename)
36
36
  concept_hash = Psych.safe_load(File.read(filename), permitted_classes: [Date])
37
37
  concept_hash["uuid"] = concept_hash["id"] || File.basename(filename, ".*")
38
- ManagedConcept.new(concept_hash)
38
+
39
+ concept = ManagedConcept.new(concept_hash)
40
+ concept.localized_concepts.each do |_lang, id|
41
+ localized_concept = load_localized_concept(id)
42
+ concept.add_l10n(localized_concept)
43
+ end
44
+
45
+ concept
39
46
  rescue Psych::SyntaxError => e
40
47
  raise Glossarist::ParseError.new(filename: filename, line: e.line)
41
48
  end
@@ -71,11 +78,19 @@ module Glossarist
71
78
  private
72
79
 
73
80
  def concepts_glob
74
- File.join(path, "concept", "*.{yaml,yml}")
81
+ if v1_collection?
82
+ File.join(path, "concept-*.{yaml,yml}")
83
+ else
84
+ File.join(path, "concept", "*.{yaml,yml}")
85
+ end
75
86
  end
76
87
 
77
88
  def localized_concept_path(id)
78
89
  Dir.glob(File.join(path, "localized_concept", "#{id}.{yaml,yml}"))&.first
79
90
  end
91
+
92
+ def v1_collection?
93
+ @v1_collection ||= !Dir.glob(File.join(path, "concept-*.{yaml,yml}")).empty?
94
+ end
80
95
  end
81
96
  end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Glossarist
4
+ # An adapter to read concepts in V1 format, converts them to v2 format and
5
+ # load into glossarist concept model.
6
+ class V1Reader
7
+ def self.load_concept_from_file(filename)
8
+ new.load_concept_from_file(filename)
9
+ end
10
+
11
+ def load_concept_from_file(filename)
12
+ concept_hash = Psych.safe_load(File.read(filename), permitted_classes: [Date])
13
+ ManagedConcept.new(generate_v2_concept_hash(concept_hash))
14
+ end
15
+
16
+ private
17
+
18
+ def generate_v2_concept_hash(concept_hash)
19
+ v2_concept = { "groups" => concept_hash["groups"] }
20
+ v2_concept["data"] = {
21
+ "identifier" => concept_hash["termid"],
22
+ "localized_concepts" => concept_hash.values.grep(Hash),
23
+ }
24
+
25
+ v2_concept
26
+ end
27
+ end
28
+ end
@@ -4,5 +4,5 @@
4
4
  #
5
5
 
6
6
  module Glossarist
7
- VERSION = "2.0.0"
7
+ VERSION = "2.0.1"
8
8
  end
data/lib/glossarist.rb CHANGED
@@ -26,6 +26,7 @@ require_relative "glossarist/managed_concept_collection"
26
26
  require_relative "glossarist/concept_manager"
27
27
  require_relative "glossarist/managed_concept"
28
28
  require_relative "glossarist/non_verb_rep"
29
+ require_relative "glossarist/v1_reader"
29
30
 
30
31
  require_relative "glossarist/collections"
31
32
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glossarist
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-27 00:00:00.000000000 Z
11
+ date: 2023-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: relaton
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.16.0
19
+ version: '1.16'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.16.0
26
+ version: '1.16'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -145,6 +145,7 @@ files:
145
145
  - lib/glossarist/utilities/enum/enum_collection.rb
146
146
  - lib/glossarist/utilities/enum/instance_methods.rb
147
147
  - lib/glossarist/utilities/uuid.rb
148
+ - lib/glossarist/v1_reader.rb
148
149
  - lib/glossarist/version.rb
149
150
  homepage: https://github.com/glossarist/glossarist-ruby
150
151
  licenses: