glossarist-new 1.0.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 442880e43fea97be6b9226dfe85895005fff7201cc5e5fda9560a83bf930e868
4
- data.tar.gz: f2e3741feadb58449f9a968c656fc6b8b5efd62356f7f79b400c71081776c989
3
+ metadata.gz: f0b88c582178e67916b7058bba75f92a14b5862926188092fa6e539c0eb05ad5
4
+ data.tar.gz: c7d3c4e294f2f77279e712d865239a824ea84ee8fb2a884e23f935c9ca5b871e
5
5
  SHA512:
6
- metadata.gz: 5b8fa26c16edb86abc96b9eea2c06903dc37caf330fd99f3adc22d5bb661c6c661b71f50bf8600eb0884f9a16216e22161d39c14a296d79b66626a8829460505
7
- data.tar.gz: e78d3c5eddb092014afaecd9097e3857da8765a8bf28b8ad4858ef5f54841d744ece34e465960baa5e9350a1c4aa8bb61a898cc96eb6b95d945d333463d6722c
6
+ metadata.gz: 2ed31f71ae7f554ed6e4f32f27f2203d78c66ce95e6f1e33502cc610142d9cef534ba21fe6a01aee37bf75f6d889b61f99780448e12aa591e4454cf73986d891
7
+ data.tar.gz: aa4f3b7c9882afde4d1bbf541ccf509150e434a63fa0f68314d6f72e48d344a22d73524eed91524b5b81c83105cc9917c5c469a24560c181619fe0c10c827f01
@@ -17,8 +17,6 @@ jobs:
17
17
  - "3.0"
18
18
  - "2.7"
19
19
  - "2.6"
20
- - "2.5"
21
- - "2.4"
22
20
 
23
21
  steps:
24
22
  - name: Fetch source code
data/.gitignore CHANGED
@@ -16,3 +16,5 @@
16
16
  .rubocop-http---*
17
17
  .rubocop-https---*
18
18
 
19
+ # Relaton local cache directory
20
+ localcache
data/glossarist.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
  "Concept models for terminology glossaries conforming ISO 10241-1."
17
17
  spec.homepage = "https://github.com/glossarist/glossarist-ruby"
18
18
  spec.license = "BSD-2-Clause"
19
- spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
19
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
20
20
 
21
21
  spec.metadata["homepage_uri"] = spec.homepage
22
22
  spec.metadata["source_code_uri"] = spec.homepage
@@ -30,6 +30,8 @@ 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.13.0"
34
+
33
35
  spec.add_development_dependency "pry", "~> 0.14.0"
34
36
  spec.add_development_dependency "rake", "~> 13.0"
35
37
  spec.add_development_dependency "rspec", "~> 3.10"
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # (c) Copyright 2021 Ribose Inc.
4
+ #
5
+
6
+ module Glossarist
7
+ class Asset
8
+ attr_accessor :path
9
+
10
+ def initialize(path)
11
+ @path = path
12
+ end
13
+
14
+ def eql?(asset)
15
+ path == asset.path
16
+ end
17
+
18
+ def hash
19
+ path.hash
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Glossarist
4
+ module Collections
5
+ class AssetCollection < Set
6
+ def initialize(assets)
7
+ super
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "relaton"
4
+
5
+ module Glossarist
6
+ module Collections
7
+ class BibliographyCollection < Relaton::Db
8
+ def initialize(concepts, global_cache, local_cache)
9
+ super(global_cache, local_cache)
10
+ end
11
+
12
+ private
13
+
14
+ def populate_bibliographies(concepts)
15
+ concepts.each do |concept|
16
+ concept.default_lang.sources.each do |source|
17
+ next if source.origin.text.nil?
18
+
19
+ fetch(source.origin.text)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,2 @@
1
+ require_relative "collections/asset_collection"
2
+ require_relative "collections/bibliography_collection"
@@ -122,7 +122,7 @@ module Glossarist
122
122
 
123
123
  hash.values
124
124
  .grep(Hash)
125
- .map { |subhash| LocalizedConcept.from_h(subhash) rescue nil }
125
+ .map { |subhash| Config.class_for(:localized_concept).from_h(subhash) rescue nil }
126
126
  .compact
127
127
 
128
128
  concept.related = hash.dig("related") || []
