pubid-iso 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +118 -39
  3. data/lib/pubid/iso/errors.rb +0 -3
  4. data/lib/pubid/iso/harmonized_stage_code.rb +1 -145
  5. data/lib/pubid/iso/identifier/amendment.rb +52 -0
  6. data/lib/pubid/iso/identifier/base.rb +365 -0
  7. data/lib/pubid/iso/identifier/corrigendum.rb +53 -0
  8. data/lib/pubid/iso/identifier/directives.rb +29 -0
  9. data/lib/pubid/iso/identifier/guide.rb +32 -0
  10. data/lib/pubid/iso/identifier/international_standard.rb +45 -0
  11. data/lib/pubid/iso/identifier/international_standardized_profile.rb +30 -0
  12. data/lib/pubid/iso/identifier/international_workshop_agreement.rb +25 -0
  13. data/lib/pubid/iso/identifier/publicly_available_specification.rb +30 -0
  14. data/lib/pubid/iso/identifier/recommendation.rb +19 -0
  15. data/lib/pubid/iso/identifier/supplement.rb +39 -0
  16. data/lib/pubid/iso/identifier/technical_committee.rb +19 -0
  17. data/lib/pubid/iso/identifier/technical_report.rb +30 -0
  18. data/lib/pubid/iso/identifier/technical_specification.rb +30 -0
  19. data/lib/pubid/iso/identifier/technology_trends_assessments.rb +30 -0
  20. data/lib/pubid/iso/identifier.rb +39 -264
  21. data/lib/pubid/iso/parser.rb +56 -20
  22. data/lib/pubid/iso/renderer/amendment.rb +7 -0
  23. data/lib/pubid/iso/renderer/base.rb +129 -98
  24. data/lib/pubid/iso/renderer/corrigendum.rb +7 -0
  25. data/lib/pubid/iso/renderer/dir.rb +5 -3
  26. data/lib/pubid/iso/renderer/guide.rb +19 -0
  27. data/lib/pubid/iso/renderer/international_standard.rb +11 -0
  28. data/lib/pubid/iso/renderer/international_standardized_profile.rb +13 -0
  29. data/lib/pubid/iso/renderer/international_workshop_agreement.rb +17 -0
  30. data/lib/pubid/iso/renderer/publicly_available_specification.rb +12 -0
  31. data/lib/pubid/iso/renderer/recommendation.rb +13 -0
  32. data/lib/pubid/iso/renderer/supplement.rb +63 -0
  33. data/lib/pubid/iso/renderer/technical_committee.rb +47 -0
  34. data/lib/pubid/iso/renderer/technical_report.rb +13 -0
  35. data/lib/pubid/iso/renderer/technical_specification.rb +13 -0
  36. data/lib/pubid/iso/renderer/technology_trends_assessments.rb +13 -0
  37. data/lib/pubid/iso/renderer/urn-amendment.rb +12 -0
  38. data/lib/pubid/iso/renderer/urn-corrigendum.rb +12 -0
  39. data/lib/pubid/iso/renderer/urn-dir.rb +11 -3
  40. data/lib/pubid/iso/renderer/urn-supplement.rb +31 -0
  41. data/lib/pubid/iso/renderer/urn-tc.rb +2 -0
  42. data/lib/pubid/iso/renderer/urn.rb +25 -13
  43. data/lib/pubid/iso/stage.rb +1 -99
  44. data/lib/pubid/iso/transformer.rb +88 -104
  45. data/lib/pubid/iso/type.rb +3 -1
  46. data/lib/pubid/iso/version.rb +1 -1
  47. data/lib/pubid/iso.rb +20 -14
  48. data/stages.yaml +93 -0
  49. data/update_codes.yaml +1 -0
  50. metadata +37 -11
  51. data/lib/pubid/iso/amendment.rb +0 -15
  52. data/lib/pubid/iso/corrigendum.rb +0 -31
  53. data/lib/pubid/iso/renderer/french.rb +0 -29
  54. data/lib/pubid/iso/renderer/russian.rb +0 -64
  55. data/lib/pubid/iso/renderer/tc.rb +0 -30
  56. data/lib/pubid/iso/supplement.rb +0 -56
  57. data/lib/pubid/iso/typed_stage.rb +0 -204
