module OpenEhr module RM module DataTypes module Encapsulated class DvEncapsulated < OpenEhr::RM::DataTypes::Basic::DataValue attr_accessor :charset, :language def size raise NotImplementedError, "size method not implemented" end private def size_positive raise ArgumentError, "size must be positive" if size < 0 end end class DvMultimedia < DvEncapsulated end class DvParsable < DvEncapsulated attr_reader :value, :formalism def initialize(value, formalism, charset = nil, language = nil) @value = value size_positive formalism_validity(formalism) @formalism = formalism @charset, @language = charset, language end def size value.size end private def formalism_validity(formalism) if formalism.nil raise ArgumentError, "formalism must not be nil" elsif formalism.empty? raise ArgumentError, "formalism must nto be empty" end end end end # of Encapsulated end # of Data_Types end # of RM end # of OpenEHR