@@ -26,8 +26,6 @@ module Glossarist
26
26
  managed_concepts.each_value &method(:save_concept_to_file)
27
27
  end
28
28
 
29
- private
30
-
31
29
  def load_concept_from_file(filename)
32
30
  ManagedConcept.new(Psych.safe_load(File.read(filename)))
33
31
  end
@@ -37,6 +35,8 @@ module Glossarist
37
35
  File.write(filename, Psych.dump(concept.to_h))
38
36
  end
39
37
 
38
+ private
39
+
40
40
  def concepts_glob
41
41
  File.join(path, "concept-*.{yaml,yml}")
42
42
  end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Glossarist
4
+ class ConceptSet
5
+ # a `Glossarist::ManagedConceptCollection` object
6
+ attr_accessor :concepts
7
+
8
+ # a `BibliographyCollection` object
9
+ attr_accessor :bibliographies
10
+
11
+ # an `Collections::Asset` object
12
+ attr_accessor :assets
13
+
14
+ # @parameters
15
+ # concepts => a `Glossarist::ManagedConceptCollection` object or
16
+ # a string containing the path of the folder with concepts
17
+ # assets => a collection of Glossarist::Asset
18
+ def initialize(concepts, assets, options = {})
19
+ @concepts = read_concepts(concepts)
20
+ @assets = Glossarist::Collections::AssetCollection.new(assets)
21
+ @bibliographies = Glossarist::Collections::BibliographyCollection.new(
22
+ @concepts,
23
+ options.dig(:bibliography, :global_cache),
24
+ options.dig(:bibliography, :local_cache),
25
+ )
26
+ end
27
+
28
+ def to_latex(filename = nil)
29
+ return to_latex_from_file(filename) if filename
30
+
31
+ @concepts.map do |concept|
32
+ latex_template(concept)
33
+ end.join("\n")
34
+ end
35
+
36
+ private
37
+
38
+ def to_latex_from_file(entries_file)
39
+ File.readlines(entries_file).map do |concept_name|
40
+ concept = concept_map[concept_name.strip.downcase]
41
+
42
+ if concept.nil?
43
+ puts " [Not Found]: #{concept_name.strip}"
44
+ else
45
+ latex_template(concept)
46
+ end
47
+ end.compact.join("\n")
48
+ end
49
+
50
+ def read_concepts(concepts)
51
+ return concepts if concepts.is_a?(Glossarist::ManagedConceptCollection)
52
+
53
+ collection = Glossarist::ManagedConceptCollection.new
54
+ collection.load_from_files(concepts)
55
+ collection
56
+ end
57
+
58
+ def latex_template(concept)
59
+ <<~TEMPLATE
60
+ \\newglossaryentry{#{concept.default_designation.gsub('_', '-')}}
61
+ {
62
+ name={#{concept.default_designation.gsub('_', '\_')}}
63
+ description={#{normalize_definition(concept.default_definition)}}
64
+ }
65
+ TEMPLATE
66
+ end
67
+
68
+ def normalize_definition(definition)
69
+ definition.gsub(/{{([^}]*)}}/) do |match|
70
+ "\\textbf{\\gls{#{Regexp.last_match[1].gsub('_', '-')}}}"
71
+ end
72
+ end
73
+
74
+ def concept_map
75
+ @concept_map ||= concepts.managed_concepts.map do |concept|
76
+ [concept.default_designation.downcase, concept]
77
+ end.to_h
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "singleton"
4
+
5
+ module Glossarist
6
+ class Config
7
+ include Singleton
8
+
9
+ DEFAULT_CLASSES = {
10
+ localized_concept: Glossarist::LocalizedConcept,
11
+ }.freeze
12
+
13
+ attr_reader :registered_classes
14
+
15
+ def initialize
16
+ @registered_classes = DEFAULT_CLASSES.dup
17
+ end
18
+
19
+ def class_for(name)
20
+ @registered_classes[name.to_sym]
21
+ end
22
+
23
+ def register_class(class_name, klass)
24
+ @registered_classes[class_name] = klass
25
+ end
26
+
27
+ class << self
28
+ def class_for(name)
29
+ self.instance.class_for(name)
30
+ end
31
+
32
+ def register_class(class_name, klass)
33
+ self.instance.register_class(class_name, klass)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -36,7 +36,7 @@ module Glossarist
36
36
  end
37
37
 
38
38
  def localized_concepts=(localized_concepts_hash)
39
- @localized_concepts = localized_concepts_hash.map { |l| LocalizedConcept.new(l) }.compact
39
+ @localized_concepts = localized_concepts_hash.map { |l| Config.class_for(:localized_concept).new(l) }.compact
40
40
 
41
41
  @localized_concepts.each do |l|
42
42
  add_l10n(l)
@@ -85,6 +85,15 @@ module Glossarist
85
85
  localized&.terms&.first&.designation
86
86
  end
87
87
 
88
+ def default_definition
89
+ localized = localization("eng") || localizations.values.first
90
+ localized&.definition&.first&.content
91
+ end
92
+
93
+ def default_lang
94
+ localization("eng") || localizations.values.first
95
+ end
96
+
88
97
  def managed_concept_attributes
89
98
  %i[
90
99
  id
@@ -4,5 +4,5 @@
4
4
  #
5
5
 
6
6
  module Glossarist
7
- VERSION = "1.0.1"
7
+ VERSION = "1.0.3"
8
8
  end
data/lib/glossarist.rb CHANGED
@@ -9,11 +9,13 @@ require_relative "glossarist/utilities"
9
9
  require_relative "glossarist/version"
10
10
  require_relative "glossarist/glossary_definition"
11
11
 
12
+ require_relative "glossarist/asset"
12
13
  require_relative "glossarist/model"
13
14
  require_relative "glossarist/concept_date"
14
15
  require_relative "glossarist/detailed_definition"
15
16
  require_relative "glossarist/related_concept"
16
17
  require_relative "glossarist/citation"
18
+ require_relative "glossarist/concept_set"
17
19
  require_relative "glossarist/concept_source"
18
20
  require_relative "glossarist/collection"
19
21
  require_relative "glossarist/designation"
@@ -24,8 +26,18 @@ require_relative "glossarist/concept_manager"
24
26
  require_relative "glossarist/managed_concept"
25
27
  require_relative "glossarist/non_verb_rep"
26
28
 
29
+ require_relative "glossarist/collections"
30
+
31
+ require_relative "glossarist/config"
32
+
27
33
  module Glossarist
28
34
  class Error < StandardError; end
29
35
  class InvalidTypeError < StandardError; end
30
36
  # Your code goes here...
37
+
38
+ def self.configure
39
+ config = Glossarist::Config.instance
40
+
41
+ yield(config) if block_given?
42
+ end
31
43
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glossarist-new
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-23 00:00:00.000000000 Z
11
+ date: 2023-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: relaton
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.13.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.13.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: pry
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,12 +86,18 @@ files:
72
86
  - config.yml
73
87
  - glossarist.gemspec
74
88
  - lib/glossarist.rb
89
+ - lib/glossarist/asset.rb
75
90
  - lib/glossarist/citation.rb
76
91
  - lib/glossarist/collection.rb
92
+ - lib/glossarist/collections.rb
93
+ - lib/glossarist/collections/asset_collection.rb
94
+ - lib/glossarist/collections/bibliography_collection.rb
77
95
  - lib/glossarist/concept.rb
78
96
  - lib/glossarist/concept_date.rb
79
97
  - lib/glossarist/concept_manager.rb
98
+ - lib/glossarist/concept_set.rb
80
99
  - lib/glossarist/concept_source.rb
100
+ - lib/glossarist/config.rb
81
101
  - lib/glossarist/designation.rb
82
102
  - lib/glossarist/designation/abbreviation.rb
83
103
  - lib/glossarist/designation/base.rb
@@ -117,14 +137,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
137
  requirements:
118
138
  - - ">="
119
139
  - !ruby/object:Gem::Version
120
- version: 2.4.0
140
+ version: 2.6.0
121
141
  required_rubygems_version: !ruby/object:Gem::Requirement
122
142
  requirements:
123
143
  - - ">="
124
144
  - !ruby/object:Gem::Version
125
145
  version: '0'
126
146
  requirements: []
127
- rubygems_version: 3.1.2
147
+ rubygems_version: 3.3.25
128
148
  signing_key:
129
149
  specification_version: 4
130
150
  summary: Concept models for terminology glossaries conforming ISO 10241-1.