Class: Stupidedi::Versions::FunctionalGroups::FortyTen::ElementTypes::TimeVal

Inherits:
Stupidedi::Values::SimpleElementVal show all
Defined in:
lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb

Overview

See Also:

  • A.1.3.1.6 Time

Direct Known Subclasses

Empty, Invalid, NonEmpty

Defined Under Namespace

Classes: Empty, Invalid, NonEmpty

Instance Attribute Summary

Attributes inherited from Stupidedi::Values::SimpleElementVal

#position, #usage

Constructors collapse

Instance Method Summary collapse

Methods inherited from Stupidedi::Values::SimpleElementVal

#allowed?, #component?, #copy, #date?, #definition, #id?, #initialize, #leaf?, #numeric?, #simple?, #string?, #to_x12

Methods inherited from Stupidedi::Values::AbstractElementVal

#element?, #size

Methods inherited from Stupidedi::Values::AbstractVal

#blank?, #characters, #component?, #composite?, #definition, #element?, #empty?, #functional_group?, #interchange?, #invalid?, #loop?, #present?, #repeated?, #segment?, #separator?, #simple?, #size, #table?, #transaction_set?, #transmission?, #valid?

Methods included from Color

ansi, #ansi

Methods included from Inspect

#inspect

Constructor Details

This class inherits a constructor from Stupidedi::Values::SimpleElementVal

Class Method Details

.empty(usage, position) ⇒ TimeVal

Returns:



241
242
243
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb', line 241

def empty(usage, position)
  self::Empty.new(usage, position)
end

.parse(string, usage, position) ⇒ TimeVal

Returns:



278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb', line 278

def parse(string, usage, position)
  if string.blank?
    self::Empty.new(usage, position)
  else
    hour   = string.slice(0, 2).to_i
    minute = string.slice(2, 2).try{|mm| mm.to_i unless mm.blank? }
    second = string.slice(4, 2).try{|ss| ss.to_i unless ss.blank? }

    if decimal = string.slice(6..-1)
      second += "0.#{decimal}".to_d
    end

    self::NonEmpty.new(hour, minute, second, usage, position)
  end
rescue Exceptions::InvalidElementError
  self::Invalid.new(string, usage, position)
end

.value(object, usage, position) ⇒ TimeVal

Returns:



246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb', line 246

def value(object, usage, position)
  if object.blank?
    self::Empty.new(usage, position)

  elsif object.is_a?(String) or object.is_a?(StringVal)
    hour   = object.to_s.slice(0, 2).to_i
    minute = object.to_s.slice(2, 2).try{|mm| mm.to_i unless mm.blank? }
    second = object.to_s.slice(4, 2).try{|ss| ss.to_i unless ss.blank? }

    if decimal = object.to_s.slice(6..-1)
      second += "0.#{decimal}".to_d
    end

    self::NonEmpty.new(hour, minute, second, usage, position)

  elsif object.is_a?(Time)
    self::NonEmpty.new(object.hour, object.min,
                          object.sec + (object.usec / 1000000.0),
                          usage, position)

  elsif object.is_a?(DateTime)
    self::NonEmpty.new(object.hour, object.min,
                          object.sec + object.sec_fraction.to_f,
                          usage, position)
  else
    self::Invalid.new(object, usage, position)
  end
rescue Exceptions::InvalidElementError
  self::Invalid.new(object, usage, position)
end

Instance Method Details

#time?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb', line 32

def time?
  true
end

#too_long?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb', line 40

def too_long?
  false
end

#too_short?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb', line 36

def too_short?
  false
end