tc211-termbase 0.1.0 → 0.1.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: 595681dcffbabcec368f07c06712468fb8d124e4183355bed7d610ed9aac6caf
4
- data.tar.gz: '017583476a0a5743adedf8cefa49e2b657eb7e6686133b8be5c95d72fce02dc2'
3
+ metadata.gz: 334d85a474eb94b302357c87554a846b3fe012d4c98ee5c0121aa4bf22941d21
4
+ data.tar.gz: d6b10206e2cf51a3d47bbdd2354931c90249557812a24ac7baf117f0f0e0c28b
5
5
  SHA512:
6
- metadata.gz: 24ea15ba4f0c8bad6b963d0765f793ff2578dd2c1373e75adcbafacc4e9cafe1e35fdbadbc61a2d2f7d06dc1ec531c759615fc50edc93b66e3383a1ffe14b56d
7
- data.tar.gz: b7eb57174f742c5afe931232c61415def36d62218deba71fce24d39596d08ddf08c9835b71c9caf6d290c66b06290c0f37cb1d44b6abf178aefa06b7c2564ff4
6
+ metadata.gz: 7e7c5ed2adcac0d139fb2742471962d988ba66c7cb96ddb207fdfc29f4f5ea966a42c784c2f2714154fcd05df7c9785ef19cb44d9c399f0cdd8348c6077aa640
7
+ data.tar.gz: a5221df6f00e231d31d8fbe66b3faa76dcbc6caee4995b62a43e908ec7100fa74ac85af29c7f45fa00fd0c9b3106c1af48684ab4c99566f433467bad25306c24
data/Gemfile.lock CHANGED
@@ -1,23 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tc211-termbase (0.1.0)
4
+ tc211-termbase (0.1.1)
5
5
  creek
6
6
  iso-639
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.5.2)
11
+ addressable (2.6.0)
12
12
  public_suffix (>= 2.0.2, < 4.0)
13
- creek (2.4.1)
14
- http (~> 3.0)
13
+ creek (2.4.4)
14
+ http (~> 4.0)
15
15
  nokogiri (>= 1.7.0)
16
16
  rubyzip (>= 1.0.0)
17
17
  diff-lcs (1.3)
18
18
  domain_name (0.5.20180417)
19
19
  unf (>= 0.0.5, < 1.0.0)
20
- http (3.3.0)
20
+ http (4.1.1)
21
21
  addressable (~> 2.3)
22
22
  http-cookie (~> 1.0)
23
23
  http-form_data (~> 2.0)
@@ -27,10 +27,10 @@ GEM
27
27
  http-form_data (2.1.1)
28
28
  http_parser.rb (0.6.0)
29
29
  iso-639 (0.2.8)
30
- mini_portile2 (2.3.0)
31
- nokogiri (1.8.5)
32
- mini_portile2 (~> 2.3.0)
33
- public_suffix (3.0.3)
30
+ mini_portile2 (2.4.0)
31
+ nokogiri (1.10.3)
32
+ mini_portile2 (~> 2.4.0)
33
+ public_suffix (3.1.0)
34
34
  rake (10.5.0)
35
35
  rspec (3.8.0)
36
36
  rspec-core (~> 3.8.0)
@@ -38,17 +38,17 @@ GEM
38
38
  rspec-mocks (~> 3.8.0)
39
39
  rspec-core (3.8.0)
40
40
  rspec-support (~> 3.8.0)
41
- rspec-expectations (3.8.2)
41
+ rspec-expectations (3.8.3)
42
42
  diff-lcs (>= 1.2.0, < 2.0)
43
43
  rspec-support (~> 3.8.0)
44
44
  rspec-mocks (3.8.0)
45
45
  diff-lcs (>= 1.2.0, < 2.0)
46
46
  rspec-support (~> 3.8.0)
47
47
  rspec-support (3.8.0)
48
- rubyzip (1.2.2)
48
+ rubyzip (1.2.3)
49
49
  unf (0.1.4)
50
50
  unf_ext
51
- unf_ext (0.0.7.5)
51
+ unf_ext (0.0.7.6)
52
52
 
53
53
  PLATFORMS
54
54
  ruby
@@ -60,4 +60,4 @@ DEPENDENCIES
60
60
  tc211-termbase!
61
61
 
62
62
  BUNDLED WITH
63
- 1.17.1
63
+ 1.17.3
data/README.adoc CHANGED
@@ -1,37 +1,65 @@
1
- = Tc211::Termbase
1
+ = ISO/TC 211 Termbase programs
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/tc211/termbase`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ This gem is used for the creation and deployment of the ISO/TC 211 Termbase
4
+ located at https://terms.isotc211.com.
4
5
 
5
- == Installation
6
+ The repository for the site is located at:
6
7
 
7
- Add this line to your application's Gemfile:
8
+ * https://github.com/riboseinc/terms.isotc211.com
8
9
 
9
- ```ruby
10
+ == Install
11
+
12
+ Add this line to your Gemfile:
13
+
14
+ [source,ruby]
15
+ ----
10
16
  gem 'tc211-termbase'
