Class | OpenWFE::KotobaWfidGenerator |
In: |
lib/openwfe/expool/wfidgen.rb
|
Parent: | DefaultWfidGenerator |
This extension of DefaultWfidGenerator produces ids like "20070318-jonowoguya" or "20071224-jesoshimoha" that are a bit easier to grasp than full integer wfids.
Now relying on the ‘rufus-mnemo’ gem.
# File lib/openwfe/expool/wfidgen.rb, line 248 248: def self.from_time (t) 249: 250: to_string(t.to_f * 10 * 1000).to_i 251: end
This method is called by OpenWFE::split_wfid() when it has detected a wfid following the ‘kotoba’ scheme. Returns the ‘kotoba’ wfid split into its syllables
# File lib/openwfe/expool/wfidgen.rb, line 220 220: def self.split_wfid (wfid) 221: 222: Rufus::Mnemo::split(wfid[9..-1]) 223: end
That‘s here that the numeric wfid gets turned into a ‘kotoba’. A static method easily accessible by any.
# File lib/openwfe/expool/wfidgen.rb, line 204 204: def self.to_string (numeric_id) 205: 206: i = numeric_id % (10 * 1000 * 60 * 60 * 24) 207: t = Time.now.gmtime 208: 209: s = sprintf "%4d%02d%02d", t.year, t.month, t.day 210: s << "-" 211: s << Rufus::Mnemo::from_integer(i) 212: s 213: end
Turns a KotobaWfidGenerator produced wfid into a UTC date.
# File lib/openwfe/expool/wfidgen.rb, line 228 228: def self.to_time (wfid) 229: 230: year = wfid[0, 4] 231: month = wfid[4, 2] 232: day = wfid[6, 2] 233: 234: s = wfid[9..-1] 235: 236: i = Rufus::Mnemo::to_integer(s) 237: 238: hour = (i / (10000 * 60 * 60)) % 24 239: min = (i / (10000 * 60)) % 60 240: sec = (i / 10000) % 60 241: usec = (i * 100) % 1000000 242: 243: #puts "hms #{hour} #{min} #{sec} #{usec}" 244: 245: Time.utc(year, month, day, hour, min, sec, usec) 246: end
Overrides the to_string() method of the DefaultWfidGenerator,
# File lib/openwfe/expool/wfidgen.rb, line 195 195: def to_string (numeric_id) 196: 197: self.class.to_string(numeric_id) 198: end