pubid-iec 0.2.2 → 0.2.5

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pubid/iec/identifier/amendment.rb +22 -0
  3. data/lib/pubid/iec/identifier/base.rb +59 -3
  4. data/lib/pubid/iec/identifier/component_specification.rb +15 -0
  5. data/lib/pubid/iec/identifier/conformity_assessment.rb +15 -0
  6. data/lib/pubid/iec/identifier/corrigendum.rb +22 -0
  7. data/lib/pubid/iec/identifier/guide.rb +15 -0
  8. data/lib/pubid/iec/identifier/international_standard.rb +69 -0
  9. data/lib/pubid/iec/identifier/interpretation_sheet.rb +48 -0
  10. data/lib/pubid/iec/identifier/operational_document.rb +15 -0
  11. data/lib/pubid/iec/identifier/publicly_available_specification.rb +28 -0
  12. data/lib/pubid/iec/identifier/societal_technology_trend_report.rb +16 -0
  13. data/lib/pubid/iec/identifier/supplement.rb +18 -0
  14. data/lib/pubid/iec/identifier/systems_reference_document.rb +15 -0
  15. data/lib/pubid/iec/identifier/technical_report.rb +48 -0
  16. data/lib/pubid/iec/identifier/technical_specification.rb +48 -0
  17. data/lib/pubid/iec/identifier/technology_report.rb +15 -0
  18. data/lib/pubid/iec/identifier/test_report_form.rb +40 -0
  19. data/lib/pubid/iec/identifier/white_paper.rb +15 -0
  20. data/lib/pubid/iec/identifier/working_document.rb +39 -0
  21. data/lib/pubid/iec/parser.rb +27 -16
  22. data/lib/pubid/iec/renderer/amendment.rb +7 -0
  23. data/lib/pubid/iec/renderer/corrigendum.rb +7 -0
  24. data/lib/pubid/iec/renderer/interpretation_sheet.rb +17 -0
  25. data/lib/pubid/iec/renderer/pubid.rb +30 -7
  26. data/lib/pubid/iec/renderer/urn.rb +15 -2
  27. data/lib/pubid/iec/renderer/urn_amendment.rb +10 -0
  28. data/lib/pubid/iec/renderer/urn_corrigendum.rb +9 -0
  29. data/lib/pubid/iec/renderer/urn_supplement.rb +11 -0
  30. data/lib/pubid/iec/renderer/working_document.rb +11 -0
  31. data/lib/pubid/iec/renderer/working_document_urn.rb +16 -0
  32. data/lib/pubid/iec/transformer.rb +2 -2
  33. data/lib/pubid/iec/version.rb +1 -1
  34. data/lib/pubid/iec/working_document.rb +11 -0
  35. data/lib/pubid/iec/working_document_parser.rb +24 -0
  36. data/lib/pubid/iec.rb +38 -49
  37. data/stages.yaml +0 -29
  38. metadata +33 -8
  39. data/lib/pubid/iec/amendment.rb +0 -11
  40. data/lib/pubid/iec/corrigendum.rb +0 -11
  41. data/lib/pubid/iec/type.rb +0 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 187ed5786efa96deff3b174e420e35459b0f26c36858e2fb36d7817bb9a131e0
4
- data.tar.gz: 050afef914f208fd2329dd6ab5ac6322133502f63ebfd87bcadcba9ac66766c6
3
+ metadata.gz: 1873b70daa92fcd0ca9a5a4db60a23bf2e7ec228f2036f1a81a06a589f3e5c67
4
+ data.tar.gz: b01fc14aeed19ecae83b61a7ad57c9899c584ca88a4d5144dc4db0a39a6abbc8
5
5
  SHA512:
