Module: When::Coordinates::Temporal::OriginAndUpperDigits

Defined in:
lib/when_exe/coordinates.rb

Instance Method Summary collapse

Instance Method Details

#_decode_upper_structure(source) ⇒ Array<Numeric>

上の位の除去

Parameters:

  • source (Array<Numeric>)

    日時要素の外部表現に対応する Array

Returns:

  • (Array<Numeric>)

    日時要素の内部表現に対応する Array



2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
# File 'lib/when_exe/coordinates.rb', line 2027

def _decode_upper_structure(source)
  date = source.dup
  u    = 1
  s    = 0
  @index_of_MSC.downto(1) do |i|
    s += u * (+date[i] - @indices[i-1].base) if (date[i])
    u *= @indices[i-1].unit
  end
  date[@index_of_MSC] = s + u * (+date[0]) - @origin_of_MSC
  return date[@index_of_MSC..-1]
end

#_encode_upper_structure(source) ⇒ Array<Numeric>

上の位の付加

Parameters:

  • source (Array<Numeric>)

    日時要素の内部表現に対応する Array

Returns:

  • (Array<Numeric>)

    日時要素の外部表現に対応する Array



2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
# File 'lib/when_exe/coordinates.rb', line 2010

def _encode_upper_structure(source)
  date     = source.dup
  date[0] += @origin_of_MSC
  @index_of_MSC.downto(1) do |i|
    carry, date[0] = (+date[0]).divmod(@indices[i-1].unit)
    date[0] += @indices[i-1].base
    date.unshift(carry)
  end
  return date
end