Class: Dcc::Builder::Session
- Inherits:
-
Object
- Object
- Dcc::Builder::Session
- Defined in:
- lib/dcc/builder/session.rb
Overview
A builder session tracks the current container (administrative_data,
items, measurement_results) and produces a fully populated
Dcc::V2::DigitalCalibrationCertificate or Dcc::V3::DigitalCalibrationCertificate
on build.
Instance Attribute Summary collapse
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
-
#administrative_data(**attrs, &block) ⇒ Object
Top-level DSL methods.
- #begin_performance_date(value) ⇒ Object
- #build ⇒ Dcc::V2::DigitalCalibrationCertificate, Dcc::V3::DigitalCalibrationCertificate
- #core_data(**attrs, &block) ⇒ Object
- #country_code(value) ⇒ Object
- #end_performance_date(value) ⇒ Object
-
#initialize(version: 3) ⇒ Session
constructor
A new instance of Session.
- #item(**attrs, &block) ⇒ Object
- #items(**attrs, &block) ⇒ Object
- #mandatory_lang(value) ⇒ Object
- #measurement_result(**attrs, &block) ⇒ Object
- #measurement_results(**_attrs, &block) ⇒ Object
-
#unique_identifier(value) ⇒ Object
CoreData convenience setters.
- #used_lang(value) ⇒ Object
Constructor Details
#initialize(version: 3) ⇒ Session
Returns a new instance of Session.
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/dcc/builder/session.rb', line 10 def initialize(version: 3) @version = version case version when 2 then ::Dcc::V2.load_all! when 3 then ::Dcc::V3.load_all! else raise ::Dcc::UnknownVersionError, "Unsupported DCC version: #{version.inspect}" end @administrative_in_progress = new_administrative_data @results_in_progress = [] @items_in_progress = [] end |
Instance Attribute Details
#version ⇒ Object (readonly)
Returns the value of attribute version.
24 25 26 |
# File 'lib/dcc/builder/session.rb', line 24 def version @version end |
Instance Method Details
#administrative_data(**attrs, &block) ⇒ Object
Top-level DSL methods. Each opens a nested container that captures subsequent setter calls via instance_eval.
28 29 30 31 32 |
# File 'lib/dcc/builder/session.rb', line 28 def administrative_data(**attrs, &block) apply_attrs(@administrative_in_progress, attrs) instance_eval(&block) if block_given? @administrative_in_progress end |
#begin_performance_date(value) ⇒ Object
94 95 96 |
# File 'lib/dcc/builder/session.rb', line 94 def begin_performance_date(value) ensure_core_data.begin_performance_date = value end |
#build ⇒ Dcc::V2::DigitalCalibrationCertificate, Dcc::V3::DigitalCalibrationCertificate
103 104 105 106 107 108 109 110 111 |
# File 'lib/dcc/builder/session.rb', line 103 def build validate_required_sections! dcc = new_digital_calibration_certificate dcc.schema_version = @version == 2 ? "2.3.0" : "3.3.0" dcc.administrative_data = @administrative_in_progress dcc.measurement_results = new_measurement_results dcc.measurement_results.measurement_result = @results_in_progress dcc end |
#core_data(**attrs, &block) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/dcc/builder/session.rb', line 34 def core_data(**attrs, &block) cd = new_core_data apply_attrs(cd, attrs) @administrative_in_progress.core_data = cd instance_eval(&block) if block_given? cd end |
#country_code(value) ⇒ Object
80 81 82 |
# File 'lib/dcc/builder/session.rb', line 80 def country_code(value) ensure_core_data.country_code_iso_3166_1 = value end |
#end_performance_date(value) ⇒ Object
98 99 100 |
# File 'lib/dcc/builder/session.rb', line 98 def end_performance_date(value) ensure_core_data.end_performance_date = value end |
#item(**attrs, &block) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/dcc/builder/session.rb', line 50 def item(**attrs, &block) it = new_item apply_attrs(it, attrs) instance_eval(&block) if block_given? (@items_in_progress ||= []) << it # Wire into the open items container if present. if @administrative_in_progress&.items current = @administrative_in_progress.items.item @administrative_in_progress.items.item = Array(current) + [it] end it end |
#items(**attrs, &block) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/dcc/builder/session.rb', line 42 def items(**attrs, &block) items_obj = new_items apply_attrs(items_obj, attrs) @administrative_in_progress.items = items_obj instance_eval(&block) if block_given? items_obj end |
#mandatory_lang(value) ⇒ Object
89 90 91 92 |
# File 'lib/dcc/builder/session.rb', line 89 def mandatory_lang(value) cd = ensure_core_data cd.mandatory_lang_code_iso_639_1 = Array(cd.mandatory_lang_code_iso_639_1) + [value] end |
#measurement_result(**attrs, &block) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/dcc/builder/session.rb', line 67 def measurement_result(**attrs, &block) mr = new_measurement_result apply_attrs(mr, attrs) instance_eval(&block) if block_given? @results_in_progress << mr mr end |
#measurement_results(**_attrs, &block) ⇒ Object
63 64 65 |
# File 'lib/dcc/builder/session.rb', line 63 def measurement_results(**_attrs, &block) instance_eval(&block) if block_given? end |
#unique_identifier(value) ⇒ Object
CoreData convenience setters
76 77 78 |
# File 'lib/dcc/builder/session.rb', line 76 def unique_identifier(value) ensure_core_data.unique_identifier = value end |
#used_lang(value) ⇒ Object
84 85 86 87 |
# File 'lib/dcc/builder/session.rb', line 84 def used_lang(value) cd = ensure_core_data cd.used_lang_code_iso_639_1 = Array(cd.used_lang_code_iso_639_1) + [value] end |