Sha256: 6bf09d0d6a0d17734a85bcaa18d59e4c9b6146ff395e23d92cdac4c5f77c0ff0

Contents?: true

Size: 1.46 KB

Versions: 4

Compression:

Stored size: 1.46 KB

Contents

module Eddy
  module Element
    # Identifier (works with a code list specified by the dictionary).
    class ID < Base

      # @param min [Integer]
      # @param max [Integer]
      # @param req [String] (nil)
      # @param ref [String] (nil)
      # @param val [String] (nil)
      # @return [void]
      def initialize(
        min:,
        max:,
        req: nil,
        ref: nil,
        val: nil
      )
        @type = "ID"
        @min = min
        @max = max
        self.req = req
        self.ref = ref
        self.value = val
      end

      # @raise [Eddy::Errors::ElementNilValueError] If the element is required and no value has been set.
      # @return [String]
      def value()
        if @val.nil?
          case self.req
          when "M"      then raise Eddy::Errors::ElementNilValueError.new(element: self)
          when "O", "C" then return ""
          else raise Eddy::Errors::Error, "Invalid req value: #{self.req}"
          end
        end
        return @val
      end

      # @param arg [String]
      # return [void]
      def value=(arg)
        if arg.nil?
          @val = arg
          return
        end
        raise Eddy::Errors::ElementValidationError.new("Value not present in code list: #{arg}", element: self) unless self.code_list().include?(arg)
        @val = arg
      end

      # @return [Array<String>]
      def code_list()
        raise NotImplementedError, "Each ID element must define its own code_list"
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
eddy-0.5.1 lib/eddy/models/element/id.rb
eddy-0.5.0 lib/eddy/models/element/id.rb
eddy-0.4.0 lib/eddy/models/element/id.rb
eddy-0.3.0 lib/eddy/models/element/id.rb