Class: Stupidedi::Versions::FunctionalGroups::FortyTen::ElementTypes::FixnumVal::NonEmpty

Inherits:
Stupidedi::Versions::FunctionalGroups::FortyTen::ElementTypes::FixnumVal show all
Includes:
Comparable
Defined in:
lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb

Overview

Non-empty numeric value. Shouldn’t be directly instantiated – instead, use the value constructors.

Instance Attribute Summary collapse

Attributes inherited from Stupidedi::Values::SimpleElementVal

#position, #usage

Mathematical Operators collapse

Instance Method Summary collapse

Methods inherited from Stupidedi::Versions::FunctionalGroups::FortyTen::ElementTypes::FixnumVal

empty, #numeric?, parse, #too_long?, #too_short?, value

Methods inherited from Stupidedi::Values::SimpleElementVal

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

Methods inherited from Stupidedi::Values::AbstractElementVal

#element?, #size

Methods inherited from Stupidedi::Values::AbstractVal

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

Methods included from Color

ansi, #ansi

Constructor Details

#initialize(value, usage, position) ⇒ NonEmpty

Returns a new instance of NonEmpty.



167
168
169
170
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 167

def initialize(value, usage, position)
  @value = value
  super(usage, position)
end

Instance Attribute Details

#valueBigDecimal (readonly)

Returns:



163
164
165
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 163

def value
  @value
end

Instance Method Details

#%(other) ⇒ NonEmpty

Returns:



251
252
253
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 251

def %(other)
  copy(:value => (@value % other).to_d)
end

#*(other) ⇒ NonEmpty

Returns:



246
247
248
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 246

def *(other)
  copy(:value => (@value * other).to_d)
end

#**(other) ⇒ NonEmpty

Returns:



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

def **(other)
  copy(:value => (@value ** other).to_d)
end

#+(other) ⇒ NonEmpty

Returns:



231
232
233
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 231

def +(other)
  copy(:value => (@value + other).to_d)
end

#+@NonEmpty

Returns:



261
262
263
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 261

def +@
  self
end

#-(other) ⇒ NonEmpty

Returns:



236
237
238
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 236

def -(other)
  copy(:value => (@value - other).to_d)
end

#-@NonEmpty

Returns:



256
257
258
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 256

def -@
  copy(:value => -@value)
end

#/(other) ⇒ NonEmpty

Returns:



226
227
228
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 226

def /(other)
  copy(:value => (@value / other).to_d)
end

#<=>(other) ⇒ -1, ...

Returns:

  • (-1, 0, +1)


271
272
273
274
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 271

def <=>(other)
  a, b = coerce(other)
  a.value <=> b
end

#absNonEmpty

Returns:



266
267
268
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 266

def abs
  copy(:value => @value.abs)
end

#coerce(other) ⇒ Array(NonEmpty, Numeric)

Returns:



189
190
191
192
193
194
195
196
197
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 189

def coerce(other)
  if other.respond_to?(:to_d)
    # Re-evaluate other.call(self) as self.op(other.to_d)
    return self, other.to_d
  else
    # Fail, other.call(self) is still other.call(self)
    raise TypeError, "#{other.class} can't be coerced into FixnumVal"
  end
end

#copy(changes = {}) ⇒ NonEmpty

Returns:



173
174
175
176
177
178
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 173

def copy(changes = {})
  NonEmpty.new \
    changes.fetch(:value, @value),
    changes.fetch(:usage, usage),
    changes.fetch(:position, position)
end

#empty?Boolean

Returns:

  • (Boolean)


184
185
186
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 184

def empty?
  false
end

#inspectString

Returns:



200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 200

def inspect
  id = definition.bind do |d|
    "[#{'% 5s' % d.id}: #{d.name}]".bind do |s|
      if usage.forbidden?
        ansi.forbidden(s)
      elsif usage.required?
        ansi.required(s)
      else
        ansi.optional(s)
      end
    end
  end

  ansi.element("Nn.value#{id}") << "(#{to_s})"
end

#to_sString

Returns:



217
218
219
220
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 217

def to_s
  # The number of fractional digits is implied by usage.precision
  (@value * (10 ** definition.precision)).to_i.to_s
end

#valid?Boolean

Returns:

  • (Boolean)


180
181
182
# File 'lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb', line 180

def valid?
  true
end