class N2W::Tel
Public Class Methods
number(x, s=" ")
click to toggle source
# File lib/n_2_w/tel.rb, line 76 def self.number(x, s=" ") a=x.to_s.split("") a.map! { |x| x.to_i } one={0=>"zero",1=>"one", 2=>"two", 3=>"three", 4=>"four", 5=>"five", 6=>"six", 7=>"seven", 8=>"eight", 9=>"nine"} two_r={1=>"ten",2=>"twenty",3=>"thirty",4=>"forty",5=>"fifty",6=>"sixty",7=>"seventy",8=>"eighty",9=>"ninety"} two_i={1=>"eleven", 2=>"twelve", 3=>"thirteen", 4=>"fourteen", 5=>"fifteen", 6=>"sixteen", 7=>"seventeen", 8=>"eighteen", 9=>"nineteen"} tnm=Proc.new do if a[-2]==a[-1] && a[-2]!=1 "double "+one[a[-2]] else if a[-2]==0 || a[-1]==0 one[a[-2]]+s+one[a[-1]] elsif a[-2]==1 && (a[-1]==1 || a[-1]==2) two_i[a[-1]] elsif a[-2]==1 && (a[-1]!=1 || a[-1]!=2) one[a[-2]]+s+one[a[-1]] elsif a[-2]==7 one[a[-2]]+s+one[a[-1]] else two_r[a[-2]]+s+one[a[-1]] end end end tnn=Proc.new do if a[-2]==a[-1] "double "+one[a[-2]] else if a[-2]==0 || a[-1]==0 one[a[-2]]+s+one[a[-1]] elsif a[-2]==1 && (a[-1]==1 || a[-1]==2) two_i[a[-1]] elsif a[-2]==1 && (a[-1]!=1 || a[-1]!=2) one[a[-2]]+s+one[a[-1]] elsif a[-2]==7 one[a[-2]]+s+one[a[-1]] else two_r[a[-2]]+s+one[a[-1]] end end end if x.length==1 return one[a[0]] elsif x.length==2 return tnm.call elsif x.length==3 if a[1]==a[2] && a[2]==a[0] return "triple"+s+one[a[0]] elsif a[0]==a[1] && a[1]!=a[2] return "double"+s+one[a[1]]+s+one[a[2]] elsif a[0]!=0 && a[1]==0 && a[2]==0 return (one[a[0]]+s+"hundred") elsif a[1]==3 || a[1]==9 || a[1]==6 || a[1]==8 return one[a[0]]+s+tnn.call else return one[a[0]]+s+one[a[1]]+s+one[a[2]] end end end
smarti(d)
click to toggle source
# File lib/n_2_w/tel.rb, line 14 def self.smarti d da=d.to_s.split "" da.map! { |x| if x=="0"||x=="1"||x=="2"||x=="3"||x=="4"||x=="5"||x=="6"||x=="7"||x=="8"||x=="9" x else "," end} daa=da.join("").split(","); daa.delete(""); d=daa.join a=d.enum_for(:scan, /(\d\d\d).{0,2}\1|(\d)\2\2|(\d)\3/).map { Regexp.last_match.begin(0) } b=d.enum_for(:scan, /(\d\d\d).{0,2}\1|(\d)\2\2|(\d)\3/).map { Regexp.last_match.end(0)-1 } e=[] da.delete(",") z=a.length for i in 0..(z-1) pp = da[a[i]..b[i]].join e << pp end e.map! {|x| tel_number x} d.gsub!(/(\d\d\d).{0,2}\1|(\d)\2\2|(\d)\3/,"-") d1=d.split("-").map! {|x| tel_number x } d1.delete "" d.gsub!(/\b\d*\b/," ").gsub!(" "," ") pr, de = 0, 0 ery=d.split("").map!{|x| if x==" " pr+=1 x=d1[(pr-1)] elsif x=="-" de+=1 x=e[de-1] end} ery.join ", " end
sortln(x)
click to toggle source
# File lib/n_2_w/tel.rb, line 4 def self.sortln(x) ab=x.to_s ap=ab.scan(/[^\d]/).count if ab.scan(/(\d\d\d).{0,2}\1|(\d)\2\2|(\d)\3/).count>1 smarti ab else tel_number ab end end
tel_number(x, s=" - ")
click to toggle source
# File lib/n_2_w/tel.rb, line 49 def self.tel_number(x, s=" - ") ab=x.to_s.split("") ae="" ab.map! do |x| if x=="0"||x=="1"||x=="2"||x=="3"||x=="4"||x=="5"||x=="6"||x=="7"||x=="8"||x=="9" x #elsif x=="+" # ae="your local international dial code plus, " else "," end end az=ab.join("").split(","); az.delete(""); az.map! do |x| if x.length>3 if x.length%2==0 x.split("").each_slice(2).to_a.map! {|x| number(x.join) }.join(", ") else x.split("").reverse.each_slice(3).to_a.map! {|x| x.reverse}.reverse.map! {|x| number(x.join)}.join(", ") end else number(x) end end az.join(", ") end