class ICU::TimeFormatting::BaseFormatter

Public Instance Methods

set_attributes(options) click to toggle source
# File lib/ffi-icu/time_formatting.rb, line 61
def set_attributes(options)
  options.each { |key, value| Lib.unum_set_attribute(@f, key, value) }
  self
end

Private Instance Methods

make_formatter(time_style, date_style, locale, time_zone_str, skeleton) click to toggle source
# File lib/ffi-icu/time_formatting.rb, line 68
def make_formatter(time_style, date_style, locale, time_zone_str, skeleton)
  time_zone   = nil
  tz_len      = 0
  pattern_len = -1
  pattern_ptr = FFI::MemoryPointer.new(4)

  if time_zone_str
    time_zone = UCharPointer.from_string(time_zone_str)
    tz_len = time_zone_str.size
  else
    Lib.check_error { | error| 
      i_len  = 150
      time_zone = UCharPointer.new(i_len)
      tz_len = Lib.ucal_getDefaultTimeZone(time_zone, i_len, error) 
    }
  end

  if skeleton
    date_style = :pattern
    time_style = :pattern

    pattern_len, pattern_ptr = skeleton_format(skeleton, locale)
  end

  ptr = Lib.check_error { | error| Lib.udat_open(time_style, date_style, locale, time_zone, tz_len, pattern_ptr, pattern_len, error) }
  FFI::AutoPointer.new(ptr, Lib.method(:udat_close))
end