@@ -11,33 +11,39 @@ module Pubid::Iso::Renderer
11
11
  IS: 60 }.freeze
12
12
 
13
13
  def prerender(with_edition: true, **args)
14
- @params[:type_stage] = @params.slice(:stage, :type) if @params[:stage] || @params[:type]
14
+ # @params[:type_stage] = @params.slice(:stage, :type) if @params[:stage] || @params[:type]
15
15
  super
16
16
  end
17
17
 
18
18
  # Render identifier
19
19
  # @param with_edition [Boolean] include edition in output
20
- # @see Pubid::Core::Renderer::Base for another options
21
- def render(with_edition: true, **args)
22
- # copy type from typed stage
23
- @params[:type] = @params[:typed_stage].type if @params[:typed_stage] && @params[:typed_stage].type
24
- super(**args.merge({ with_edition: with_edition }))
20
+ def render(with_edition: true, with_date: true, with_language_code: :iso, **args)
21
+ render_base_identifier(**args.merge(
22
+ { with_edition: with_edition,
23
+ with_date: with_date,
24
+ with_language_code: with_language_code },
25
+ ))
26
+ end
27
+
28
+ def render_prefix(params)
29
+ "urn:iso:std:%{publisher}%{copublisher}%{type}:%{number}%{part}" % params
25
30
  end
26
31
 
27
32
  def render_identifier(params)
28
- render_base(params) + "%{typed_stage}"\
33
+ render_prefix(params) + "%{stage}"\
29
34
  "%{corrigendum_stage}%{iteration}%{edition}%{amendments}%{corrigendums}" % params
30
35
  end
31
36
 
32
- def render_typed_stage(typed_stage, _opts, _params)
33
- ":stage-#{typed_stage.stage.harmonized_code}" if typed_stage.stage
34
- end
35
- # def render_stage(stage, _opts, params)
36
- # ":stage-#{stage.harmonized_code}"
37
+ # def render_typed_stage(typed_stage, _opts, _params)
38
+ # ":stage-#{typed_stage.stage.harmonized_code}" if typed_stage.stage
37
39
  # end
40
+ #
41
+ def render_stage(stage, _opts, params)
42
+ ":stage-#{stage.harmonized_code.to_s}"
43
+ end
38
44
 
39
45
  def render_iteration(iteration, _opts, params)
40
- ".v#{iteration}" if params[:typed_stage]&.stage
46
+ ".v#{iteration}" if params[:stage]
41
47
  end
42
48
 
43
49
  def render_type(type, _, _)
@@ -47,5 +53,11 @@ module Pubid::Iso::Renderer
47
53
  def render_year(year, _opts, _params)
48
54
  ":#{year}"
49
55
  end
56
+
57
+ def render_part(part, opts, _params)
58
+ return ":-#{part.reverse.join('-')}" if part.is_a?(Array)
59
+
60
+ ":-#{part}"
61
+ end
50
62
  end
51
63
  end
@@ -1,103 +1,5 @@
1
1
  module Pubid::Iso
2
- class Stage
3
- attr_accessor :abbr, :harmonized_code
2
+ class Stage < Pubid::Core::Stage
4
3
 
5
- STAGES = { PWI: %w[00.00 00.20 00.60 00.98 00.99],
6
- NP: %w[10.00 10.20 10.60 10.98 10.92],
7
- AWI: %w[20.00 10.99],
8
- WD: %w[20.20 20.60 20.98 20.99],
9
- CD: %w[30.00 30.20 30.60 30.92 30.98 30.99],
10
- PRF: "60.00" }.freeze
11
-
12
-
13
- STAGE_NAMES = {
14
- WD: "Working Draft",
15
- PWI: "Preliminary Work Item",
16
- NP: "New Proposal",
17
- CD: "Committee Draft",
18
- PRF: "Proof of a new International Standard",
19
- }.freeze
20
-
21
- # @param abbr [String, Symbol] abbreviation eg. :PWI, :WD
22
- # @param harmonized_code [String, Float, HarmonizedStageCode]
23
- def initialize(abbr: nil, harmonized_code: nil)
24
- @abbr = abbr&.to_s
25
-
26
- if harmonized_code
27
- @harmonized_code = if harmonized_code.is_a?(HarmonizedStageCode)
28
- harmonized_code
29
- else
30
- HarmonizedStageCode.new(harmonized_code)
31
- end
32
- @abbr ||= lookup_abbr(@harmonized_code.stages)
33
- # unless @harmonized_code.fuzzy?
34
- # @abbr ||= lookup_abbr(@harmonized_code.to_s) || lookup_abbr("#{@harmonized_code.stage}.00")
35
- # end
36
- end
37
-
38
- if abbr
39
- raise Errors::StageInvalidError, "#{abbr} is not valid stage" unless STAGES.key?(abbr.to_sym)
40
-
41
- @harmonized_code ||= HarmonizedStageCode.new(lookup_code(abbr))
42
- end
43
- end
44
-
45
- # Lookup for abbreviated code by numeric stage code
46
- # @param lookup_code [String, Array] stage code or array of stage codes,
47
- # e.g. "00.00", "20.20", ["00.00", "00.20"]
48
- def lookup_abbr(lookup_code)
49
- lookup_code = lookup_code.first if lookup_code.is_a?(Array) && lookup_code.count == 1
50
-
51
- STAGES.each do |abbr, codes|
52
- case codes
53
- when Array
54
- if lookup_code.is_a?(Array)
55
- return abbr if codes == lookup_code
56
- else
57
- return abbr if codes.include?(lookup_code)
58
- end
59
- # codes.each do |code|
60
- # return abbr if code == lookup_code
61
- # end
62
- when lookup_code
63
- return abbr
64
- end
65
- end
66
-
67
- nil
68
- end
69
-
70
- def lookup_code(lookup_abbr)
71
- STAGES[lookup_abbr.to_sym]
72
- # code.is_a?(Array) ? code.first : code
73
- end
74
-
75
- def self.parse(stage)
76
- if /\A[\d.]+\z/.match?(stage)
77
- Stage.new(harmonized_code: stage)
78
- else
79
- raise Errors::StageInvalidError unless stage.is_a?(Symbol) || stage.is_a?(String)
80
-
81
- Stage.new(abbr: stage)
82
- end
83
- end
84
-
85
- def self.has_stage?(stage)
86
- if stage.is_a?(Stage)
87
- STAGES.key?(stage.abbr.to_sym)
88
- else
89
- STAGES.key?(stage.to_sym) || /\A[\d.]+\z/.match?(stage)
90
- end
91
- end
92
-
93
- # Compares one stage with another
94
- def ==(other)
95
- other&.harmonized_code == harmonized_code
96
- end
97
-
98
- # Return stage name, eg. "Draft International Standard" for "DIS"
99
- def name
100
- STAGE_NAMES[abbr.to_sym]
101
- end
102
4
  end
103
5
  end
@@ -1,67 +1,36 @@
1
+ require_relative "identifier/base"
2
+ require_relative "renderer/base"
3
+
1
4
  module Pubid::Iso
2
5
  class Transformer < Parslet::Transform
3
6
  rule(edition: "Ed") do
4
7
  { edition: "1" }
5
8
  end
6
9
 
7
- rule(stage: simple(:stage)) do |context|
8
- { stage: convert_stage(context[:stage]) }
10
+ rule(stage: subtree(:stage)) do |context|
11
+ stage_and_type = convert_stage(context[:stage])
12
+ context[:stage] = stage_and_type[:stage]
13
+ context[:type] = stage_and_type[:type] if stage_and_type[:type]
14
+ context
9
15
  end
10
16
 
11
17
  rule(supplements: subtree(:supplements)) do |context|
12
18
  context[:supplements] =
13
19
  context[:supplements].map do |supplement|
14
- supplement[:typed_stage] = case supplement[:typed_stage]
15
- when "PDAM"
16
- "CD Amd"
17
- when "pDCOR"
18
- "CD Cor"
19
- when "FCOR"
20
- "FDCor"
21
- when "FPDAM"
22
- "DAmd"
23
- when "FDAM"
24
- "FDAmd"
25
- else
26
- supplement[:typed_stage]
27
- end
28
- # Supplement.new(
29
- # number: supplement[:number],
30
- # year: supplement[:year],
31
- # typed_stage:
32
- # case supplement[:typed_stage]
33
- # when "FCOR"
34
- # "FDCor"
35
- # else
36
- # supplement[:typed_stage]
37
- # end,
38
- # iteration: supplement[:iteration]
39
- # )
40
- supplement
41
- end
42
- context
43
- end
44
-
45
- rule(amendments: subtree(:amendments)) do |context|
46
- context[:amendments] =
47
- context[:amendments].map do |amendment|
48
- Amendment.new(
49
- number: amendment[:number],
50
- year: amendment[:year],
51
- typed_stage: amendment[:stage] && convert_stage(amendment[:stage]),
52
- iteration: amendment[:iteration])
53
- end
54
- context
55
- end
56
-
57
- rule(corrigendums: subtree(:corrigendums)) do |context|
58
- context[:corrigendums] =
59
- context[:corrigendums].map do |corrigendum|
60
- Corrigendum.new(
61
- number: corrigendum[:number],
62
- year: corrigendum[:year],
63
- typed_stage: corrigendum[:stage] && convert_stage(corrigendum[:stage]),
64
- iteration: corrigendum[:iteration])
20
+ if supplement[:typed_stage]
21
+ supplement.merge(
22
+ case supplement[:typed_stage]
23
+ when "PDAM"
24
+ { typed_stage: "CD", type: "Amd" }
25
+ when "pDCOR"
26
+ { typed_stage: "CD", type: "Cor" }
27
+ else
28
+ {}
29
+ end
30
+ )
31
+ else
32
+ supplement
33
+ end
65
34
  end
66
35
  context
67
36
  end
@@ -77,11 +46,11 @@ module Pubid::Iso
77
46
  end
78
47
 
79
48
  rule(type: simple(:type)) do
80
- russian_type = Renderer::Russian::TYPE.key(type.to_s)
81
- { type: Type.new(russian_type&.downcase&.to_sym ||
49
+ russian_type = Pubid::Iso::Renderer::Base::TRANSLATION[:russian][:type].key(type.to_s)
50
+ { type: russian_type&.downcase&.to_sym ||
82
51
  case type
83
52
  # XXX: can't put 2 alternative Russian translations to dictionary, temporary hack
84
- when "GUIDE", "Guide", "Руководства"
53
+ when "GUIDE", "Guide", "Руководство"
85
54
  :guide
86
55
  when "ТС", "TS"
87
56
  :ts
@@ -97,78 +66,93 @@ module Pubid::Iso
97
66
  :r
98
67
  else
99
68
  type
100
- end) }
69
+ end }
70
+ end
71
+
72
+ rule(tctype: subtree(:tctype)) do |context|
73
+ context[:type] = :tc
74
+ context
101
75
  end
102
76
 
103
77
  rule(copublisher: simple(:copublisher)) do
104
- russian_copublisher = Renderer::Russian::PUBLISHER.key(copublisher.to_s)
78
+ russian_copublisher = Pubid::Iso::Renderer::Base::TRANSLATION[:russian][:publisher].key(copublisher.to_s)
105
79
  { copublisher: russian_copublisher&.to_s ||
106
80
  case copublisher
107
81
  when "CEI"
108
82
  "IEC"
109
83
  else
110
- copublisher
84
+ copublisher.to_s
111
85
  end
112
86
  }
113
87
  end
114
88
 
115
89
  rule(publisher: simple(:publisher)) do
116
- russian_publisher = Renderer::Russian::PUBLISHER.key(publisher.to_s)
90
+ russian_publisher = Pubid::Iso::Renderer::Base::TRANSLATION[:russian][:publisher].key(publisher.to_s)
117
91
  { publisher: russian_publisher&.to_s || publisher }
118
92
  end
119
93
 
120
- # rule(year: simple(:year)) do
121
- # { year: year.to_i }
122
- # end
123
- #
124
- rule(publisher: simple(:publisher), supplement: subtree(:supplement)) do |context|
125
- context[:supplement] =
126
- Supplement.new(number: context[:supplement][:number],
127
- year: context[:supplement][:year],
128
- publisher: context[:supplement][:publisher],
129
- edition: context[:supplement][:edition])
94
+ rule(joint_document: subtree(:joint_document)) do |context|
95
+ context[:joint_document] =
96
+ Identifier.create(**context[:joint_document])
130
97
  context
131
98
  end
132
99
 
133
- rule(supplement: subtree(:supplement)) do |context|
134
- context[:supplement] =
135
- Supplement.new(number: context[:supplement][:number],
136
- year: context[:supplement][:year],
137
- publisher: context[:supplement][:publisher],
138
- edition: context[:supplement][:edition])
139
- context
100
+ rule(dir_joint_document: subtree(:dir_joint_document)) do |context|
101
+ context[:joint_document] =
102
+ Identifier::Base.transform(**(context[:dir_joint_document].merge(type: :dir)))
103
+ context.select { |k, v| k != :dir_joint_document }
140
104
  end
141
105
 
142
- rule(joint_document: subtree(:joint_document)) do |context|
143
- context[:joint_document] =
144
- Identifier.new(**context[:joint_document])
145
- context
106
+
107
+ rule(roman_numerals: simple(:roman_numerals)) do |context|
108
+ roman_to_int(context[:roman_numerals])
109
+ # case roman_numerals
110
+ # when "III"
111
+ # 3
112
+ # else
113
+ # nil
114
+ # end
115
+ end
116
+
117
+ ROMAN_TO_INT = {
118
+ "I" => 1,
119
+ "V" => 5,
120
+ "X" => 10,
121
+ "L" => 50,
122
+ "C" => 100,
123
+ "D" => 500,
124
+ "M" => 1000,
125
+ }
126
+
127
+ def self.roman_to_int(roman)
128
+ sum = ROMAN_TO_INT[roman.to_s[0]]
129
+ roman.to_s.chars.each_cons(2) do |c1, c2|
130
+ sum += ROMAN_TO_INT[c2]
131
+ sum -= ROMAN_TO_INT[c1] * 2 if ROMAN_TO_INT[c1] < ROMAN_TO_INT[c2]
132
+ end
133
+ sum
146
134
  end
147
135
 
148
136
  def self.convert_stage(code)
149
- russian_code = Renderer::Russian::STAGE.key(code.to_s)
150
- # return russian_code.to_s if russian_code
151
-
152
- code = case code
153
- when "NWIP"
154
- "NP"
155
- when "D", "FPD"
156
- "DIS"
157
- when "FD", "F"
158
- "FDIS"
159
- when "Fpr"
160
- "PRF"
161
- # when "pD", "PD"
162
- # "CD"
163
- when "PDTR"
164
- "CD TR"
165
- when "PDTS"
166
- "CD TS"
167
- else
168
- code
169
- end
170
- russian_code || code
171
- # Stage.new(abbr: (russian_code || code))
137
+ russian_code = Pubid::Iso::Renderer::Base::TRANSLATION[:russian][:stage].key(code.to_s)
138
+ return { stage: russian_code } if russian_code
139
+
140
+ case code
141
+ when "NWIP"
142
+ { stage: "NP" }
143
+ when "D", "FPD"
144
+ { stage: "DIS" }
145
+ when "FD", "F"
146
+ { stage: "FDIS" }
147
+ when "Fpr"
148
+ { stage: "PRF" }
149
+ when "PDTR"
150
+ { stage: "CD", type: "TR" }
151
+ when "PDTS"
152
+ { stage: "CD", type: "TS" }
153
+ else
154
+ { stage: code }
155
+ end
172
156
  end
173
157
 
174
158
  def self.convert_language(code)
@@ -49,7 +49,9 @@ module Pubid::Iso
49
49
 
50
50
  # Create new type
51
51
  # @param type [Symbol]
52
- def initialize(type)
52
+ def initialize(type = :is)
53
+ type = type.to_s.downcase.to_sym unless type.is_a?(Symbol)
54
+
53
55
  raise Errors::WrongTypeError, "#{type} type is not available" unless TYPE_NAMES.key?(type)
54
56
 
55
57
  @type = type
@@ -1,5 +1,5 @@
1
1
  module Pubid
2
2
  module Iso
3
- VERSION = "0.3.1".freeze
3
+ VERSION = "0.4.0".freeze
4
4
  end
5
5
  end
data/lib/pubid/iso.rb CHANGED
@@ -1,30 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "parslet"
4
+ require "yaml"
4
5
 
5
6
  module Pubid
6
7
  module Iso
7
-
8
+ UPDATE_CODES = YAML.load_file(File.join(File.dirname(__FILE__), "../../update_codes.yaml"))
8
9
  end
9
10
  end
10
11
 
12
+ STAGES_CONFIG = YAML.load_file(File.join(File.dirname(__FILE__), "../../stages.yaml"))
13
+
11
14
  require "pubid-core"
12
15
  require_relative "iso/errors"
13
16
  require_relative "iso/stage"
14
17
  require_relative "iso/type"
15
- require_relative "iso/typed_stage"
16
18
  require_relative "iso/harmonized_stage_code"
17
- require_relative "iso/parser"
18
19
  require_relative "iso/transformer"
19
- require_relative "iso/supplement"
20
- require_relative "iso/amendment"
21
- require_relative "iso/corrigendum"
22
20
  require_relative "iso/identifier"
23
- require_relative "iso/renderer/base"
24
- require_relative "iso/renderer/urn"
25
- require_relative "iso/renderer/french"
26
- require_relative "iso/renderer/russian"
27
- require_relative "iso/renderer/tc"
28
- require_relative "iso/renderer/urn-tc"
29
- require_relative "iso/renderer/dir"
30
- require_relative "iso/renderer/urn-dir"
21
+ require_relative "iso/identifier/base"
22
+ require_relative "iso/identifier/international_standard"
23
+ require_relative "iso/identifier/international_standardized_profile"
24
+ require_relative "iso/identifier/technical_report"
25
+ require_relative "iso/identifier/technical_specification"
26
+ require_relative "iso/identifier/technical_committee"
27
+ require_relative "iso/identifier/supplement"
28
+ require_relative "iso/identifier/amendment"
29
+ require_relative "iso/identifier/corrigendum"
30
+ require_relative "iso/identifier/publicly_available_specification"
31
+ require_relative "iso/identifier/directives"
32
+ require_relative "iso/identifier/guide"
33
+ require_relative "iso/identifier/recommendation"
34
+ require_relative "iso/identifier/technology_trends_assessments"
35
+ require_relative "iso/identifier/international_workshop_agreement"
36
+ require_relative "iso/parser"
data/stages.yaml ADDED
@@ -0,0 +1,93 @@
1
+ abbreviations:
2
+ PWI: ["00.00", "00.20", "00.60", "00.98", "00.99"]
3
+ NP: ["10.00", "10.20", "10.60", "10.98", "10.92"]
4
+ AWI: ["20.00", "10.99"]
5
+ WD: ["20.20", "20.60", "20.98", "20.99"]
6
+ CD: ["30.00", "30.20", "30.60", "30.92", "30.98", "30.99"]
7
+ PRF: ["50.00", "50.20", "50.60", "50.92", "50.98", "50.99"]
8
+
9
+ names:
10
+ WD: Working Draft
11
+ PWI: Preliminary Work Item
12
+ NP: New Proposal
13
+ CD: Committee Draft
14
+ PRF: Proof of a new
15
+
16
+ codes_description:
17
+ "00.00": Proposal for new project received
18
+ "00.20": Proposal for new project under review
19
+ "00.60": Close of review
20
+ "00.98": Proposal for new project abandoned
21
+ "00.99": Approval to ballot proposal for new project
22
+ "10.00": Proposal for new project registered
23
+ "10.20": New project ballot initiated
24
+ "10.60": Close of voting
25
+ "10.92": Proposal returned to submitter for further definition
26
+ "10.98": New project rejected
27
+ "10.99": New project approved
28
+ "20.00": New project registered in TC/SC work programme
29
+ "20.20": Working draft (WD) study initiated
30
+ "20.60": Close of comment period
31
+ "20.98": Project deleted
32
+ "20.99": WD approved for registration as CD
33
+ "30.00": Committee draft (CD) registered
34
+ "30.20": CD study/ballot initiated
35
+ "30.60": Close of voting/ comment period
36
+ "30.92": CD referred back to Working Group
37
+ "30.98": Project deleted
38
+ "30.99": CD approved for registration as DIS
39
+ "40.00": DIS registered
40
+ "40.20": "DIS ballot initiated: 12 weeks"
41
+ "40.60": Close of voting
42
+ "40.93": "Full report circulated: decision for new DIS ballot"
43
+ "40.98": Project deleted
44
+ "40.92": "Full report circulated: DIS referred back to TC or SC"
45
+ "40.99": "Full report circulated: DIS approved for registration as FDIS"
46
+ "50.00": Final text received or FDIS registered for formal approval
47
+ "50.20": "Proof sent to secretariat or FDIS ballot initiated: 8 weeks"
48
+ "50.60": Close of voting. Proof returned by secretariat
49
+ "50.92": FDIS or proof referred back to TC or SC
50
+ "50.98": Project deleted
51
+ "50.99": FDIS or proof approved for publication
52
+ "60.00": International Standard under publication
53
+ "60.60": International Standard published
54
+ "90.20": International Standard under systematic review
55
+ "90.60": Close of review
56
+ "90.92": International Standard to be revised
57
+ "90.93": International Standard confirmed
58
+ "90.99": Withdrawal of International Standard proposed by TC or SC
59
+ "95.20": Withdrawal ballot initiated
60
+ "95.60": Close of voting
61
+ "95.92": Decision not to withdraw International Standard
62
+ "95.99": Withdrawal of International Standard
63
+
64
+ stage_codes:
65
+ preliminary: "00"
66
+ proposal: "10"
67
+ preparatory: "20"
68
+ committee: "30"
69
+ enquiry: "40"
70
+ approval: "50"
71
+ publication: "60"
72
+ review: "90"
73
+ withdrawal: "95"
74
+
75
+ substage_codes:
76
+ registration: "00"
77
+ start_of_main_action: "20"
78
+ completion_of_main_action: "60"
79
+ repeat_an_earlier_phase: "92"
80
+ repeat_current_phase: "93"
81
+ abandon: "98"
82
+ proceed: "99"
83
+
84
+ draft_codes: ["00.00", "00.20", "00.60", "00.99", "10.00", "10.20", "10.60", "10.92",
85
+ "10.99", "20.00", "20.20", "20.60", "20.99", "30.00",
86
+ "30.20", "30.60", "30.92", "30.99", "40.00", "40.20", "40.60", "40.92",
87
+ "40.93", "40.99", "50.00", "50.20", "50.60", "50.92", "50.99"]
88
+
89
+ canceled_codes: ["00.98", "10.98", "20.98", "30.98", "40.98", "50.98", "95.99"]
90
+ published_codes: ["60.00", "60.60", "90.20", "90.60", "90.92", "90.93", "90.99", "95.20", "95.60", "95.92"]
91
+
92
+
93
+
data/update_codes.yaml ADDED
@@ -0,0 +1 @@
1
+ ISO/R 657/IV: ISO/R 657-4:1969
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pubid-iso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
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-11-02 00:00:00.000000000 Z
11
+ date: 2023-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.3.0
103
+ version: 1.5.1
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.3.0
110
+ version: 1.5.1
111
111
  description: Library to generate, parse and manipulate ISO PubID.
