Module: PBCore

Defined in:
lib/pbcore/errors.rb,
lib/pbcore.rb,
lib/pbcore/genre.rb,
lib/pbcore/title.rb,
lib/pbcore/vocab.rb,
lib/pbcore/creator.rb,
lib/pbcore/subject.rb,
lib/pbcore/version.rb,
lib/pbcore/coverage.rb,
lib/pbcore/relation.rb,
lib/pbcore/extension.rb,
lib/pbcore/publisher.rb,
lib/pbcore/annotation.rb,
lib/pbcore/asset_date.rb,
lib/pbcore/asset_type.rb,
lib/pbcore/attributes.rb,
lib/pbcore/identifier.rb,
lib/pbcore/contributor.rb,
lib/pbcore/description.rb,
lib/pbcore/creator/role.rb,
lib/pbcore/coverage/type.rb,
lib/pbcore/instantiation.rb,
lib/pbcore/relation/type.rb,
lib/pbcore/audience_level.rb,
lib/pbcore/extension/wrap.rb,
lib/pbcore/publisher/role.rb,
lib/pbcore/rights_summary.rb,
lib/pbcore/audience_rating.rb,
lib/pbcore/creator/creator.rb,
lib/pbcore/contributor/role.rb,
lib/pbcore/attributes/common.rb,
lib/pbcore/coverage/coverage.rb,
lib/pbcore/extension/embedded.rb,
lib/pbcore/instantiation/date.rb,
lib/pbcore/publisher/publisher.rb,
lib/pbcore/relation/identifier.rb,
lib/pbcore/rights_summary/link.rb,
lib/pbcore/description_document.rb,
lib/pbcore/extension/wrap/value.rb,
lib/pbcore/instantiation/colors.rb,
lib/pbcore/instantiation/rights.rb,
lib/pbcore/instantiation/tracks.rb,
lib/pbcore/instantiation/digital.rb,
lib/pbcore/extension/wrap/element.rb,
lib/pbcore/instantiation/duration.rb,
lib/pbcore/instantiation/language.rb,
lib/pbcore/instantiation/location.rb,
lib/pbcore/instantiation/physical.rb,
lib/pbcore/instantiation/relation.rb,
lib/pbcore/instantiation/standard.rb,
lib/pbcore/instantiation_document.rb,
lib/pbcore/rights_summary/summary.rb,
lib/pbcore/contributor/contributor.rb,
lib/pbcore/instantiation/data_rate.rb,
lib/pbcore/instantiation/extension.rb,
lib/pbcore/instantiation/file_size.rb,
lib/pbcore/attributes/time_interval.rb,
lib/pbcore/instantiation/annotation.rb,
lib/pbcore/instantiation/dimensions.rb,
lib/pbcore/instantiation/identifier.rb,
lib/pbcore/instantiation/media_type.rb,
lib/pbcore/instantiation/time_start.rb,
lib/pbcore/instantiation/generations.rb,
lib/pbcore/instantiation/rights/link.rb,
lib/pbcore/instantiation/essence_track.rb,
lib/pbcore/instantiation/relation/type.rb,
lib/pbcore/instantiation/rights/summary.rb,
lib/pbcore/extension/wrap/authority_used.rb,
lib/pbcore/instantiation/alternative_modes.rb,
lib/pbcore/instantiation/essence_track/type.rb,
lib/pbcore/instantiation/relation/identifier.rb,
lib/pbcore/instantiation/channel_configuration.rb,
lib/pbcore/instantiation/essence_track/duration.rb,
lib/pbcore/instantiation/essence_track/encoding.rb,
lib/pbcore/instantiation/essence_track/language.rb,
lib/pbcore/instantiation/essence_track/standard.rb,
lib/pbcore/instantiation/essence_track/bit_depth.rb,
lib/pbcore/instantiation/essence_track/data_rate.rb,
lib/pbcore/instantiation/essence_track/annotation.rb,
lib/pbcore/instantiation/essence_track/frame_rate.rb,
lib/pbcore/instantiation/essence_track/frame_size.rb,
lib/pbcore/instantiation/essence_track/identifier.rb,
lib/pbcore/instantiation/essence_track/time_start.rb,
lib/pbcore/instantiation/essence_track/aspect_ratio.rb,
lib/pbcore/instantiation/essence_track/sampling_rate.rb,
lib/pbcore/instantiation/essence_track/playback_speed.rb,
lib/pbcore/element.rb

Overview

PBCore Error classes and methods.

The classes and methods in this file intend to serve the following purposes:

1) Provide a base class for all PBCore errors, to that host applications can
   easily rescue from all errors thrown by this gem.
2) Provide specific error classes, with specific error messages, for specific
   situations. This helps developers of host applications to quickly solve
   bugs they may encounter when using the gem.
3) Provide module specific module methods that will:
   a) encapsulate conditional logic for specific situaitons
   b) raise specific errors

New error classes should be created as new error conditions for specific situations arise. The pattern to follow should be:

1) Create a new error class that extends PBCore::Error.
2) The error class should be named in a way that indicates the specific
   situation.
3) The constructor of the error class should use named arguments, and include
   all information necessary to provide a detailed error message to
   developers, ideally with some kind of instruction on how to correct the
   problem.
3) A module method should be created to encapsulate the logic need to
   determine if an error should be raised.
4) The module name should beging with "fail_if_" or "fail_unless_", followed
   by the snake-case name of the specific error class to be raised.
5) The module method should test the condition, and raise the specific
   error. This implies that the module method must also receive all
   information necessary to pass along to the constructor of the error
   class.

Defined Under Namespace

Modules: Attributes, Vocab Classes: Annotation, AssetDate, AssetType, AudienceLevel, AudienceRating, BaseIsNotPBCoreElement, Contributor, Coverage, Creator, Description, DescriptionDocument, Element, ElementMissingBuildXMLBlock, Error, Extension, Genre, Identifier, Instantiation, InstantiationDocument, Publisher, Relation, RightsSummary, Subject, Title

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.fail_if_base_is_not_pbcore_element(included_module:, base:) ⇒ Object



42
43
44
# File 'lib/pbcore/errors.rb', line 42

def self.fail_if_base_is_not_pbcore_element(included_module:, base:)
  raise BaseIsNotPBCoreElement.new(included_module: included_module, base: base) unless base.ancestors.include? PBCore::Element
end

.fail_if_missing_build_xml_block(element_class:) ⇒ Object



52
53
54
# File 'lib/pbcore/errors.rb', line 52

def self.fail_if_missing_build_xml_block(element_class:)
  raise ElementMissingBuildXMLBlock.new(element_class: element_class) unless element_class.build_block
end