pubid-iec 0.2.2 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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