Sha256: df40e5ddda2b22949c51eaa2b4fe11950a8adb5ab5e69db72c8151ee00001051

Contents?: true

Size: 926 Bytes

Versions: 1

Compression:

Stored size: 926 Bytes

Contents

#!/usr/bin/env ruby

# ordinal.rb
# yesmar@speakeasy.net

module Ordinal
  # convert number to ordinal
  def to_ordinal
    cardinal = self.to_i.abs
    if (10...20).include?(cardinal) then
      cardinal.to_s << 'th'
    else
      cardinal.to_s << %w{th st nd rd th th th th th th}[cardinal % 10]
    end
  end

  # convert ordinal to number
  def Integer.from_ordinal(ordinal)
    raise ArgumentError, 'nil ordinal' if ordinal.nil?
    raise ArgumentError, 'invalid ordinal class' if ordinal.class != String
    raise ArgumentError, 'empty ordinal' if ordinal.empty?
    raise ArgumentError, 'not an ordinal' if ordinal.length < 3

    suffix = ordinal[-2,2]
    if suffix == 'st' || suffix == 'nd' || suffix == 'rd' || suffix == 'th'
      value = ordinal[0,ordinal.length-2]
    else
      raise 'not an ordinal'
    end

    value.to_i
  end
end

raise RuntimeError, 'This library is for require only' if $0 == __FILE__

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rex-0.0.4 lib/rex/modules/ordinal.rb