tc211-termbase 0.2.1 → 0.2.3
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 +4 -4
- data/.github/workflows/rake.yml +13 -0
- data/.github/workflows/release.yml +23 -0
- data/.gitignore +3 -1
- data/exe/tc211-termbase-xlsx2yaml +2 -5
- data/lib/tc211/termbase/concept.rb +88 -39
- data/lib/tc211/termbase/concept_collection.rb +29 -21
- data/lib/tc211/termbase/information_sheet.rb +11 -15
- data/lib/tc211/termbase/metadata_section.rb +108 -112
- data/lib/tc211/termbase/sheet_section.rb +18 -19
- data/lib/tc211/termbase/term.rb +341 -230
- data/lib/tc211/termbase/term_workbook.rb +35 -36
- data/lib/tc211/termbase/terminology_sheet.rb +84 -74
- data/lib/tc211/termbase/terms_section.rb +9 -8
- data/lib/tc211/termbase/version.rb +1 -1
- data/lib/tc211/termbase.rb +1 -0
- data/tc211-termbase.gemspec +6 -6
- metadata +20 -39
- data/Gemfile.lock +0 -122
@@ -2,107 +2,117 @@ require_relative "metadata_section"
|
|
2
2
|
require_relative "terms_section"
|
3
3
|
|
4
4
|
module Tc211::Termbase
|
5
|
+
class TerminologySheet
|
6
|
+
attr_accessor :sheet, :language_code
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
+
def initialize(sheet)
|
9
|
+
@sheet = sheet
|
10
|
+
self
|
11
|
+
end
|
8
12
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
+
def language
|
14
|
+
@sheet.name
|
15
|
+
end
|
13
16
|
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
+
def language_code
|
18
|
+
return @language_code unless @language_code.nil?
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
raise StandardError.new(
|
21
|
+
"Language code not parsed yet for sheet: #{language}",
|
22
|
+
)
|
23
|
+
end
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
25
|
+
# Read language_code from sheet
|
26
|
+
def set_language_code(code)
|
27
|
+
# puts "language_code is #{code}"
|
28
|
+
return @language_code unless @language_code.nil?
|
29
|
+
|
30
|
+
@language_code = case code
|
31
|
+
when "dut/nld"
|
32
|
+
"dut"
|
33
|
+
when "工作语言代码"
|
34
|
+
"chn"
|
35
|
+
when "pl"
|
36
|
+
"pol"
|
37
|
+
else
|
38
|
+
code
|
39
|
+
end
|
35
40
|
end
|
36
|
-
end
|
37
41
|
|
38
|
-
|
39
|
-
|
40
|
-
|
42
|
+
def sections_raw
|
43
|
+
# Sections either start with "A" => "Item",
|
44
|
+
# or they have empty lines between
|
45
|
+
raw_sections = @sheet.simple_rows.to_a
|
41
46
|
|
42
|
-
|
43
|
-
section.empty?
|
44
|
-
end
|
47
|
+
raw_sections.reject!(&:empty?)
|
45
48
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
49
|
+
raw_sections.slice_before do |row|
|
50
|
+
row["A"].to_s == "Item" || row["A"].to_s.match(/^ISO 19135 Field/)
|
51
|
+
end.to_a
|
52
|
+
end
|
50
53
|
|
51
|
-
|
52
|
-
|
54
|
+
def terms_section
|
55
|
+
sections
|
53
56
|
|
54
|
-
|
55
|
-
|
57
|
+
sections.detect do |section|
|
58
|
+
section.is_a?(TermsSection)
|
59
|
+
end
|
56
60
|
end
|
57
|
-
end
|
58
61
|
|
59
|
-
|
60
|
-
|
62
|
+
def metadata_section
|
63
|
+
sections
|
61
64
|
|
62
|
-
|
63
|
-
|
65
|
+
sections.detect do |section|
|
66
|
+
section.is_a?(MetadataSection)
|
67
|
+
end
|
64
68
|
end
|
65
|
-
end
|
66
69
|
|
67
|
-
|
68
|
-
|
70
|
+
def sections
|
71
|
+
return @sections if @sections
|
72
|
+
|
73
|
+
@sections = []
|
74
|
+
sections_raw.each_with_index do |x,i|
|
75
|
+
section = get_section(x)
|
76
|
+
|
77
|
+
unless section
|
78
|
+
raise SheetSection::UnknownHeaderError.new(
|
79
|
+
"Unable to find header row match for section #{i} header," +
|
80
|
+
" contents: #{x.inspect}",
|
81
|
+
)
|
82
|
+
end
|
83
|
+
|
84
|
+
# MetadataSections always go first, so the language_code must already
|
85
|
+
# be set at the time of parsing the TermsSection
|
86
|
+
if section.is_a?(MetadataSection)
|
87
|
+
code = section.fields["operating-language-code"]
|
88
|
+
# puts "lang code is detected as #{code}, #{@language_code}"
|
89
|
+
unless code.nil?
|
90
|
+
# puts "setting lang code is detected as #{code}"
|
91
|
+
set_language_code(code)
|
92
|
+
end
|
93
|
+
end
|
69
94
|
|
70
|
-
|
71
|
-
sections_raw.each_with_index do |x,i|
|
72
|
-
# puts "rows: #{x.inspect}"
|
95
|
+
puts "--------- Section #{i} is a #{section.class.name} ---------"
|
73
96
|
|
97
|
+
@sections << section
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def get_section(x)
|
74
102
|
section = nil
|
103
|
+
|
75
104
|
%w(MetadataSection TermsSection).each do |t|
|
76
105
|
break if section
|
106
|
+
|
77
107
|
begin
|
78
108
|
# puts "rows: #{x.inspect}"
|
79
|
-
section = ::Tc211::Termbase.const_get(t)
|
109
|
+
section = ::Tc211::Termbase.const_get(t)
|
110
|
+
.new(x, { parent_sheet: self })
|
80
111
|
rescue SheetSection::RowHeaderMatchError
|
81
112
|
end
|
82
113
|
end
|
83
114
|
|
84
|
-
|
85
|
-
raise SheetSection::UnknownHeaderError.new("Unable to find header row match for section #{i} header, contents: #{x.inspect}")
|
86
|
-
end
|
87
|
-
|
88
|
-
# MetadataSections always go first, so the language_code must already
|
89
|
-
# be set at the time of parsing the TermsSection
|
90
|
-
if section.is_a?(MetadataSection)
|
91
|
-
code = section.fields["operating-language-code"]
|
92
|
-
# puts "lang code is detected as #{code}, #{@language_code}"
|
93
|
-
unless code.nil?
|
94
|
-
# puts "setting lang code is detected as #{code}"
|
95
|
-
set_language_code(code)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
puts "--------- Section #{i} is a #{section.class.name} ---------"
|
100
|
-
|
101
|
-
@sections << section
|
115
|
+
section
|
102
116
|
end
|
103
|
-
|
104
117
|
end
|
105
|
-
|
106
118
|
end
|
107
|
-
|
108
|
-
end
|
@@ -4,10 +4,8 @@ require_relative "relaton_db"
|
|
4
4
|
require "relaton_bib"
|
5
5
|
|
6
6
|
module Tc211::Termbase
|
7
|
-
|
8
7
|
class TermsSection < SheetSection
|
9
|
-
attr_accessor :structure
|
10
|
-
attr_accessor :header_row
|
8
|
+
attr_accessor :structure, :header_row
|
11
9
|
|
12
10
|
TERM_HEADER_ROW_MATCH = {
|
13
11
|
"A" => ["ISO 19135 Field\nRE_RegisterItem.itemIdentifier"],
|
@@ -15,7 +13,7 @@ module Tc211::Termbase
|
|
15
13
|
"C" => ["ISO 19135 Field\nRE_RegisterItem.\nalternativeExpression"],
|
16
14
|
"D" => ["Country_Code"],
|
17
15
|
# ... We don't need to match all the cells
|
18
|
-
}
|
16
|
+
}.freeze
|
19
17
|
|
20
18
|
TERM_BODY_COLUMN_MAP = {
|
21
19
|
"Term_ID" => "id",
|
@@ -75,9 +73,13 @@ module Tc211::Termbase
|
|
75
73
|
"Note_7" => "note-7",
|
76
74
|
"Example_8" => "example-8",
|
77
75
|
"Note_8" => "note-8",
|
78
|
-
"Glossary Release" => "release"
|
79
|
-
## Must be one of the following codes
|
80
|
-
|
76
|
+
"Glossary Release" => "release",
|
77
|
+
## Must be one of the following codes
|
78
|
+
# 'release1' = 1
|
79
|
+
# 'release1_retired' = -1
|
80
|
+
# 'release2' = 2
|
81
|
+
# 'release2_retired' = -2 etc
|
82
|
+
}.freeze
|
81
83
|
|
82
84
|
def initialize(rows, options={})
|
83
85
|
super
|
@@ -126,7 +128,6 @@ module Tc211::Termbase
|
|
126
128
|
else
|
127
129
|
acc
|
128
130
|
end
|
129
|
-
|
130
131
|
end
|
131
132
|
end
|
132
133
|
|
data/lib/tc211/termbase.rb
CHANGED
data/tc211-termbase.gemspec
CHANGED
@@ -23,11 +23,11 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
25
|
spec.add_runtime_dependency "creek"
|
26
|
-
spec.add_runtime_dependency "relaton"
|
26
|
+
spec.add_runtime_dependency "relaton"
|
27
|
+
spec.add_runtime_dependency "glossarist", "~> 2.0"
|
28
|
+
|
29
|
+
spec.add_development_dependency "bundler"
|
30
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
31
|
+
spec.add_development_dependency "rspec", "~> 3.12"
|
27
32
|
|
28
|
-
spec.add_development_dependency "bundler", ">= 2.0.1", "< 3"
|
29
|
-
spec.add_development_dependency "debase"
|
30
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
31
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
32
|
-
spec.add_development_dependency "ruby-debug-ide"
|
33
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tc211-termbase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: creek
|
@@ -28,38 +28,32 @@ dependencies:
|
|
28
28
|
name: relaton
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: glossarist
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 2.0.1
|
48
|
-
- - "<"
|
45
|
+
- - "~>"
|
49
46
|
- !ruby/object:Gem::Version
|
50
|
-
version: '
|
51
|
-
type: :
|
47
|
+
version: '2.0'
|
48
|
+
type: :runtime
|
52
49
|
prerelease: false
|
53
50
|
version_requirements: !ruby/object:Gem::Requirement
|
54
51
|
requirements:
|
55
|
-
- - "
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: 2.0.1
|
58
|
-
- - "<"
|
52
|
+
- - "~>"
|
59
53
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
54
|
+
version: '2.0'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
56
|
+
name: bundler
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
59
|
- - ">="
|
@@ -78,42 +72,28 @@ dependencies:
|
|
78
72
|
requirements:
|
79
73
|
- - "~>"
|
80
74
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
75
|
+
version: '13.0'
|
82
76
|
type: :development
|
83
77
|
prerelease: false
|
84
78
|
version_requirements: !ruby/object:Gem::Requirement
|
85
79
|
requirements:
|
86
80
|
- - "~>"
|
87
81
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
82
|
+
version: '13.0'
|
89
83
|
- !ruby/object:Gem::Dependency
|
90
84
|
name: rspec
|
91
85
|
requirement: !ruby/object:Gem::Requirement
|
92
86
|
requirements:
|
93
87
|
- - "~>"
|
94
88
|
- !ruby/object:Gem::Version
|
95
|
-
version: '3.
|
89
|
+
version: '3.12'
|
96
90
|
type: :development
|
97
91
|
prerelease: false
|
98
92
|
version_requirements: !ruby/object:Gem::Requirement
|
99
93
|
requirements:
|
100
94
|
- - "~>"
|
101
95
|
- !ruby/object:Gem::Version
|
102
|
-
version: '3.
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: ruby-debug-ide
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - ">="
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: '0'
|
96
|
+
version: '3.12'
|
117
97
|
description: Build scripts for the ISO/TC 211 Termbase
|
118
98
|
email:
|
119
99
|
- open.source@ribose.com
|
@@ -122,11 +102,12 @@ executables:
|
|
122
102
|
extensions: []
|
123
103
|
extra_rdoc_files: []
|
124
104
|
files:
|
105
|
+
- ".github/workflows/rake.yml"
|
106
|
+
- ".github/workflows/release.yml"
|
125
107
|
- ".gitignore"
|
126
108
|
- ".rspec"
|
127
109
|
- CODE_OF_CONDUCT.md
|
128
110
|
- Gemfile
|
129
|
-
- Gemfile.lock
|
130
111
|
- README.adoc
|
131
112
|
- Rakefile
|
132
113
|
- bin/console
|
@@ -165,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
146
|
- !ruby/object:Gem::Version
|
166
147
|
version: '0'
|
167
148
|
requirements: []
|
168
|
-
rubygems_version: 3.
|
149
|
+
rubygems_version: 3.3.26
|
169
150
|
signing_key:
|
170
151
|
specification_version: 4
|
171
152
|
summary: Build scripts for the ISO/TC 211 Termbase
|
data/Gemfile.lock
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
tc211-termbase (0.1.13)
|
5
|
-
creek
|
6
|
-
relaton (~> 1.0)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
addressable (2.7.0)
|
12
|
-
public_suffix (>= 2.0.2, < 5.0)
|
13
|
-
bibtex-ruby (5.1.4)
|
14
|
-
latex-decode (~> 0.0)
|
15
|
-
cnccs (0.1.5)
|
16
|
-
creek (2.5.2)
|
17
|
-
nokogiri (>= 1.10.0)
|
18
|
-
rubyzip (>= 1.0.0)
|
19
|
-
debase (0.2.4.1)
|
20
|
-
debase-ruby_core_source (>= 0.10.2)
|
21
|
-
debase-ruby_core_source (0.10.9)
|
22
|
-
diff-lcs (1.3)
|
23
|
-
domain_name (0.5.20190701)
|
24
|
-
unf (>= 0.0.5, < 1.0.0)
|
25
|
-
faraday (1.0.1)
|
26
|
-
multipart-post (>= 1.2, < 3)
|
27
|
-
gb-agencies (0.0.6)
|
28
|
-
http-cookie (1.0.3)
|
29
|
-
domain_name (~> 0.5)
|
30
|
-
iso639 (1.3.2)
|
31
|
-
isoics (0.1.8)
|
32
|
-
latex-decode (0.3.1)
|
33
|
-
mini_portile2 (2.4.0)
|
34
|
-
multipart-post (2.1.1)
|
35
|
-
nokogiri (1.10.9)
|
36
|
-
mini_portile2 (~> 2.4.0)
|
37
|
-
public_suffix (4.0.5)
|
38
|
-
rake (10.5.0)
|
39
|
-
relaton (1.0.1)
|
40
|
-
relaton-calconnect (~> 1.0.0)
|
41
|
-
relaton-gb (~> 1.0.0)
|
42
|
-
relaton-iec (~> 1.0.0)
|
43
|
-
relaton-ietf (~> 1.0.0)
|
44
|
-
relaton-iso (~> 1.0.0)
|
45
|
-
relaton-itu (~> 1.0.0)
|
46
|
-
relaton-nist (~> 1.0.0)
|
47
|
-
relaton-ogc (~> 1.0.0)
|
48
|
-
relaton-omg (~> 1.0.0)
|
49
|
-
relaton-un (~> 1.0.0)
|
50
|
-
relaton-w3c (~> 1.0.0)
|
51
|
-
relaton-bib (1.0.2)
|
52
|
-
addressable
|
53
|
-
bibtex-ruby
|
54
|
-
iso639
|
55
|
-
nokogiri
|
56
|
-
relaton-calconnect (1.0.0)
|
57
|
-
faraday
|
58
|
-
relaton-iso-bib (~> 1.0.0)
|
59
|
-
relaton-gb (1.0.0)
|
60
|
-
cnccs (~> 0.1.1)
|
61
|
-
gb-agencies (~> 0.0.1)
|
62
|
-
relaton-iso-bib (~> 1.0.0)
|
63
|
-
relaton-iec (1.0.0)
|
64
|
-
addressable
|
65
|
-
relaton-iso-bib (~> 1.0.0)
|
66
|
-
relaton-ietf (1.0.0)
|
67
|
-
relaton-bib (~> 1.0.0)
|
68
|
-
relaton-iso (1.0.1)
|
69
|
-
relaton-iec (~> 1.0.0)
|
70
|
-
relaton-iso-bib (~> 1.0.0)
|
71
|
-
relaton-iso-bib (1.0.0)
|
72
|
-
isoics (~> 0.1.6)
|
73
|
-
relaton-bib (~> 1.0.0)
|
74
|
-
relaton-itu (1.0.2)
|
75
|
-
relaton-iso-bib (~> 1.0.0)
|
76
|
-
relaton-nist (1.0.0)
|
77
|
-
relaton-bib (~> 1.0.0)
|
78
|
-
rubyzip
|
79
|
-
relaton-ogc (1.0.0)
|
80
|
-
faraday (~> 1.0.0)
|
81
|
-
relaton-iso-bib (~> 1.0.0)
|
82
|
-
relaton-omg (1.0.0)
|
83
|
-
relaton-bib (~> 1.0.0)
|
84
|
-
relaton-un (1.0.0)
|
85
|
-
faraday
|
86
|
-
http-cookie
|
87
|
-
relaton-iso-bib (~> 1.0.0)
|
88
|
-
unf_ext (>= 0.0.7.7)
|
89
|
-
relaton-w3c (1.0.0)
|
90
|
-
relaton-bib (>= 1.0.0)
|
91
|
-
rspec (3.9.0)
|
92
|
-
rspec-core (~> 3.9.0)
|
93
|
-
rspec-expectations (~> 3.9.0)
|
94
|
-
rspec-mocks (~> 3.9.0)
|
95
|
-
rspec-core (3.9.2)
|
96
|
-
rspec-support (~> 3.9.3)
|
97
|
-
rspec-expectations (3.9.2)
|
98
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
99
|
-
rspec-support (~> 3.9.0)
|
100
|
-
rspec-mocks (3.9.1)
|
101
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
102
|
-
rspec-support (~> 3.9.0)
|
103
|
-
rspec-support (3.9.3)
|
104
|
-
ruby-debug-ide (0.7.2)
|
105
|
-
rake (>= 0.8.1)
|
106
|
-
rubyzip (2.3.0)
|
107
|
-
unf (0.1.4)
|
108
|
-
unf_ext
|
109
|
-
unf_ext (0.0.7.7)
|
110
|
-
|
111
|
-
PLATFORMS
|
112
|
-
ruby
|
113
|
-
|
114
|
-
bundler (>= 2.0.1, < 3)
|
115
|
-
debase
|
116
|
-
rake (~> 10.0)
|
117
|
-
rspec (~> 3.0)
|
118
|
-
ruby-debug-ide
|
119
|
-
tc211-termbase!
|
120
|
-
|
121
|
-
BUNDLED WITH
|
122
|
-
2.1.4
|