class Strptime
Strptime is a faster way to parse time strings like strptime(3).
@example
parser = Strptime.new('%Y-%m-%dT%H:%M:%S%z') parser.source #=> "%Y-%m-%dT%H:%M:%S%z" parser.exec('2015-12-25T12:34:56+09') #=> 2015-12-25 12:34:56 +09:00 parser.execi('2015-12-25T12:34:56+09') #=> 1451014496
Constants
- VERSION
Public Class Methods
new(p1)
click to toggle source
@overload new(format)
@param format [String] strptime(3) style format string.
returns parser object
static VALUE
strptime_init(VALUE self, VALUE fmt)
{
struct strptime_object *tobj;
void **isns;
StringValueCStr(fmt);
TypedData_Get_Struct(self, struct strptime_object, &strptime_data_type,
tobj);
isns = strptime_compile(RSTRING_PTR(fmt), RSTRING_LEN(fmt));
tobj->isns = isns;
tobj->fmt = rb_str_new_frozen(fmt);
return self;
}
Public Instance Methods
exec(p1)
click to toggle source
@overload exec(str)
@param str [String] string to parse
@return [Time] the time object given string means
Parse given string, and return Time object
static VALUE
strptime_exec(VALUE self, VALUE str)
{
struct strptime_object *tobj;
int r, gmtoff = INT_MAX;
struct timespec ts;
StringValue(str);
GetStrptimeval(self, tobj);
r = strptime_exec0(tobj->isns, RSTRING_PTR(tobj->fmt), RSTRING_PTR(str),
RSTRING_LEN(str), &ts, &gmtoff);
if (r) rb_raise(rb_eArgError, "string doesn't match");
return rb_time_timespec_new(&ts, gmtoff);
}
execi(p1)
click to toggle source
@overload execi(str)
@param str [String] string to parse
@return [Integer] the Unix epoch given string means
Parse given string, and return epoch as integer
static VALUE
strptime_execi(VALUE self, VALUE str)
{
struct strptime_object *tobj;
struct timespec ts;
int r, gmtoff = INT_MAX;
StringValue(str);
GetStrptimeval(self, tobj);
r = strptime_exec0(tobj->isns, RSTRING_PTR(tobj->fmt), RSTRING_PTR(str),
RSTRING_LEN(str), &ts, &gmtoff);
if (r) rb_raise(rb_eArgError, "string doesn't match");
return TIMET2NUM(ts.tv_sec);
}
initialize_copy(p1)
click to toggle source
@api private For Ruby VM internal.
static VALUE
strptime_init_copy(VALUE copy, VALUE self)
{
struct strptime_object *tobj, *tcopy;
if (!OBJ_INIT_COPY(copy, self)) return copy;
GetStrptimeval(self, tobj);
GetNewStrptimeval(copy, tcopy);
MEMCPY(tcopy, tobj, struct strptime_object, 1);
return copy;
}
source()
click to toggle source
@overload source @return [String] source format string
static VALUE
strptime_source(VALUE self)
{
struct strptime_object *tobj;
GetStrptimeval(self, tobj);
return tobj->fmt;
}