Skip to content

Commit

Permalink
Adjust Date._parse API. Fixes rubinius#2241
Browse files Browse the repository at this point in the history
  • Loading branch information
kachick committed Mar 27, 2013
1 parent 47e99e6 commit 1a09993
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 27 deletions.
21 changes: 13 additions & 8 deletions lib/18/date/format.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1062,12 +1062,8 @@ def self._parse_ddd(str, e) # :nodoc:
end
end

private_class_method :_parse_day, :_parse_time, # :_parse_beat,
:_parse_eu, :_parse_us, :_parse_iso, :_parse_iso2,
:_parse_jis, :_parse_vms, :_parse_sla, :_parse_dot,
:_parse_year, :_parse_mon, :_parse_mday, :_parse_ddd

def self._parse(str, comp=false, return_bag=false)
# return an instance of Bag
def self._fast_parse(str, comp=false)
str = str.dup

e = Format::Bag.new
Expand Down Expand Up @@ -1130,8 +1126,17 @@ def self._parse(str, comp=false, return_bag=false)

e.offset ||= zone_to_diff(e.zone) if e.zone

return e if return_bag
e.to_hash
e
end

private_class_method :_parse_day, :_parse_time, # :_parse_beat,
:_parse_eu, :_parse_us, :_parse_iso, :_parse_iso2,
:_parse_jis, :_parse_vms, :_parse_sla, :_parse_dot,
:_parse_year, :_parse_mon, :_parse_mday, :_parse_ddd
:_fast_parse

def self._parse(str, comp=true)
_fast_parse(str, comp).to_hash
end

def self.zone_to_diff(zone) # :nodoc:
Expand Down
2 changes: 1 addition & 1 deletion lib/18/time.rb
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ def make_time(year, mon, day, hour, min, sec, sec_fraction, zone, now)
# A failure for Time.parse should be checked, though.
#
def parse(date, now=self.now)
d = Date._parse(date, false, true)
d = Date.__send__ :_fast_parse, date, comp
year = d.year
year = yield(year) if year && block_given?
make_time(year, d.mon, d.mday, d.hour, d.min, d.sec, d.sec_fraction, d.zone, now)
Expand Down
21 changes: 13 additions & 8 deletions lib/19/date/format.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1037,12 +1037,8 @@ def self._parse_ddd(str, e) # :nodoc:
end
end

private_class_method :_parse_day, :_parse_time, # :_parse_beat,
:_parse_eu, :_parse_us, :_parse_iso, :_parse_iso2,
:_parse_jis, :_parse_vms, :_parse_sla, :_parse_dot,
:_parse_year, :_parse_mon, :_parse_mday, :_parse_ddd

def self._parse(str, comp=true, return_bag=false)
# return an instance of Bag
def self._fast_parse(str, comp=true)
str = str.dup

e = Format::Bag.new
Expand Down Expand Up @@ -1105,8 +1101,17 @@ def self._parse(str, comp=true, return_bag=false)

e.offset ||= zone_to_diff(e.zone) if e.zone

return e if return_bag
e.to_hash
e
end

private_class_method :_parse_day, :_parse_time, # :_parse_beat,
:_parse_eu, :_parse_us, :_parse_iso, :_parse_iso2,
:_parse_jis, :_parse_vms, :_parse_sla, :_parse_dot,
:_parse_year, :_parse_mon, :_parse_mday, :_parse_ddd,
:_fast_parse

def self._parse(str, comp=true)
_fast_parse(str, comp).to_hash
end

def self._iso8601(str) # :nodoc:
Expand Down
2 changes: 1 addition & 1 deletion lib/19/time.rb
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ def make_time(year, mon, day, hour, min, sec, sec_fraction, zone, now)
#
def parse(date, now=self.now)
comp = !block_given?
d = Date._parse(date, comp, true)
d = Date.__send__ :_fast_parse, date, comp
if !d.year && !d.mon && !d.mday && !d.hour && !d.min && !d.sec && !d.sec_fraction
raise ArgumentError, "no time information in #{date.inspect}"
end
Expand Down
21 changes: 13 additions & 8 deletions lib/20/date/format.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1037,12 +1037,8 @@ def self._parse_ddd(str, e) # :nodoc:
end
end

private_class_method :_parse_day, :_parse_time, # :_parse_beat,
:_parse_eu, :_parse_us, :_parse_iso, :_parse_iso2,
:_parse_jis, :_parse_vms, :_parse_sla, :_parse_dot,
:_parse_year, :_parse_mon, :_parse_mday, :_parse_ddd

def self._parse(str, comp=true, return_bag=false)
# return an instance of Bag
def self._fast_parse(str, comp=true)
str = str.dup

e = Format::Bag.new
Expand Down Expand Up @@ -1105,8 +1101,17 @@ def self._parse(str, comp=true, return_bag=false)

e.offset ||= zone_to_diff(e.zone) if e.zone

return e if return_bag
e.to_hash
e
end

private_class_method :_parse_day, :_parse_time, # :_parse_beat,
:_parse_eu, :_parse_us, :_parse_iso, :_parse_iso2,
:_parse_jis, :_parse_vms, :_parse_sla, :_parse_dot,
:_parse_year, :_parse_mon, :_parse_mday, :_parse_ddd
:_fast_parse

def self._parse(str, comp=true)
_fast_parse(str, comp).to_hash
end

def self._iso8601(str) # :nodoc:
Expand Down
2 changes: 1 addition & 1 deletion lib/20/time.rb
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ def make_time(year, mon, day, hour, min, sec, sec_fraction, zone, now)
#
def parse(date, now=self.now)
comp = !block_given?
d = Date._parse(date, comp, true)
d = Date.__send__ :_fast_parse, date, comp
if !d.year && !d.mon && !d.mday && !d.hour && !d.min && !d.sec && !d.sec_fraction
raise ArgumentError, "no time information in #{date.inspect}"
end
Expand Down

0 comments on commit 1a09993

Please sign in to comment.