jekyll-geolexica 1.8.5 → 1.8.7

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: 1f2e4bcbfbbc858dab343b69a8ca6e6f9bffc7614e351edd4912d5b634f2b753
4
- data.tar.gz: e594f95d15905ba550ba28dc9406fea89275c72a83698991b6cf059f8c8ebf73
3
+ metadata.gz: 16891afbfd31bfa320715e20de559a8ae6b96eecc2cfc53b38ab1654f5c1e156
4
+ data.tar.gz: 1fb4b721b4029abaa5d1c6fdb5f4026ef1eca64fc4f29288bc81f8edfb6be7b2
5
5
  SHA512:
6
- metadata.gz: b8f4388e91b95498f5bb9c149442a4f80838934e85abe00dadc76db098c77d1c20cc94d7774f25c85c726747bc92b447fc5bebf544b417e02597713636cc54ad
7
- data.tar.gz: 4edf86b932528075fa07fb67a6fe93d222e31367b42a6461054eed9773859362b37bb80f7ce98a31822bdf76f0a8c15fd7a70ef76f0b2ed104201ee6a2c74a68
6
+ metadata.gz: e5b2fcbcebd7174d974e5579caf37f921f245f47bd68c824c6bce4ebe70db6c5356ee769fd7a3998a7b80080fe8b38c97c42af8333a0ae221acf05159fd90a1d
7
+ data.tar.gz: 2f6a10a96391e6384f1c4a2b3e97d6ea62ba2eccbdcff936adf199c3dc4412625f7d9ca2b0bf4a87ee9acae804ec11e70b670ab29b199fd62d0ad2cd033eb9c7
@@ -9,6 +9,17 @@ module Jekyll
9
9
  File.expand_path(glob_string, site.source)
10
10
  end
11
11
 
12
+ def localized_concepts_path
13
+ path = glossary_config["localized_concepts_path"]
14
+ return nil if path.nil? || path.empty?
15
+
16
+ File.expand_path(path, site.source)
17
+ end
18
+
19
+ def glossary_format
20
+ glossary_config["format"]
21
+ end
22
+
12
23
  def images_path
13
24
  glossary_path = glossary_config["glossary_path"]
14
25
  return nil if glossary_path.nil? || glossary_path.empty?
@@ -8,20 +8,20 @@ module Jekyll
8
8
 
9
9
  attr_reader :site
10
10
 
11
- alias_method :each_concept, :each_value
12
- alias_method :each_termid, :each_key
11
+ alias each_concept each_value
12
+ alias each_termid each_key
13
13
 
14
14
  def initialize(site)
15
15
  @site = site
16
16
  end
17
17
 
18
18
  def load_glossary
19
- Jekyll.logger.info("Geolexica:", "Loading concepts")
19
+ Jekyll.logger.info('Geolexica:', 'Loading concepts')
20
20
  Dir.glob(concepts_glob).each { |path| load_concept(path) }
21
21
  end
22
22
 
23
23
  def store(concept)
24
- super(concept.data["termid"], concept)
24
+ super(concept.data['termid'], concept)
25
25
  end
26
26
 
27
27
  def language_statistics
@@ -31,21 +31,27 @@ module Jekyll
31
31
  # Defines how Glossary is exposed in Liquid templates.
32
32
  def to_liquid
33
33
  {
34
- "language_statistics" => language_statistics,
34
+ 'language_statistics' => language_statistics
35
35
  }
36
36
  end
37
37
 
38
38
  protected
39
39
 
40
40
  def load_concept(concept_file_path)
41
- Jekyll.logger.debug("Geolexica:",
42
- "reading concept from file #{concept_file_path}")
43
- concept_hash = read_concept_file(concept_file_path)
41
+ Jekyll.logger.debug('Geolexica:',
42
+ "reading concept from file #{concept_file_path}")
43
+
44
+ concept_hash = if glossary_format == 'paneron'
45
+ read_paneron_concept_file(concept_file_path)
46
+ else
47
+ read_concept_file(concept_file_path)
48
+ end
49
+
44
50
  preprocess_concept_hash(concept_hash)
45
51
  store Concept.new(concept_hash)
46
- rescue
47
- Jekyll.logger.error("Geolexica:",
48
- "failed to read concept from file #{concept_file_path}")
52
+ rescue StandardError
53
+ Jekyll.logger.error('Geolexica:',
54
+ "failed to read concept from file #{concept_file_path}")
49
55
  raise
50
56
  end
51
57
 
@@ -54,15 +60,36 @@ module Jekyll
54
60
  YAML.safe_load(File.read(path), permitted_classes: [Time])
55
61
  end
56
62
 
57
- # Does nothing, but some sites may replace this method.
58
- def preprocess_concept_hash(concept_hash)
63
+ def read_paneron_concept_file(path)
64
+ safe_load_options = { permitted_classes: [Date, Time] }
65
+ concept = YAML.safe_load(File.read(path), **safe_load_options)
66
+ concept['termid'] = concept['data']['identifier']
67
+
68
+ concept['data']['localizedConcepts'].each do |lang, local_concept_id|
69
+ localized_concept_path = File.join(localized_concepts_path, "#{local_concept_id}.yaml")
70
+ concept[lang] = YAML.safe_load(File.read(localized_concept_path), **safe_load_options)['data']
71
+
72
+ next unless concept[lang]
73
+
74
+ concept['term'] = concept[lang]['terms'].first['designation'] if lang == 'eng'
75
+
76
+ if concept[lang]['status'] && !concept[lang]['status'].empty? &&
77
+ (concept[lang]['entry_status'].nil? || concept[lang]['entry_status'].empty?)
78
+ concept['entry_status'] = concept[lang]['status']
79
+ end
80
+ end
81
+
82
+ concept
59
83
  end
60
84
 
85
+ # Does nothing, but some sites may replace this method.
86
+ def preprocess_concept_hash(concept_hash); end
87
+
61
88
  def calculate_language_statistics
62
- unsorted = each_value.lazy.
63
- flat_map{ |concept| term_languages & concept.data.keys }.
64
- group_by(&:itself).
65
- transform_values(&:count)
89
+ unsorted = each_value.lazy
90
+ .flat_map { |concept| term_languages & concept.data.keys }
91
+ .group_by(&:itself)
92
+ .transform_values(&:count)
66
93
 
67
94
  # This is not crucial, but gives nicer output, and ensures that
68
95
  # all +term_languages+ are present.
@@ -72,7 +99,7 @@ module Jekyll
72
99
  class Concept
73
100
  attr_reader :data
74
101
 
75
- # TODO Maybe some kind of Struct instead of Hash.
102
+ # TODO: Maybe some kind of Struct instead of Hash.
76
103
  attr_reader :pages
77
104
 
78
105
  def initialize(data)
@@ -81,7 +108,7 @@ module Jekyll
81
108
  end
82
109
 
83
110
  def termid
84
- data["termid"]
111
+ data['termid']
85
112
  end
86
113
 
87
114
  class LiquidCompatibleHash < Hash
@@ -3,6 +3,6 @@
3
3
 
4
4
  module Jekyll
5
5
  module Geolexica
6
- VERSION = "1.8.5".freeze
6
+ VERSION = "1.8.7".freeze
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-geolexica
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.5
4
+ version: 1.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-07 00:00:00.000000000 Z
11
+ date: 2023-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll