pubid-iso 0.3.0 → 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.
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 +91 -107
  45. data/lib/pubid/iso/type.rb +9 -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,98 +46,113 @@ 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
88
57
  when "ТО", "TR"
89
58
  :tr
90
- when "Directives Part", "Directives, Part", "Directives,"
59
+ when "Directives Part", "Directives, Part", "Directives,", "DIR"
91
60
  :dir
92
61
  when "PAS"
93
62
  :pas
94
63
  when "DPAS"
95
64
  :dpas
96
- when "DIR"
97
- :dir
65
+ when "R"
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)
@@ -41,11 +41,17 @@ module Pubid::Iso
41
41
  amd: {
42
42
  short: "Amd",
43
43
  },
44
+ r: {
45
+ long: "Recommendation",
46
+ short: "R",
47
+ },
44
48
  }.freeze
45
49
 
46
50
  # Create new type
47
51
  # @param type [Symbol]
48
- def initialize(type)
52
+ def initialize(type = :is)
53
+ type = type.to_s.downcase.to_sym unless type.is_a?(Symbol)
54
+
49
55
  raise Errors::WrongTypeError, "#{type} type is not available" unless TYPE_NAMES.key?(type)
50
56
 
51
57
  @type = type
@@ -65,6 +71,8 @@ module Pubid::Iso
65
71
  def ==(other)
66
72
  return type == other if other.is_a?(Symbol)
67
73
 
74
+ return false if other.nil?
75
+
68
76
  type == other.type
69
77
  end
70
78
 
@@ -1,5 +1,5 @@
1
1
  module Pubid
2
2
  module Iso
3
- VERSION = "0.3.0".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