Module: Dcc
- Defined in:
- lib/dcc.rb,
lib/dcc/si.rb,
lib/dcc/v2.rb,
lib/dcc/v3.rb,
lib/dcc/cli.rb,
lib/dcc/base.rb,
lib/dcc/diff.rb,
lib/dcc/i18n.rb,
lib/dcc/type.rb,
lib/dcc/error.rb,
lib/dcc/si/v1.rb,
lib/dcc/si/v2.rb,
lib/dcc/plugin.rb,
lib/dcc/schema.rb,
lib/dcc/server.rb,
lib/dcc/builder.rb,
lib/dcc/cli/cli.rb,
lib/dcc/convert.rb,
lib/dcc/extract.rb,
lib/dcc/inspect.rb,
lib/dcc/migrate.rb,
lib/dcc/si/base.rb,
lib/dcc/version.rb,
lib/dcc/validate.rb,
lib/dcc/base/data.rb,
lib/dcc/base/item.rb,
lib/dcc/base/list.rb,
lib/dcc/base/text.rb,
lib/dcc/namespace.rb,
lib/dcc/signature.rb,
lib/dcc/transform.rb,
lib/dcc/server/app.rb,
lib/dcc/base/result.rb,
lib/dcc/builder/dsl.rb,
lib/dcc/convert/csv.rb,
lib/dcc/diff/change.rb,
lib/dcc/diff/result.rb,
lib/dcc/type_guards.rb,
lib/dcc/base/comment.rb,
lib/dcc/base/contact.rb,
lib/dcc/base/formula.rb,
lib/dcc/convert/html.rb,
lib/dcc/convert/json.rb,
lib/dcc/convert/yaml.rb,
lib/dcc/extract/file.rb,
lib/dcc/extract/ring.rb,
lib/dcc/namespace/si.rb,
lib/dcc/si/base/real.rb,
lib/dcc/si/namespace.rb,
lib/dcc/type/si_unit.rb,
lib/dcc/v2/namespace.rb,
lib/dcc/v3/namespace.rb,
lib/dcc/validate/xsd.rb,
lib/dcc/base/location.rb,
lib/dcc/base/quantity.rb,
lib/dcc/base/software.rb,
lib/dcc/base/xml_blob.rb,
lib/dcc/namespace/dcc.rb,
lib/dcc/quantity_math.rb,
lib/dcc/base/byte_data.rb,
lib/dcc/base/condition.rb,
lib/dcc/base/core_data.rb,
lib/dcc/base/hash_type.rb,
lib/dcc/base/item_list.rb,
lib/dcc/base/statement.rb,
lib/dcc/cli/formatters.rb,
lib/dcc/convert/result.rb,
lib/dcc/inspect/report.rb,
lib/dcc/namespace/dsig.rb,
lib/dcc/namespace/qudt.rb,
lib/dcc/schema/version.rb,
lib/dcc/server/storage.rb,
lib/dcc/si/base/hybrid.rb,
lib/dcc/transform/xslt.rb,
lib/dcc/validate/issue.rb,
lib/dcc/builder/session.rb,
lib/dcc/common_elements.rb,
lib/dcc/context_options.rb,
lib/dcc/plugin/registry.rb,
lib/dcc/quantity_format.rb,
lib/dcc/si/base/complex.rb,
lib/dcc/si/base/si_list.rb,
lib/dcc/si/v1/namespace.rb,
lib/dcc/si/v2/namespace.rb,
lib/dcc/validate/result.rb,
lib/dcc/base/resp_person.rb,
lib/dcc/base/result_list.rb,
lib/dcc/base/used_method.rb,
lib/dcc/i18n/text_lookup.rb,
lib/dcc/si/base/constant.rb,
lib/dcc/signature/result.rb,
lib/dcc/signature/signer.rb,
lib/dcc/transform/result.rb,
lib/dcc/v2/configuration.rb,
lib/dcc/v3/configuration.rb,
lib/dcc/versioned_parser.rb,
lib/dcc/base/rich_content.rb,
lib/dcc/namespace/math_ml.rb,
lib/dcc/validate/severity.rb,
lib/dcc/base/software_list.rb,
lib/dcc/quantity_math/real.rb,
lib/dcc/si/common_elements.rb,
lib/dcc/signature/verifier.rb,
lib/dcc/type/base64_binary.rb,
lib/dcc/v2/common_elements.rb,
lib/dcc/v3/common_elements.rb,
lib/dcc/base/identification.rb,
lib/dcc/base/statement_list.rb,
lib/dcc/si/base/expanded_mu.rb,
lib/dcc/si/base/standard_mu.rb,
lib/dcc/si/v1/configuration.rb,
lib/dcc/si/v2/configuration.rb,
lib/dcc/type/schema_version.rb,
lib/dcc/validate/schematron.rb,
lib/dcc/base/equipment_class.rb,
lib/dcc/base/identifications.rb,
lib/dcc/server/storage/entry.rb,
lib/dcc/base/resp_person_list.rb,
lib/dcc/base/string_with_lang.rb,
lib/dcc/base/used_method_list.rb,
lib/dcc/context_configuration.rb,
lib/dcc/server/storage/memory.rb,
lib/dcc/si/v1/common_elements.rb,
lib/dcc/si/v2/common_elements.rb,
lib/dcc/type/decimal_xml_list.rb,
lib/dcc/type/iso_country_code.rb,
lib/dcc/quantity_math/quantity.rb,
lib/dcc/type/iso_language_code.rb,
lib/dcc/base/contact_not_strict.rb,
lib/dcc/base/measurement_result.rb,
lib/dcc/validate/business_rules.rb,
lib/dcc/base/administrative_data.rb,
lib/dcc/base/influence_condition.rb,
lib/dcc/base/measuring_equipment.rb,
lib/dcc/base/ref_type_definition.rb,
lib/dcc/validate/schematron/rule.rb,
lib/dcc/quantity_format/formatter.rb,
lib/dcc/validate/schematron/rules.rb,
lib/dcc/base/measurement_meta_data.rb,
lib/dcc/si/base/real_list_xml_list.rb,
lib/dcc/base/calibration_laboratory.rb,
lib/dcc/validate/schematron/profile.rb,
lib/dcc/base/measurement_result_list.rb,
lib/dcc/si/base/coverage_interval_mu.rb,
lib/dcc/base/influence_condition_list.rb,
lib/dcc/base/measuring_equipment_list.rb,
lib/dcc/base/ref_type_definition_list.rb,
lib/dcc/si/base/complex_list_xml_list.rb,
lib/dcc/si/base/expanded_unc_xml_list.rb,
lib/dcc/validate/schematron/rules/base.rb,
lib/dcc/base/measurement_meta_data_list.rb,
lib/dcc/base/digital_calibration_certificate.rb,
lib/dcc/si/base/measurement_uncertainty_univariate.rb,
lib/dcc/validate/schematron/rules/date_range_check.rb,
lib/dcc/validate/schematron/rules/id_refid_linking.rb,
lib/dcc/validate/schematron/rules/xml_list_spacing.rb,
lib/dcc/validate/schematron/rules/unit_format_check.rb,
lib/dcc/validate/schematron/rules/non_si_declaration.rb,
lib/dcc/validate/schematron/rules/iso_code_validation.rb,
lib/dcc/validate/schematron/rules/language_code_dedup.rb,
lib/dcc/validate/schematron/rules/release_format_check.rb,
lib/dcc/validate/schematron/rules/schema_version_check.rb,
lib/dcc/validate/schematron/rules/used_methods_placement.rb,
lib/dcc/validate/schematron/rules/uncertainty_consistency.rb,
lib/dcc/validate/schematron/rules/used_software_placement.rb,
lib/dcc/validate/schematron/rules/influence_conditions_placement.rb,
lib/dcc/validate/schematron/rules/administrative_data_completeness.rb
Overview
Dcc::Validate::Schematron::Rules hosts the 14 pure-Ruby PTB Schematron
rule classes. Each rule subclasses Base and overrides #check_on(dcc).
The parent module autoloads every rule lazily — no require_relative
is used anywhere in this directory (project rule).
Defined Under Namespace
Modules: Base, Builder, Cli, ContextConfiguration, ContextOptions, Convert, Diff, Extract, I18n, Inspect, Migrate, Namespace, Plugin, QuantityFormat, QuantityMath, Schema, Server, Si, Signature, Transform, Type, TypeGuards, V2, V3, Validate, VersionedParser Classes: BuilderError, CommonElements, ConversionError, Error, ExtractionError, MissingDependencyError, ParseError, SchemaError, SignatureError, TransformError, UnknownVersionError, ValidationError
Constant Summary collapse
- SUPPORTED_VERSIONS =
[2, 3].freeze
- UNSPECIFIED_CONTEXT =
Sentinel value used to distinguish "no context supplied" from "context supplied as nil". Defined eagerly so callers can reference it without triggering autoload.
Object.new.freeze
- VERSION =
"0.2.0"
Class Method Summary collapse
-
.build(version: 3) {|Dcc::Builder::Session| ... } ⇒ Object
Build a new DCC programmatically using the builder DSL.
-
.detect_version(input) ⇒ Integer
Detect the DCC major version from an XML document's
schemaVersionattribute. -
.io_like?(input) ⇒ Boolean
Whether the input is an IO-like stream we support.
-
.load_all! ⇒ true
Eager-load every version context (DCC + D-SI) so symbol type references in the base modules resolve correctly.
-
.migrate(dcc, from:, to:) ⇒ Object
Migrate a parsed DCC object from one schema version to another.
-
.parse(input, version: nil, context: nil, register: nil) ⇒ Dcc::V2::DigitalCalibrationCertificate, Dcc::V3::DigitalCalibrationCertificate
Parse a DCC XML document and return a typed object tree.
-
.parser_for(version) ⇒ Module
Return the parser module for the given major version.
-
.read_input(input) ⇒ String
Read an input that may be a String or an IO-like object.
Class Method Details
.build(version: 3) {|Dcc::Builder::Session| ... } ⇒ Object
Build a new DCC programmatically using the builder DSL.
77 78 79 |
# File 'lib/dcc.rb', line 77 def build(version: 3, &block) Builder.call(version: version, &block) end |
.detect_version(input) ⇒ Integer
Detect the DCC major version from an XML document's schemaVersion attribute.
104 105 106 107 108 109 |
# File 'lib/dcc.rb', line 104 def detect_version(input) str = read_input(input) match = str.match(/schemaVersion\s*=\s*["'](\d+)\./) major = match && match[1] ? match[1].to_i : 3 major == 2 ? 2 : 3 end |
.io_like?(input) ⇒ Boolean
Returns whether the input is an IO-like stream we support.
122 123 124 125 126 127 |
# File 'lib/dcc.rb', line 122 def io_like?(input) !!(input.is_a?(::IO) || input.is_a?(::StringIO) || input.is_a?(::File) || (defined?(::Tempfile) && input.is_a?(::Tempfile))) end |
.load_all! ⇒ true
Eager-load every version context (DCC + D-SI) so symbol type
references in the base modules resolve correctly. Called automatically
on first Dcc.parse. Safe to call multiple times.
133 134 135 136 137 138 139 |
# File 'lib/dcc.rb', line 133 def load_all! V2.load_all! V3.load_all! Si::V1.load_all! Si::V2.load_all! true end |
.migrate(dcc, from:, to:) ⇒ Object
Migrate a parsed DCC object from one schema version to another.
85 86 87 |
# File 'lib/dcc.rb', line 85 def migrate(dcc, from:, to:) Migrate.call(dcc, from: from, to: to) end |
.parse(input, version: nil, context: nil, register: nil) ⇒ Dcc::V2::DigitalCalibrationCertificate, Dcc::V3::DigitalCalibrationCertificate
Parse a DCC XML document and return a typed object tree.
68 69 70 71 72 |
# File 'lib/dcc.rb', line 68 def parse(input, version: nil, context: nil, register: nil) load_all! resolved = version || detect_version(input) parser_for(resolved).parse(input, context: context, register: register) end |
.parser_for(version) ⇒ Module
Return the parser module for the given major version.
92 93 94 95 96 97 98 99 |
# File 'lib/dcc.rb', line 92 def parser_for(version) case version.to_i when 2 then V2 when 3 then V3 else raise UnknownVersionError, "Unsupported DCC version: #{version.inspect} (expected 2 or 3)" end end |
.read_input(input) ⇒ String
Read an input that may be a String or an IO-like object.
Uses explicit type checks per project rule (no respond_to?).
115 116 117 118 119 |
# File 'lib/dcc.rb', line 115 def read_input(input) return input.read if io_like?(input) input.to_s end |