6
- metadata.gz: e891ac1a9977ff42f712a8a178d84f5d4855fa806ceb22b7eb2affddc1bf948fb45d446b59d1cd9903f5e5b6b7944e59a16fd757ff932f37fac8928ab8b49122
7
- data.tar.gz: 361bd570bfc28dcf0d9a5496acd200af926329653e4364fb57697f10d11c641640595584c938952988d86b6879bf2a8259f3d10b1d2eb2e358579ff951d9e63d
6
+ metadata.gz: a84aede1cc1d76a1fe2e59d7d944e05e9ea087d3687616b9331be21625b103fb1be16645fcada73869b197b2e8b27b5ddd843546fbc819508a9e08185881625b
7
+ data.tar.gz: 9c397e13902622f6bcbd4b18984c74d814f10005269e32938838580ec1774ed8088ce9b54622d25c497091789702d46c614634dc09662c3a85e77083806a5576
@@ -0,0 +1,22 @@
1
+ require_relative "../renderer/amendment"
2
+ require_relative "../renderer/urn_amendment"
3
+
4
+ module Pubid::Iec
5
+ module Identifier
6
+ class Amendment < Supplement
7
+ def_delegators 'Pubid::Iec::Identifier::Amendment', :type
8
+
9
+ def self.type
10
+ { key: :amd, title: "Amendment" }
11
+ end
12
+
13
+ def self.get_renderer_class
14
+ Renderer::Amendment
15
+ end
16
+
17
+ def urn
18
+ Renderer::UrnAmendment.new(get_params).render
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,25 +1,39 @@
1
+ require "forwardable"
2
+
1
3
  module Pubid::Iec
2
4
  class Base < Pubid::Core::Identifier::Base
3
5
 
4
6
  attr_accessor :vap, :database, :fragment, :version, :decision_sheet,
5
7
  :conjuction_part, :part_version, :trf_publisher,
6
- :trf_series, :trf_version, :test_type
8
+ :trf_series, :trf_version, :test_type, :month, :day
9
+
10
+ extend Forwardable
7
11
 
8
12
  # @param stage [String] stage eg. "PWI", "PNW"
9
13
  def initialize(publisher: "IEC", stage: nil, vap: nil, database: nil,
10
14
  fragment: nil, version: nil, decision_sheet: nil,
11
15
  conjuction_part: nil, part_version: nil, trf_publisher: nil,
12
16
  trf_series: nil, trf_version: nil, test_type: nil,
13
- edition: nil, type: nil, **args)
17
+ edition: nil, type: nil, month: nil, day: nil,
18
+ language: nil, **args)
14
19
  # @stage = stage.to_s if stage
15
20
  # @stage = Stage.parse(stage) if stage
16
21
 
17
22
  if stage
18
23
  if stage.is_a?(Stage)
19
24
  @stage = stage
25
+ @typed_stage = resolve_typed_stage(@stage.harmonized_code) unless @stage.abbr
26
+ elsif self.class.has_typed_stage?(stage)
27
+ @typed_stage, @stage = self.class.find_typed_stage(stage)
20
28
  else
21
29
  @stage = Identifier.parse_stage(stage)
30
+ # resolve typed stage when harmonized code provided as stage
31
+ # or stage abbreviation was not resolved
32
+ if /\A[\d.]+\z/.match?(stage) || @stage.empty_abbr?(with_prf: true)
33
+ @typed_stage = self.class.resolve_typed_stage(@stage.harmonized_code)
34
+ end
22
35
  end
36
+ @typed_stage = self.class::TYPED_STAGES[@typed_stage][:abbr] if @typed_stage
23
37
  end
24
38
 
25
39
  @vap = vap.to_s if vap
@@ -34,7 +48,9 @@ module Pubid::Iec
34
48
  @trf_version = trf_version.to_s if trf_version
35
49
  @test_type = test_type if test_type
36
50
  @edition = edition.to_s if edition
37
- @type = Identifier.build_type(type) if type
51
+ @month = month if month
52
+ @day = day if day
53
+ @language = language if language
38
54
 
39
55
  super(**args.merge(publisher: publisher))
40
56
  end
@@ -43,7 +59,43 @@ module Pubid::Iec
43
59
  Renderer::Urn.new(get_params).render
44
60
  end
45
61
 
