lib/eddy/models/element/dt.rb in eddy-0.6.0 vs lib/eddy/models/element/dt.rb in eddy-0.7.0

- old
+ new

@@ -41,37 +41,46 @@ self.fmt = fmt end 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 - case self.fmt - when :yymmdd then return Eddy::Util::Time.yymmdd(@val) - when :ccyymmdd then return Eddy::Util::Time.ccyymmdd(@val) - else raise Eddy::Errors::Error "invalid fmt value for DT object" - end - end - # @raise [ElementValidationError] Unless passed a *UTC* formatted `Time` object. # @param arg [Time] A *UTC* formatted [Time](https://ruby-doc.org/stdlib-2.6.5/libdoc/time/rdoc/Time.html) object. # @return [void] def value=(arg) - if arg.nil? + if arg == :skip + @val = :skip + return + end + if arg.nil?() @val = arg return end raise Eddy::Errors::TypeValidationError.new(element: self, arg: arg) unless arg.is_a?(Time) raise Eddy::Errors::ElementValidationError.new("Argument passed is not in UTC format", element: self) unless arg.utc?() @val = arg + end + + # @raise [Eddy::Errors::ElementNilValueError] If the element is required and no value has been set. + # @return [String] + def value() + return super() + end + + # @return [String] + def process_value() + return self.class.process_value(@val, self.fmt) + end + + # @param val [Time] A *UTC* formatted [Time](https://ruby-doc.org/stdlib-2.6.5/libdoc/time/rdoc/Time.html) object. + # @param fmt [Symbol] + # @return [String] + def self.process_value(val, fmt) + case fmt + when :yymmdd then return Eddy::Util::Time.yymmdd(val) + when :ccyymmdd then return Eddy::Util::Time.ccyymmdd(val) + else raise Eddy::Errors::Error "invalid fmt value for DT object" + end end # @param fmt [Symbol] # @return [void] def fmt=(fmt)