iev 0.3.9 → 0.4.0

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.
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-04-27 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: creek
@@ -38,33 +39,33 @@ dependencies:
38
39
  - !ruby/object:Gem::Version
39
40
  version: 2.3.0
40
41
  - !ruby/object:Gem::Dependency
41
- name: mechanize
42
+ name: ferrum
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
45
  - - "~>"
45
46
  - !ruby/object:Gem::Version
46
- version: '2.10'
47
+ version: '0.15'
47
48
  type: :runtime
48
49
  prerelease: false
49
50
  version_requirements: !ruby/object:Gem::Requirement
50
51
  requirements:
51
52
  - - "~>"
52
53
  - !ruby/object:Gem::Version
53
- version: '2.10'
54
+ version: '0.15'
54
55
  - !ruby/object:Gem::Dependency
55
56
  name: nokogiri
56
57
  requirement: !ruby/object:Gem::Requirement
57
58
  requirements:
58
59
  - - "~>"
59
60
  - !ruby/object:Gem::Version
60
- version: '1.17'
61
+ version: '1.19'
61
62
  type: :runtime
62
63
  prerelease: false
63
64
  version_requirements: !ruby/object:Gem::Requirement
64
65
  requirements:
65
66
  - - "~>"
66
67
  - !ruby/object:Gem::Version
67
- version: '1.17'
68
+ version: '1.19'
68
69
  - !ruby/object:Gem::Dependency
69
70
  name: plurimath
70
71
  requirement: !ruby/object:Gem::Requirement
@@ -79,6 +80,20 @@ dependencies:
79
80
  - - ">="
80
81
  - !ruby/object:Gem::Version
81
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: lutaml-model
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.8.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.8.0
82
97
  - !ruby/object:Gem::Dependency
83
98
  name: relaton
84
99
  requirement: !ruby/object:Gem::Requirement
@@ -113,14 +128,14 @@ dependencies:
113
128
  requirements:
114
129
  - - "~>"
115
130
  - !ruby/object:Gem::Version
116
- version: 1.7.0
131
+ version: '1.7'
117
132
  type: :runtime
118
133
  prerelease: false
119
134
  version_requirements: !ruby/object:Gem::Requirement
120
135
  requirements:
121
136
  - - "~>"
122
137
  - !ruby/object:Gem::Version
123
- version: 1.7.0
138
+ version: '1.7'
124
139
  - !ruby/object:Gem::Dependency
125
140
  name: thor
126
141
  requirement: !ruby/object:Gem::Requirement
@@ -163,6 +178,7 @@ files:
163
178
  - ".rspec"
164
179
  - ".rubocop.yml"
165
180
  - ".rubocop_todo.yml"
181
+ - CLAUDE.md
166
182
  - Gemfile
167
183
  - LICENSE.txt
168
184
  - README.adoc
@@ -176,16 +192,19 @@ files:
176
192
  - lib/iev/cli/command.rb
177
193
  - lib/iev/cli/command_helper.rb
178
194
  - lib/iev/cli/ui.rb
195
+ - lib/iev/config.rb
179
196
  - lib/iev/converter.rb
180
197
  - lib/iev/converter/mathml_to_asciimath.rb
181
198
  - lib/iev/data_conversions.rb
182
- - lib/iev/db.rb
183
- - lib/iev/db_cache.rb
199
+ - lib/iev/data_source.rb
184
200
  - lib/iev/db_writer.rb
201
+ - lib/iev/exporter.rb
185
202
  - lib/iev/iso_639_2.yaml
186
203
  - lib/iev/iso_639_code.rb
187
204
  - lib/iev/profiler.rb
188
205
  - lib/iev/relaton_db.rb
206
+ - lib/iev/scraper.rb
207
+ - lib/iev/scraper/page_parser.rb
189
208
  - lib/iev/source_parser.rb
190
209
  - lib/iev/supersession_parser.rb
191
210
  - lib/iev/term_attrs_parser.rb
@@ -196,6 +215,7 @@ homepage: https://github.com/glossarist/iev
196
215
  licenses:
197
216
  - BSD-2-Clause
198
217
  metadata: {}
218
+ post_install_message:
199
219
  rdoc_options: []
200
220
  require_paths:
201
221
  - lib
@@ -203,14 +223,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
223
  requirements:
204
224
  - - ">="
205
225
  - !ruby/object:Gem::Version
206
- version: 3.1.0
226
+ version: 3.2.0
207
227
  required_rubygems_version: !ruby/object:Gem::Requirement
208
228
  requirements:
209
229
  - - ">="
210
230
  - !ruby/object:Gem::Version
211
231
  version: '0'
212
232
  requirements: []
213
- rubygems_version: 4.0.1
233
+ rubygems_version: 3.5.22
234
+ signing_key:
214
235
  specification_version: 4
215
236
  summary: Glossarist toolkit for working with IEV terms from Electropedia
216
237
  test_files: []
data/lib/iev/db.rb DELETED
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # require 'pstore'
4
- require_relative "db_cache"
5
-
6
- module Iev
7
- # Cache class.
8
- class Db
9
- # @param global_cache [String] filename of global DB
10
- # @param local_cache [String] filename of local DB
11
- def initialize(global_cache, local_cache)
12
- @db = open_cache_biblio(global_cache)
13
- @local_db = open_cache_biblio(local_cache, global: false)
14
- @db_name = global_cache
15
- @local_db_name = local_cache
16
- end
17
-
18
- # @param [String] code for example "103-01-02"
19
- # @param [String] lang language code, for examle "en"
20
- # @return [String] Relaton XML serialisation of reference
21
- def fetch(code, lang)
22
- check_bibliocache(code, lang)
23
- end
24
-
25
- private
26
-
27
- def check_bibliocache(code, lang)
28
- id = "#{code}/#{lang}"
29
- return bib_retval(new_bib_entry(code, lang)) if @db.nil?
30
-
31
- # @db.delete(id) unless valid_bib_entry?(@db[id])
32
- @db[id] ||= new_bib_entry(code, lang)
33
- if @local_db.nil? then bib_retval(@db[id])
34
- else
35
- @local_db[id] ||= @db[id]
36
- bib_retval(@local_db[id])
37
- end
38
- end
39
-
40
- def bib_retval(entry)
41
- # entry['term'] == 'not_found' ? '' : entry['term']
42
- # entry["term"]
43
- /^not_found/.match?(entry) ? nil : entry
44
- end
45
-
46
- # @return [Hash]
47
- def new_bib_entry(code, lang)
48
- Iev.get(code, lang)
49
- end
50
-
51
- # @param dir [String] DB dir
52
- # @param global [TrueClass, FalseClass]
53
- # @return [Iev::DbCache, nil]
54
- def open_cache_biblio(dir, global: true)
55
- return nil if dir.nil?
56
-
57
- db = DbCache.new dir
58
- if global
59
- unless db.check_version?
60
- FileUtils.rm_rf(Dir.glob(File.join(dir, "*")), secure: true)
61
- warn "Global cache version is obsolete and cleared."
62
- end
63
- db.set_version
64
- elsif db.check_version? then db
65
- else
66
- warn "Local cache version is obsolete."
67
- nil
68
- end
69
- end
70
-
71
- # def check_cache_version(cache_db)
72
- # cache_db.transaction { cache_db[:version] == VERSION }
73
- # end
74
-
75
- # def save_cache_version(cache_db)
76
- # unless File.exist? cache_db.path
77
- # cache_db.transaction { cache_db[:version] = VERSION }
78
- # end
79
- # cache_db
80
- # end
81
- end
82
- end
data/lib/iev/db_cache.rb DELETED
@@ -1,124 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "fileutils"
4
-
5
- module Iev
6
- class DbCache
7
- # @return [String]
8
- attr_reader :dir
9
-
10
- # @param dir [String] DB directory
11
- def initialize(dir)
12
- @dir = dir
13
- FileUtils.mkdir_p @dir
14
- file_version = "#{@dir}/version"
15
- File.exist? file_version or
16
- File.write file_version, VERSION, encoding: "utf-8"
17
- end
18
-
19
- # Save item
20
- # @param key [String]
21
- # @param value [String] Bibitem xml serialization
22
- def []=(key, value)
23
- return if value.nil?
24
-
25
- prefix_dir = "#{@dir}/#{prefix(key)}"
26
- FileUtils.mkdir_p prefix_dir
27
- File.write filename(key), value, encoding: "utf-8"
28
- end
29
-
30
- # Read item
31
- # @param key [String]
32
- # @return [String]
33
- def [](key)
34
- file = filename key
35
- return unless File.exist? file
36
-
37
- File.read(file, encoding: "utf-8")
38
- end
39
-
40
- # Return fetched date
41
- # @param key [String]
42
- # @return [String]
43
- def fetched(key)
44
- value = self[key]
45
- return unless value
46
-
47
- # if value =~ /^not_found/
48
- # value.match(/\d{4}-\d{2}-\d{2}/).to_s
49
- # else
50
- doc = Nokogiri::XML value
51
- doc.at("/bibitem/fetched")&.text
52
- # end
53
- end
54
-
55
- # Returns all items
56
- # @return [Array<Hash>]
57
- def all
58
- Dir.glob("#{@dir}/**/*.xml").sort.map do |f|
59
- File.read(f, encoding: "utf-8")
60
- end
61
- end
62
-
63
- # Delete item
64
- # @param key [String]
65
- def delete(key)
66
- file = filename key
67
- File.delete file if File.exist? file
68
- end
69
-
70
- # Check if version of the DB match to the gem version.
71
- # @return [TrueClass, FalseClass]
72
- def check_version?
73
- version_file = "#{@dir}/version"
74
- return false unless File.exist?(version_file)
75
-
76
- v = File.read version_file, encoding: "utf-8"
77
- v == VERSION
78
- rescue StandardError
79
- false
80
- end
81
-
82
- # Set version of the DB to the gem version.
83
- # @return [Iev::DbCache]
84
- def set_version
85
- File.write "#{@dir}/version", VERSION, encoding: "utf-8"
86
- self
87
- end
88
-
89
- # if cached reference is undated, expire it after 60 days
90
- # @param key [String]
91
- # @param year [String]
92
- # def valid_entry?(key)
93
- # datestr = fetched key
94
- # return false unless datestr
95
-
96
- # date = Date.parse datestr
97
- # year || Date.today - date < 60
98
- # end
99
-
100
- private
101
-
102
- # Return item's file name
103
- # @param key [String]
104
- # @return [String]
105
- def filename(key)
106
- # prefcode = key.downcase.match /^(?<prefix>[^\(]+)\((?<code>[^\)]+)/
107
- # if prefcode
108
- # "#{@dir}/#{prefcode[:prefix]}/#{prefcode[:code].gsub(/[-:\s\/]/, '_')}.xml"
109
- # else
110
- "#{@dir}/#{key.gsub(%r{[-:\s/]}, '_')}.xml"
111
- # end
112
- end
113
-
114
- # Return item's subdir
115
- # @param key [String]
116
- # @return [String]
117
- def prefix(key)
118
- # @registry.processors.detect do |_n, p|
119
- # /^#{p.prefix}/.match(key) || processor.defaultprefix.match(key)
120
- # end[1].prefix.downcase
121
- key.downcase.match(/^[^(]+(?=\()/).to_s
122
- end
123
- end
124
- end