62
+ def to_s(with_edition_month_date: false)
63
+ self.class.get_renderer_class.new(get_params).render(with_edition_month_date: with_edition_month_date)
64
+ end
65
+
46
66
  class << self
67
+ def has_type?(type)
68
+ return type == self.type[:key] if type.is_a?(Symbol)
69
+
70
+ if self.type.key?(:short)
71
+ self.type[:short].is_a?(Array) ? self.type[:short].include?(type) : self.type[:short] == type
72
+ else
73
+ type.to_s.downcase.to_sym == self.type[:key]
74
+ end
75
+ end
76
+
77
+ def transform_hash(params)
78
+ params.map do |k, v|
79
+ get_transformer_class.new.apply(k => v.is_a?(Hash) ? transform_hash(v) : v)
80
+ end.inject({}, :merge)
81
+ end
82
+
83
+ def transform(params)
84
+ identifier_params = transform_hash(params)
85
+
86
+ if identifier_params[:interpretation_sheet]
87
+ return Identifier.create(
88
+ type: :ish,
89
+ base: Identifier.create(
90
+ **identifier_params.dup.tap { |h| h.delete(:interpretation_sheet) }),
91
+ number: identifier_params[:interpretation_sheet][:number],
92
+ year: identifier_params[:interpretation_sheet][:year]
93
+ )
94
+ end
95
+
96
+ Identifier.create(**identifier_params)
97
+ end
98
+
47
99
  def get_amendment_class
48
100
  Amendment
49
101
  end
@@ -67,6 +119,10 @@ module Pubid::Iec
67
119
  def get_update_codes
68
120
  UPDATE_CODES
69
121
  end
122
+
123
+ def get_identifier
124
+ Identifier
125
+ end
70
126
  end
71
127
 
72
128
  def database
@@ -0,0 +1,15 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class ComponentSpecification < Base
4
+ def_delegators 'Pubid::Iec::Identifier::ComponentSpecification', :type
5
+
6
+ def self.type
7
+ { key: :cs, title: "Component Specification", short: "CS" }
8
+ end
9
+
10
+ def get_params
11
+ super.merge(type: "CS")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class ConformityAssessment < Base
4
+ def_delegators 'Pubid::Iec::Identifier::ConformityAssessment', :type
5
+
6
+ def self.type
7
+ { key: :ca, title: "Conformity Assessment", short: "CA" }
8
+ end
9
+
10
+ def get_params
11
+ super.merge(type: "CA")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ require_relative "../renderer/corrigendum"
2
+ require_relative "../renderer/urn_corrigendum"
3
+
4
+ module Pubid::Iec
5
+ module Identifier
6
+ class Corrigendum < Supplement
7
+ def_delegators 'Pubid::Iec::Identifier::Corrigendum', :type
8
+
9
+ def self.type
10
+ { key: :cor, title: "Corrigendum" }
11
+ end
12
+
13
+ def self.get_renderer_class
14
+ Renderer::Corrigendum
15
+ end
16
+
17
+ def urn
18
+ Renderer::UrnCorrigendum.new(get_params).render
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,15 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class Guide < Base
4
+ def_delegators 'Pubid::Iec::Identifier::Guide', :type
5
+
6
+ def self.type
7
+ { key: :guide, title: "Guide", short: %w[Guide GUIDE] }
8
+ end
9
+
10
+ def get_params
11
+ super.merge(type: "Guide")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,69 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class InternationalStandard < Base
4
+ def_delegators 'Pubid::Iec::Identifier::InternationalStandard', :type
5
+
6
+ TYPED_STAGES = {
7
+ afdis: {
8
+ abbr: "AFDIS",
9
+ name: "Approved for FDIS",
10
+ harmonized_stages: %w[40.99],
11
+ },
12
+ ccdv: {
13
+ abbr: "CCDV",
14
+ name: "Draft circulated as CDV",
15
+ harmonized_stages: %w[40.20],
16
+ },
17
+ cdvm: {
18
+ abbr: "CDVM",
19
+ name: "Rejected CDV to be discussed at a meeting",
20
+ harmonized_stages: %w[40.91],
21
+ },
22
+ cfdis: {
23
+ abbr: "CFDIS",
24
+ name: "Draft circulated as FDIS",
25
+ harmonized_stages: %w[50.20],
26
+ },
27
+ decfdis: {
28
+ abbr: "DECFDIS",
29
+ name: "FDIS at editing check",
30
+ harmonized_stages: %w[50.00],
31
+ },
32
+ ncdv: {
33
+ abbr: "NCDV",
34
+ name: "CDV rejected",
35
+ harmonized_stages: %w[40.91],
36
+ },
37
+ nfdis: {
38
+ abbr: "NFDIS",
39
+ name: "FDIS rejected",
40
+ harmonized_stages: %w[50.92],
41
+ },
42
+ prvc: {
43
+ abbr: "PRVC",
44
+ name: "Preparation of RVC",
45
+ harmonized_stages: %w[40.60],
46
+ },
47
+ prvd: {
48
+ abbr: "PRVD",
49
+ name: "Preparation of RVD",
50
+ harmonized_stages: %w[50.60],
51
+ },
52
+ rfdis: {
53
+ abbr: "RFDIS",
54
+ name: "FDIS received and registered",
55
+ harmonized_stages: %w[50.00],
56
+ },
57
+ tcdv: {
58
+ abbr: "TCDV",
59
+ name: "Translation of CDV",
60
+ harmonized_stages: %w[40.00],
61
+ },
62
+ }.freeze
63
+
64
+ def self.type
65
+ { key: :is, title: "International Standard", short: "IS" }
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,48 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class InterpretationSheet < Base
4
+ def_delegators 'Pubid::Iec::Identifier::InterpretationSheet', :type
5
+
6
+ TYPED_STAGES = {
7
+ cdish: {
8
+ abbr: "CDISH",
9
+ name: "Draft circulated as DISH",
10
+ harmonized_stages: %w[50.20],
11
+ },
12
+ decdish: {
13
+ abbr: "DECDISH",
14
+ name: "DISH at editing check",
15
+ harmonized_stages: %w[50.00],
16
+ },
17
+ prvdish: {
18
+ abbr: "PRVDISH",
19
+ name: "Preparation of RVDISH",
20
+ harmonized_stages: %w[50.60],
21
+ },
22
+ rdish: {
23
+ abbr: "RDISH",
24
+ name: "DISH received and registered",
25
+ harmonized_stages: %w[50.00],
26
+ },
27
+ tdish: {
28
+ abbr: "TDISH",
29
+ name: "Translation of DISH",
30
+ harmonized_stages: %w[50.00],
31
+ },
32
+ }.freeze
33
+
34
+ def initialize(base: nil, **opts)
35
+ super(**opts)
36
+ @base = base
37
+ end
38
+
39
+ def self.type
40
+ { key: :ish, title: "InterpretationSheet", short: "ISH" }
41
+ end
42
+
43
+ def self.get_renderer_class
44
+ Renderer::InterpretationSheet
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,15 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class OperationalDocument < Base
4
+ def_delegators 'Pubid::Iec::Identifier::OperationalDocument', :type
5
+
6
+ def self.type
7
+ { key: :od, title: "Operational Document", short: "OD" }
8
+ end
9
+
10
+ def get_params
11
+ super.merge(type: "OD")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,28 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class PubliclyAvailableSpecification < Base
4
+ def_delegators 'Pubid::Iec::Identifier::PubliclyAvailableSpecification', :type
5
+
6
+ TYPED_STAGES = {
7
+ cdpas: {
8
+ abbr: "CDPAS",
9
+ name: "Draft circulated as DPAS",
10
+ harmonized_stages: %w[50.20],
11
+ },
12
+ PRVDPAS: {
13
+ abbr: "PRVDPAS",
14
+ name: "Preparation of RVDPAS",
15
+ harmonized_stages: %w[50.60],
16
+ }
17
+ }.freeze
18
+
19
+ def self.type
20
+ { key: :pas, title: "Publicly Available Specification", short: "PAS" }
21
+ end
22
+
23
+ def get_params
24
+ super.merge(type: "PAS")
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ module Pubid::Iec
3
+ module Identifier
4
+ class SocietalTechnologyTrendReport < Base
5
+ def_delegators 'Pubid::Iec::Identifier::SocietalTechnologyTrendReport', :type
6
+
7
+ def self.type
8
+ { key: :sttr, title: "Societal and Technology Trend Report", short: "Trend Report" }
9
+ end
10
+
11
+ def get_params
12
+ super.merge(type: "Trend Report")
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class Supplement < Base
4
+ def initialize(number:, year: nil)
5
+ @number = number ? number.to_i : 1
6
+ @year = year&.to_i
7
+ end
8
+
9
+ def <=>(other)
10
+ return 0 if year.nil? && other.year
11
+
12
+ return year <=> other.year if number == other.number
13
+
14
+ (number <=> other.number) || year <=> other.year
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class SystemsReferenceDocument < Base
4
+ def_delegators 'Pubid::Iec::Identifier::SystemsReferenceDocument', :type
5
+
6
+ def self.type
7
+ { key: :srd, title: "Systems Reference Document", short: "SRD" }
8
+ end
9
+
10
+ def get_params
11
+ super.merge(type: "SRD")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,48 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class TechnicalReport < Base
4
+ def_delegators 'Pubid::Iec::Identifier::TechnicalReport', :type
5
+
6
+ TYPED_STAGES = {
7
+ adtr: {
8
+ abbr: "ADTR",
9
+ name: "Approved for DTR",
10
+ harmonized_stages: %w[40.99],
11
+ },
12
+ cdtr: {
13
+ abbr: "CDTR",
14
+ name: "Draft circulated as DTR",
15
+ harmonized_stages: %w[50.20],
16
+ },
17
+ dtrm: {
18
+ abbr: "DTRM",
19
+ name: "Rejected DTR to be discussed at meeting",
20
+ harmonized_stages: %w[50.92],
21
+ },
22
+ ndtr: {
23
+ abbr: "NDTR",
24
+ name: "DTR rejected",
25
+ harmonized_stages: %w[50.92],
26
+ },
27
+ prvdtr: {
28
+ abbr: "PRVDTR",
29
+ name: "Preparation of RVDTR",
30
+ harmonized_stages: %w[50.60]
31
+ },
32
+ tdtr: {
33
+ abbr: "TDTR",
34
+ name: "Translation of DTR",
35
+ harmonized_stages: %w[50.00]
36
+ }
37
+ }.freeze
38
+
39
+ def self.type
40
+ { key: :tr, title: "Technical Report", short: "TR" }
41
+ end
42
+
43
+ def get_params
44
+ super.merge(type: "TR")
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,48 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class TechnicalSpecification < Base
4
+ TYPED_STAGES = {
5
+ adts: {
6
+ abbr: "ADTS",
7
+ name: "Approved for DTS",
8
+ harmonized_stages: %w[40.99],
9
+ },
10
+ cdts: {
11
+ abbr: "CDTS",
12
+ name: "Draft circulated as DTS",
13
+ harmonized_stages: %w[50.20],
14
+ },
15
+ dtsm: {
16
+ abbr: "DTSM",
17
+ name: "Rejected DTS to be discussed at meeting",
18
+ harmonized_stages: %w[50.92],
19
+ },
20
+ ndts: {
21
+ abbr: "NDTS",
22
+ name: "DTS rejected",
23
+ harmonized_stages: %w[50.92],
24
+ },
25
+ prvdts: {
26
+ abbr: "PRVDTS",
27
+ name: "Preparation of RVDTS",
28
+ harmonized_stages: %w[50.60],
29
+ },
30
+ tdts: {
31
+ abbr: "TDTS",
32
+ name: "Translation of DTS",
33
+ harmonized_stages: %w[50.00],
34
+ },
35
+ }.freeze
36
+
37
+ def_delegators 'Pubid::Iec::Identifier::TechnicalSpecification', :type
38
+
39
+ def self.type
40
+ { key: :ts, title: "Technical Specification", short: "TS" }
41
+ end
42
+
43
+ def get_params
44
+ super.merge(type: "TS")
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,15 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class TechnologyReport < Base
4
+ def_delegators 'Pubid::Iec::Identifier::TechnologyReport', :type
5
+
6
+ def self.type
7
+ { key: :tec, title: "Technology Report", short: "Technology Report" }
8
+ end
9
+
10
+ def get_params
11
+ super.merge(type: "Technology Report")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,40 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class TestReportForm < Base
4
+
5
+ attr_accessor :version, :decision_sheet,
6
+ :conjuction_part, :part_version, :trf_publisher,
7
+ :trf_series, :trf_version, :test_type
8
+
9
+ def initialize(publisher: "IEC", decision_sheet: nil, trf_publisher: nil,
10
+ trf_series: nil, trf_version: nil, test_type: nil,
11
+ **args)
12
+ @decision_sheet = decision_sheet if decision_sheet
13
+ @trf_publisher = trf_publisher.to_s if trf_publisher
14
+ @trf_series = trf_series if trf_series
15
+ @trf_version = trf_version.to_s if trf_version
16
+ @test_type = test_type if test_type
17
+
18
+ super(**args.merge(publisher: publisher))
19
+ end
20
+
21
+ def self.type
22
+ { key: :trf, title: "Test Report Form", short: "TRF" }
23
+ end
24
+
25
+ def urn
26
+ Renderer::TrfUrn.new(get_params).render
27
+ end
28
+
29
+ class << self
30
+ def get_parser_class
31
+ TrfParser
32
+ end
33
+
34
+ def get_renderer_class
35
+ Renderer::TrfPubid
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,15 @@
1
+ module Pubid::Iec
2
+ module Identifier
3
+ class WritePaper < Base
4
+ def_delegators 'Pubid::Iec::Identifier::WritePaper', :type
5
+
6
+ def self.type
7
+ { key: :wp, title: "Write Paper", short: "White Paper" }
8
+ end
9
+
10
+ def get_params
11
+ super.merge(type: "White Paper")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,39 @@
1
+ require "forwardable"
2
+
3
+ module Pubid::Iec
4
+ module Identifier
5
+ class WorkingDocument < Pubid::Core::Identifier::Base
6
+ STAGES = %w[ACDV ACD ADTR ADTS AFDIS APUB BPUB CAN CDM CCDV CDISH CDVM
7
+ CFDIS CDPAS CDTR CDTS DTRM DTSM DECDISH DECFDIS DECPUB
8
+ DELPUB DEL NCDV NDTR NDTS NFDIS PCC PNW PPUB PRVC PRVDISH
9
+ PRVDPAS PRVDTR PRVDTS PRVD PRVN PWI RDISH RFDIS RPUB TCDV TDISH
10
+ TDTR TDTS TPUB WPUB AC CC CDV CD DA DV DC DISH DL DPAS DTR
11
+ DTS FDIS INF MTG NP QP Q RM RQ RR RVC RVDISH RVDTR RVDTS RVD
12
+ RVN RV R SBP].freeze
13
+
14
+ extend Forwardable
15
+
16
+ attr_accessor :technical_committee
17
+
18
+ def initialize(publisher: "IEC", technical_committee: nil, **args)
19
+ super(**args.merge(publisher: publisher))
20
+
21
+ @technical_committee = technical_committee
22
+ end
23
+
24
+ def urn
25
+ Renderer::WorkingDocumentUrn.new(get_params).render
26
+ end
27
+
28
+ class << self
29
+ def get_parser_class
30
+ WorkingDocumentParser
31
+ end
32
+
33
+ def get_renderer_class
34
+ Renderer::WorkingDocument
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end