11
- ```
17
+ ----
12
18
 
13
19
  And then execute:
14
20
 
15
- $ bundle
21
+ [source,sh]
22
+ ----
23
+ $ bundle
24
+ ----
16
25
 
17
26
  Or install it yourself as:
18
27
 
19
- $ gem install tc211-termbase
28
+ [source,sh]
29
+ ----
30
+ $ gem install tc211-termbase
31
+ ----
32
+
20
33
 
21
34
  == Usage
22
35
 
23
- TODO: Write usage instructions here
36
+ The gem comes with the following executables:
37
+
38
+ * `tc211-termbase-xlsx2yaml`: used to extract terms from the official
39
+ ISO/TC 211 terminology workbook, into ConceptYAML and TermYAML files.
40
+
41
+
42
+ === Using `tc211-termbase-xlsx2yaml`
43
+
44
+ Run the following command:
45
+
46
+ [source,sh]
47
+ ----
48
+ $ tc211-termbase-xlsx2yaml [termbase.xlsx]
49
+ ----
24
50
 
25
- == Development
51
+ Where,
26
52
 
27
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
53
+ * the ConceptCollection YAML will be created at `[termbase.yaml]` at
54
+ the current working directory;
28
55
 
29
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
56
+ * ConceptYAML files for each concept (each concept identified by a unique "`Term-ID`")
57
+ are created under the `concepts/` directory (based on the current working directory).
58
+ i.e. `concepts/concept-338.yaml`.
30
59
 
31
- == Contributing
32
60
 
33
- Bug reports and pull requests are welcome on GitHub at https://github.com/riboseinc/tc211-termbase. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
61
+ == Credits
34
62
 
35
- == Code of Conduct
63
+ This program is created and maintained by Ribose (the ISO/TC 211 Registration Authority)
64
+ in conjunction with the ISO/TC 211 Terminology Management Group (TMG).
36
65
 
37
- Everyone interacting in the Tc211::Termbase project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/riboseinc/tc211-termbase/blob/master/CODE_OF_CONDUCT.md).
@@ -3,6 +3,7 @@ module Tc211::Termbase
3
3
  class Concept < Hash
4
4
  attr_accessor :id
5
5
  attr_accessor :terms
6
+ DEFAULT_LANGUAGE = "eng"
6
7
 
7
8
  def initialize(options={})
8
9
  terms = options.delete(:terms) || []
@@ -19,8 +20,22 @@ class Concept < Hash
19
20
  self[term.language_code] = term
20
21
  end
21
22
 
23
+ def default_term
24
+ if self[DEFAULT_LANGUAGE]
25
+ self[DEFAULT_LANGUAGE]
26
+ else
27
+ puts "[tc211-termbase] term (lang: #{keys.first}, ID: #{id}) is missing a corresponding English term, probably needs updating."
28
+ self[keys.first]
29
+ end
30
+ end
31
+
22
32
  def to_hash
23
- self.inject({}) do |acc, (lang, term)|
33
+ default_hash = {
34
+ "term" => default_term.term,
35
+ "termid" => id
36
+ }
37
+
38
+ self.inject(default_hash) do |acc, (lang, term)|
24
39
  acc.merge!(lang => term.to_hash)
25
40
  end
26
41
  end
@@ -33,9 +33,9 @@ class MetadataSection < SheetSection
33
33
  end
34
34
 
35
35
  def self.match_header(row)
36
- puts "row #{row}"
36
+ # puts "row #{row}"
37
37
  row.inject(true) do |acc, (key, value)|
38
- puts "#{key}, #{value}"
38
+ # puts"#{key}, #{value}"
39
39
  if GLOSSARY_HEADER_ROW_MATCH[key]
40
40
  acc && GLOSSARY_HEADER_ROW_MATCH[key].include?(value)
41
41
  else
@@ -53,7 +53,7 @@ class MetadataSection < SheetSection
53
53
  attribute = {}
54
54
 
55
55
  structure.each_pair do |key, value|
56
- puts "#{key}, #{value}, #{row[key]}"
56
+ # puts"#{key}, #{value}, #{row[key]}"
57
57
  attribute_key = value
58
58
  attribute_value = row[key]
59
59
  next if attribute_value.nil?
@@ -32,9 +32,10 @@ class Term
32
32
  @examples = []
33
33
  @notes = []
34
34
 
35
- puts "options #{options.inspect}"
35
+ # puts "options #{options.inspect}"
36
36
 
37
37
  options.each_pair do |k, v|
38
+ v = v.strip if v.is_a?(String)
38
39
  next unless v
39
40
  case k
40
41
  when /^example/
@@ -42,7 +43,7 @@ class Term
42
43
  when /^note/
43
44
  @notes << v
44
45
  else
45
- puts "Key #{k}"
46
+ # puts"Key #{k}"
46
47
  key = k.gsub("-", "_")
47
48
  self.send("#{key}=", v)
48
49
  end
@@ -54,7 +55,7 @@ class Term
54
55
  ATTRIBS.inject({}) do |acc, attrib|
55
56
  value = self.send(attrib)
56
57
  unless value.nil?
57
- acc.merge(attrib => value)
58
+ acc.merge(attrib.to_s => value)
58
59
  else
59
60
  acc
60
61
  end
@@ -64,8 +65,15 @@ class Term
64
65
  # entry-status
65
66
  ## Must be one of notValid valid superseded retired
66
67
  def entry_status=(value)
67
- unless %w(notValid valid superseded retired).include?(value)
68
- value = "notValid"
68
+ case value
69
+ when "有效的", "käytössä", "действующий", "válido"
70
+ value = "valid"
71
+ when "korvattu", "reemplazado"
72
+ value = "superseded"
73
+ when "информация отсутствует" # "information absent"!?
74
+ value = "retired"
75
+ when %w(notValid valid superseded retired)
76
+ # do nothing
69
77
  end
70
78
  @entry_status = value
71
79
  end
@@ -73,8 +81,15 @@ class Term
73
81
  # classification
74
82
  ## Must be one of the following: preferred admitted deprecated
75
83
  def classification=(value)
76
- unless %w(preferred admitted deprecated).include?(value)
84
+ case value
85
+ when ""
86
+ value = "admitted"
87
+ when "认可的", "допустимый", "admitido"
88
+ value = "admitted"
89
+ when "首选的", "suositettava", "suositeltava", "рекомендуемый", "preferente"
77
90
  value = "preferred"
91
+ when %w(preferred admitted deprecated)
92
+ # do nothing
78
93
  end
79
94
  @classification = value
80
95
  end
@@ -58,14 +58,13 @@ class TerminologySheet
58
58
  @sections = []
59
59
  sections_raw.each_with_index do |x,i|
60
60
 
61
- puts "--------- Section #{i} ------"
62
61
  section = if MetadataSection.match_header(x[0])
63
- puts "------ is a MetadataSection"
64
- puts "rows: #{x.inspect}"
62
+ puts "--------- Section #{i} is a MetadataSection ---------"
63
+ # puts "rows: #{x.inspect}"
65
64
  MetadataSection.new(x)
66
65
  else
67
- puts "------ is a TermsSection"
68
- puts "rows: #{x.inspect}"
66
+ puts "--------- Section #{i} is a TermsSection ---------"
67
+ # puts "rows: #{x.inspect}"
69
68
  TermsSection.new(x, {language_code: language_code})
70
69
  end
71
70
 
@@ -18,11 +18,14 @@ class TermsSection < SheetSection
18
18
  TERM_BODY_COLUMN_MAP = {
19
19
  "Term_ID" => "id",
20
20
  "Term" => "term",
21
- "Term [OPERATING LANGUAGE]" => "term",
22
- "Term_Abbreviation" => "abbrev",
21
+ "Term .OPERATING LANGUAGE." => "term",
22
+ # In the English sheet, column is named "Term Abbreviation"
23
+ "Term Abbreviation" => "abbrev",
24
+ # In other sheets, column named "Term_Abbreviation"
25
+ "Term_Abbreviation .OPERATING LANGUAGE." => "abbrev",
23
26
  "Country code" => "country-code",
24
27
  "Definition" => "definition",
25
- "Term [OPERATING LANGUAGE - ALTERNATIVE CHARACTER SET]" => "alt",
28
+ "Term .OPERATING LANGUAGE - ALTERNATIVE CHARACTER SET." => "alt",
26
29
  "Term in English" => nil,
27
30
  "Entry Status" => "entry-status",
28
31
  ## Must be one of 'notValid' 'valid' 'superseded' 'retired'
@@ -84,7 +87,7 @@ class TermsSection < SheetSection
84
87
  cleaned_value = value.gsub(/\s+/, ' ')
85
88
 
86
89
  matches = TERM_BODY_COLUMN_MAP.map do |key, value|
87
- puts "key #{key}, value #{value}"
90
+ # puts "key #{key}, value #{value}"
88
91
  if cleaned_value[Regexp.new("^#{key}")]
89
92
  [key, value]
90
93
  end
@@ -121,7 +124,7 @@ class TermsSection < SheetSection
121
124
  attributes = {}
122
125
 
123
126
  structure.each_pair do |key, value|
124
- puts "#{key}, #{value}, #{row[key]}"
127
+ # puts "#{key}, #{value}, #{row[key]}"
125
128
  attribute_key = value
126
129
  attribute_value = row[key]
127
130
  next if attribute_value.nil?
@@ -1,5 +1,5 @@
1
1
  module Tc211
2
2
  module Termbase
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  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.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-23 00:00:00.000000000 Z
11
+ date: 2019-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: iso-639
@@ -129,8 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  requirements: []
132
- rubyforge_project:
133
- rubygems_version: 2.7.7
132
+ rubygems_version: 3.0.3
134
133
  signing_key:
135
134
  specification_version: 4
136
135
  summary: Build scripts for the ISO/TC 211 Termbase