112
112
  email:
113
113
  - open.source@ribose.com
@@ -121,26 +121,52 @@ files:
121
121
  - README.adoc
122
122
  - lib/pubid-iso.rb
123
123
  - lib/pubid/iso.rb
124
- - lib/pubid/iso/amendment.rb
125
- - lib/pubid/iso/corrigendum.rb
126
124
  - lib/pubid/iso/errors.rb
127
125
  - lib/pubid/iso/harmonized_stage_code.rb
128
126
  - lib/pubid/iso/identifier.rb
127
+ - lib/pubid/iso/identifier/amendment.rb
128
+ - lib/pubid/iso/identifier/base.rb
129
+ - lib/pubid/iso/identifier/corrigendum.rb
130
+ - lib/pubid/iso/identifier/directives.rb
131
+ - lib/pubid/iso/identifier/guide.rb
132
+ - lib/pubid/iso/identifier/international_standard.rb
133
+ - lib/pubid/iso/identifier/international_standardized_profile.rb
134
+ - lib/pubid/iso/identifier/international_workshop_agreement.rb
135
+ - lib/pubid/iso/identifier/publicly_available_specification.rb
136
+ - lib/pubid/iso/identifier/recommendation.rb
137
+ - lib/pubid/iso/identifier/supplement.rb
138
+ - lib/pubid/iso/identifier/technical_committee.rb
139
+ - lib/pubid/iso/identifier/technical_report.rb
140
+ - lib/pubid/iso/identifier/technical_specification.rb
141
+ - lib/pubid/iso/identifier/technology_trends_assessments.rb
129
142
  - lib/pubid/iso/parser.rb
143
+ - lib/pubid/iso/renderer/amendment.rb
130
144
  - lib/pubid/iso/renderer/base.rb
145
+ - lib/pubid/iso/renderer/corrigendum.rb
131
146
  - lib/pubid/iso/renderer/dir.rb
132
- - lib/pubid/iso/renderer/french.rb
133
- - lib/pubid/iso/renderer/russian.rb
134
- - lib/pubid/iso/renderer/tc.rb
147
+ - lib/pubid/iso/renderer/guide.rb
148
+ - lib/pubid/iso/renderer/international_standard.rb
149
+ - lib/pubid/iso/renderer/international_standardized_profile.rb
150
+ - lib/pubid/iso/renderer/international_workshop_agreement.rb
151
+ - lib/pubid/iso/renderer/publicly_available_specification.rb
152
+ - lib/pubid/iso/renderer/recommendation.rb
153
+ - lib/pubid/iso/renderer/supplement.rb
154
+ - lib/pubid/iso/renderer/technical_committee.rb
155
+ - lib/pubid/iso/renderer/technical_report.rb
156
+ - lib/pubid/iso/renderer/technical_specification.rb
157
+ - lib/pubid/iso/renderer/technology_trends_assessments.rb
158
+ - lib/pubid/iso/renderer/urn-amendment.rb
159
+ - lib/pubid/iso/renderer/urn-corrigendum.rb
135
160
  - lib/pubid/iso/renderer/urn-dir.rb
161
+ - lib/pubid/iso/renderer/urn-supplement.rb
136
162
  - lib/pubid/iso/renderer/urn-tc.rb
137
163
  - lib/pubid/iso/renderer/urn.rb
138
164
  - lib/pubid/iso/stage.rb
139
- - lib/pubid/iso/supplement.rb
140
165
  - lib/pubid/iso/transformer.rb
141
166
  - lib/pubid/iso/type.rb
142
- - lib/pubid/iso/typed_stage.rb
143
167
  - lib/pubid/iso/version.rb
168
+ - stages.yaml
169
+ - update_codes.yaml
144
170
  homepage: https://github.com/metanorma/pubid-iso
145
171
  licenses:
146
172
  - BSD-2-Clause