friendly_extensions 0.0.8 → 0.0.61

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 29c0b1955597b587688ee28aa4ed2db4aa362e21
4
- data.tar.gz: e8877f694cd2e9f205cd0f5791ebcec25f0187d6
3
+ metadata.gz: ebc04c86f165e85cce604a03cbe21ffa685304e0
4
+ data.tar.gz: 3826585ee6fb0d1544bbde4e4b93519604a3a45b
5
5
  SHA512:
6
- metadata.gz: 14e5181cd8bf96edb76e90108ffaf724f62037f91098cc03ed23119e13d63f07e0ca41320f7e05e513e64887516208ebaea074fba7941d13d6d0febdd6fe1d40
7
- data.tar.gz: b10b32aa9e92e6737ff0c4635270547ecbc903b180d84896f15349c7fa4c4c68913065b62df48c0e95ca19decfb9f44a5f0e4cb84e430f827f721a0c59d68508
6
+ metadata.gz: 3dc232df0e30edef609b48f461b8fa099e5e33ff19172f0b6db7f42a3cad3a3e2ac398fdf0abb934946e899bff56da43bf68d9257be95ec30e61305a0a805c5d
7
+ data.tar.gz: eb1f47fa799d108f31025ac86c3fad18d77ba99d99e546530509efafc663f9589429957c6ef71dc56c9b9e8921e987a02a45a9041e94798560f4e03061f465de
data/lib/alphanumeric.rb CHANGED
@@ -3,10 +3,6 @@ module Alphanumeric
3
3
 
4
4
  # Give every year a letter
5
5
  # TODO: should be automatically computed
6
- LETTERS = "abcdefghijklmnopqrstuvwxyz".upcase.split('')
7
-
8
- START_YEAR = 1960
9
-
10
6
  YEAR_LETTERS = {
11
7
  2009 => "A",
12
8
  2010 => "B",
@@ -52,25 +48,8 @@ module Alphanumeric
52
48
  2050 => "PA",
53
49
  }
54
50
 
55
- def self.year_letter(year=Time.now.year, letters = LETTERS)
56
-
57
- steps = []
58
-
59
- d = (year - START_YEAR)
60
- n = d.fdiv(letters.size).ceil
61
- string = ""
62
-
63
- n.times do |i|
64
- # First
65
- if i == 0
66
- string << letters[d%letters.size]
67
- else
68
- x = d.fdiv(letters.size*(i+1)).round
69
- string << letters[x]
70
- end
71
- end
72
-
73
- return string
51
+ def self.year_letter(year=Time.now.year)
52
+ YEAR_LETTERS[year]
74
53
  end
75
54
 
76
55
  end
data/lib/array.rb CHANGED
@@ -16,20 +16,20 @@ module ArrayExt
16
16
  # Get avg. value from, either from numeric values or from
17
17
  # values from a object included in array
18
18
  def avg(attribute = nil)
19
- value = self
19
+ @value = self
20
20
  if attribute.nil?
21
- value.delete(nil)
22
- value = self.map {|r| r.to_f }
21
+ @value.delete(nil)
22
+ @value = self.map {|r| r.to_f }
23
23
  else
24
- value = self
24
+ @value = self
25
25
  # Bei fehlerhaften attribute wird nil gespeichert
26
- value = value.map {|r| r.send(attribute.to_sym).to_f rescue nil}
26
+ @value = @value.map {|r| r.send(attribute.to_sym).to_f rescue nil}
27
27
  # Leere Werte löschen
28
- value.delete(nil)
28
+ @value.delete(nil)
29
29
  end
30
- # Divide by zero ausschließen
31
- value.size == 0 ? size = 1 : size = value.size
32
- value.sum / size
30
+ # Divide by zero ausschliessen
31
+ @value.size == 0 ? size = 1 : size = @value.size
32
+ @value.sum / size
33
33
  end
34
34
 
35
35
 
@@ -134,15 +134,15 @@ module ArrayExt
134
134
 
135
135
  # break array into n arrays
136
136
  def seperate(n = 8)
137
- f = n
137
+ @f = n
138
138
  aks_size = self.size
139
- rest = aks_size % f
139
+ rest = aks_size % @f
140
140
 
141
- stack = ((aks_size - rest) / f)
141
+ @stack = ((aks_size - rest) / @f)
142
142
 
143
- arrays = (1..f).to_a
143
+ arrays = (1..@f).to_a
144
144
 
145
- arrays.map! {|i| self.first(stack*i).last(stack) }
145
+ arrays.map! {|i| self.first(@stack*i).last(@stack) }
146
146
  arrays[-1] += self.last(rest) if rest != 0
147
147
  #arrays.last.pop if (arrays.last.last.empty? || arrays.last.last.blank?)
148
148
  return arrays
@@ -164,7 +164,7 @@ module ArrayExt
164
164
  def to_sql
165
165
  return "(NULL)" if self.empty?
166
166
  if self.first.is_a?(Numeric)
167
- return "(#{self.compact.join(',')})"
167
+ return "(#{self.join(',')})"
168
168
  else
169
169
  return "(#{self.map{|i| "'#{i.to_s}'"}.join(',')})"
170
170
  end
@@ -199,82 +199,7 @@ module ArrayExt
199
199
  else
200
200
  self.join(sep)
201
201
  end
202
- end
203
-
204
-
205
- def interpolate(filtered_value = nil, options = {})
206
- begin
207
-
208
- int_start_value = nil
209
- int_end_value = nil
210
- int_from = 0
211
- int_to = 0
212
- int_steps = 0
213
-
214
- array_with_interpolation = []
215
-
216
- self.each_with_index do |x,i|
217
- if i > 0
218
- if x != filtered_value
219
- # Wenn der letze ein fehler war ist die strecke zuende
220
- if self[i-1] == filtered_value
221
-
222
- if i-1 == 0
223
- # Berechnung anstieg der linearfunktion zwischen Start-und Endpunkt
224
- #
225
- m = (self[i+1]-x)
226
-
227
- array_with_interpolation[0] = x-m
228
- array_with_interpolation << x
229
-
230
- else
231
- int_end_value = x
232
- int_to = i
233
-
234
- # Berechnung anstieg der linearfunktion zwischen Start-und Endpunkt
235
- m = (int_end_value-int_start_value).fdiv((int_to-int_from))
236
-
237
- # Fülle fehlende werte mit werten (y = mx + b)
238
- int_steps.times {|mi| array_with_interpolation << (int_start_value+((mi+1)*m)) }
239
- array_with_interpolation << int_end_value
240
-
241
- # Reset all values
242
- int_start_value = int_end_value
243
- int_end_value = nil
244
- int_from = 0
245
- int_to = 0
246
- int_steps = 0
247
- puts array_with_interpolation.inspect
248
- end
249
- else
250
- int_start_value = x
251
- array_with_interpolation << x
252
- end
253
- # Wenn letzer wert fehlerhaft
254
- elsif i == self.size-1 && x == filtered_value
255
- # Berechnung anstieg der linearfunktion zwischen Start-und Endpunkt
256
- # Berechnung über gesamtes array
257
- m = (array_with_interpolation.last-array_with_interpolation.first).fdiv(array_with_interpolation.size-1)
258
- array_with_interpolation << (array_with_interpolation.last+m)
259
- else
260
- int_steps += 1
261
- int_from = i-int_steps
262
- end
263
-
264
- else
265
- int_start_value = x
266
- array_with_interpolation << x
267
- end
268
-
269
- end
270
-
271
- return array_with_interpolation
272
- rescue
273
- puts "WARNING: Interpolation not possible!".red
274
- return self
275
- end
276
-
277
- end
202
+ end
278
203
 
279
204
  end
280
205
  end
@@ -1,14 +1,14 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  # All dit janze zeug laden
3
3
 
4
- require "friendly_extensions/engine"
5
-
6
4
  require "array"
5
+
7
6
  require "date_n_time"
8
7
  require "numbers"
9
8
  require "hash"
10
9
  require "string_and_more"
11
10
  require "boolean"
11
+
12
12
  require "nil_class"
13
13
 
14
14
  # SmartCurrency jetzt auch hier (26.03.2013, 16:30, Florian Eck)
data/lib/nil_class.rb CHANGED
@@ -1,12 +1,9 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  NilClass.class_eval do
3
3
 
4
- def to_euro(label = nil, options = {})
5
- "unbekannt"
4
+ def to_euro(options={})
5
+ return "?"
6
6
  end
7
7
 
8
- def to_de(label = nil, options = {})
9
- "unbekannt"
10
- end
11
8
 
12
9
  end
data/lib/numbers.rb CHANGED
@@ -2,14 +2,37 @@
2
2
  # Numeric Extensions
3
3
  module Numbers
4
4
 
5
+ # returns an array with all prime numbers up to limit
6
+ def self.prime_numbers(limit = 1_000_000, options = {:verbose => false})
7
+ i = 1; divisors = [2]; primzahlen = []
8
+ t = Time.now
9
+ while i <= limit do
10
+ p = true
11
+ divisors.each do |d|
12
+ if i%d == 0 && d != i
13
+ p = false
14
+ break
15
+ end
16
+ end
17
+
18
+ if p == true
19
+ puts i if options[:verbose] == true
20
+ primzahlen << i
21
+ end
22
+
23
+ i += 1
24
+ divisors << divisors.last+1
25
+ end
26
+
27
+ puts "Took #{(t-Time.now).abs.round(2)} sec." if options[:verbose] == true
28
+ return primzahlen
29
+ end
30
+
5
31
  Numeric.class_eval do
6
32
 
7
33
  # Convert Number to numeric german style with precision
8
34
  def to_euro(label = nil, options = {})
9
35
  options[:precision] ||= 2
10
-
11
- options[:precision] = 0 if options[:fix_int] == true && self.is_a?(Integer)
12
-
13
36
  result = ActionController::Base.helpers.number_with_precision(self, :precision => options[:precision], :separator => ",", :delimiter => ".")
14
37
 
15
38
  if options[:pre] == true && self > 0
@@ -28,11 +51,13 @@ module Numbers
28
51
 
29
52
  # Convert Number to numeric german style without precision
30
53
  def to_de(label=nil)
31
- self.to_euro(label, :precision => 0)
32
- end
33
-
34
- def to_a
35
- [self]
54
+ nr = self.round.to_i
55
+ result = ActionController::Base.helpers.number_with_precision(self, :precision => 0, :separator => ",", :delimiter => ".")
56
+ if !label.blank?
57
+ return [result, label].join("&nbsp;").html_safe
58
+ else
59
+ return result
60
+ end
36
61
  end
37
62
 
38
63
  # Inflate number, y = duration of years, f = percentage
@@ -70,12 +95,12 @@ module Numbers
70
95
 
71
96
  # tested
72
97
  def min(ref)
73
- [self.to_f, ref.to_f].min
98
+ [self, ref].min
74
99
  end
75
100
 
76
101
  # tested
77
102
  def max(ref)
78
- [self.to_f, ref.to_f].max
103
+ [self, ref].max
79
104
  end
80
105
 
81
106
  # Wert zwischen den Grenzen, ansonsten ober-oder unterkante
@@ -110,10 +135,6 @@ module Numbers
110
135
  return values.join(':')
111
136
  end
112
137
  end
113
-
114
- def deg2rad
115
- self * Math::PI / 180
116
- end
117
138
 
118
139
 
119
140
  end
@@ -140,33 +161,8 @@ module Numbers
140
161
  def days_to_months(options = {:s_days => "Tage", :s_months => "Monate", :s_sep => "und"})
141
162
  x = [self/30, self%30]
142
163
  "#{x[0]} #{options[:s_months]} #{options[:s_sep]} #{x[1]} #{options[:s_days]}"
143
- end
144
-
145
-
146
- # Split number in smallest prime factors
147
- def prime_factors(options = {})
148
- options[:nrs] ||= Math.sqrt(self).floor.prime_numbers
149
- options[:nrs].each_with_index do |n,i|
150
- if self%n == 0
151
- return [n, (self/n).prime_factors(:nrs => options[:nrs])].flatten.except(1)
152
- elsif i == options[:nrs].size-1
153
- return [self]
154
- end
155
- end
156
- end
157
-
158
- # Create list with prime numbers up to 'self'
159
- def prime_numbers
160
- s = (0..self).to_a
161
- s[0] = s[1] = nil
162
- s.each do |p|
163
- next unless p
164
- break if p * p > self
165
- (p*p).step(self, p) { |m| s[m] = nil }
166
- end
167
- s.compact
168
- end
169
-
164
+ end
165
+
170
166
  end
171
167
 
172
168
 
@@ -11,7 +11,7 @@ module SmartCurrency
11
11
  include InstanceMethods
12
12
  auto_attributes = []
13
13
  self.skip_time_zone_conversion_for_attributes = []
14
- attributes = self.columns.select {|c| (c.type == :integer || c.type == :decimal) && !c.name.match("id") }
14
+ attributes = self.columns.select {|c| (c.type == :integer || c.type == :decimal) && c.name != "id" }
15
15
 
16
16
  attributes.each do |a|
17
17
  define_method("#{a.name}=") do |val|
@@ -33,9 +33,7 @@ module SmartCurrency
33
33
  def currency_to_db(string)
34
34
  if string.is_a?(String)
35
35
  return (string.gsub(/\./, '').gsub(/,/, '.')).to_f
36
- elsif string.nil?
37
- return 0
38
- else
36
+ else
39
37
  return string
40
38
  end
41
39
  end
@@ -22,10 +22,6 @@ module StringAndMore
22
22
 
23
23
  # Array with all strings which can be encrypted
24
24
  STRING_BASE = STRING_CHARSETS.values.join("")
25
-
26
- # Encode String Base with custom secrect key
27
- #SHUFFLED_STRING_BASE = STRING_CHARSETS.values.sort_by {|y| STRING_CHARSETS.values.map.with_index {|x,i| STRING_BASE.split("").reverse[i].hex * x.hex }[STRING_CHARSETS.values.index(y)] }
28
-
29
25
 
30
26
  # Returns random String, for Passwords, Captachs etc..
31
27
  # could create :upcase, :downcase, :numbers or :all
@@ -44,10 +40,6 @@ module StringAndMore
44
40
  end
45
41
  return str
46
42
  end
47
-
48
- def self.email_message_id(mail_domain)
49
- "<#{Digest::SHA2.hexdigest(Time.now.to_i.to_s)}@#{mail_domain}>"
50
- end
51
43
 
52
44
 
53
45
  # Extract boolean status from string
@@ -60,21 +52,12 @@ module StringAndMore
60
52
  end
61
53
 
62
54
  # Create string with german date format to Date
63
- def to_date
64
- # Try German
65
- matched_date = self.match(/((0|1|2|3)[0-9]{1})\.(0[0-9]{1}|10|11|12)\.[0-9]{4}/)
55
+ def to_date
56
+ matched_date = self.match(/((0|1|2|3)[0-9]{1})\.(0[0-9]{1}|11|12)\.[0-9]{4}/)
57
+ raise ArgumentError, "String has no date like DD.MM.YYYY" if matched_date.nil?
66
58
 
67
- if !matched_date.nil?
68
- return Date.new(matched_date.to_s.split(".")[2].to_i, matched_date.to_s.split(".")[1].to_i, matched_date.to_s.split(".")[0].to_i)
69
- elsif matched_date.nil?
70
- matched_date = self.match(/[0-9]{4}-(0[0-9]{1}|10|11|12)-((0|1|2|3)[0-9]{1})/)
71
- if !matched_date.nil?
72
- return Date.new(matched_date.to_s.split("-")[0].to_i, matched_date.to_s.split("-")[1].to_i, matched_date.to_s.split("-")[2].to_i)
73
- end
74
- end
75
-
76
- raise ArgumentError, "String has no date like DD.MM.YYYY or YYYY-DD-MM" if matched_date.nil?
77
- end
59
+ Date.new(matched_date.to_s.split(".")[2].to_i, matched_date.to_s.split(".")[1].to_i, matched_date.to_s.split(".")[0].to_i)
60
+ end
78
61
 
79
62
 
80
63
  def to_number(type = :float)
@@ -89,28 +72,33 @@ module StringAndMore
89
72
  end
90
73
 
91
74
  def to_label(options = {:show_tooltip => false})
92
- if FriendsLabel.table_exists?
93
- l = FriendsLabel::LABELS[self]
94
- if l.nil?
95
- FriendsLabel.create(:label => self, :attribute_name => self)
96
- return self
97
- else
98
- unless options[:show_tooltip] == true
99
- return l[:label]
100
- else
101
- return l[:tooltip]
102
- end
103
- end
104
- else
105
- return self
106
- end
75
+ attribute = self
76
+ l = ConceptLabel::LABELS[attribute]
77
+ if l.nil?
78
+ ConceptLabel.create(:label => attribute, :attribute_name => attribute)# rescue nil
79
+ return attribute
80
+ else
81
+ unless options[:show_tooltip] == true
82
+ return l[:label]
83
+ else
84
+ return l[:tooltip]
85
+ end
86
+ end
107
87
  end
108
-
109
- def shuffle
110
- self.split("").sort_by {rand}.join.humanize
111
- end
112
88
 
113
89
 
90
+
91
+ def to_glossar(with = "", options = {:show_tooltip => false})
92
+ with ||= ""
93
+ attribute = self
94
+ l = Glossar.find_by_attribute_name(attribute)
95
+ if l.nil?
96
+ Glossar.create(:label => attribute, :attribute_name => attribute)
97
+ end
98
+
99
+ return "<a href='#glossar_#{attribute.parameterize}' class='glossarlink_small'>#{attribute}#{with}</a>".html_safe
100
+ end
101
+
114
102
  def to_foldername(sep = "_")
115
103
  # deutsch umlaute ersetzen
116
104
  parameterized_string = self.strip.gsub(/\ {2,}/ , " ").de_2_int
@@ -138,155 +126,143 @@ module StringAndMore
138
126
  return str
139
127
  end
140
128
 
141
- def limit(l=20)
142
- if self.size > l
143
- s = self.size
144
- s2 = (((self.size-1)/2).round)
145
- first = self.slice(0..s2)
129
+ def limit(l=20)
130
+ if self.size > l
131
+ s = self.size
132
+ s2 = (((self.size-1)/2).round)
133
+ first = self.slice(0..s2)
146
134
  last = self.slice(s2+1..-1)
147
135
 
148
136
  l1 = (l/2).round
149
137
 
150
- "#{first.first(l1)}...#{last.last(l1)}"
151
- else
152
- return self
153
- end
154
- end
138
+ "#{first.first(l1)}...#{last.last(l1)}"
139
+ else
140
+ return self
141
+ end
142
+ end
155
143
 
156
144
 
157
145
 
158
146
 
159
- def to_datetime
160
- date = self.split(" ").first
161
- time = self.split(" ").last.split(":")
162
- DateTime.new(date.split(".")[2].to_i, date.split(".")[1].to_i, date.split(".")[0].to_i, time.first.to_i, time.last.to_i)
163
- end
147
+ def to_datetime
148
+ date = self.split(" ").first
149
+ time = self.split(" ").last.split(":")
150
+ DateTime.new(date.split(".")[2].to_i, date.split(".")[1].to_i, date.split(".")[0].to_i, time.first.to_i, time.last.to_i)
151
+ end
164
152
 
165
153
 
166
- def clear_html(options = {})
167
- ActionView::Base.full_sanitizer.sanitize(self, :tags => options[:tags] )
168
- end
154
+ def clear_html(options = {})
155
+ ActionView::Base.full_sanitizer.sanitize(self, :tags => options[:tags] )
156
+ end
169
157
 
170
- def replace_html(from, to)
171
- new_text = self
172
- new_text = new_text.gsub("<#{from}>", "<#{to}>")
158
+ def replace_html(from, to)
159
+ new_text = self
160
+ new_text = new_text.gsub("<#{from}>", "<#{to}>")
173
161
  new_text = new_text.gsub("</#{from}>", "</#{to}>")
174
162
  return new_text
175
- end
163
+ end
176
164
 
177
- def to_model
165
+ def to_model
178
166
  self.singularize.camelize.constantize
179
- end
167
+ end
180
168
 
181
- def to_a
182
- return [self]
183
- end
169
+ def to_a
170
+ return [self]
171
+ end
184
172
 
185
- #== HTML Styling
173
+ #== HTML Styling
186
174
  # as the function names say
187
175
 
188
- def bold
176
+ def bold
189
177
  "<b>#{self}</b>".html_safe
190
- end
178
+ end
191
179
 
192
- def ital
180
+ def ital
193
181
  "<i>#{self}</i>".html_safe
194
- end
182
+ end
195
183
 
196
- def span
184
+ def span
197
185
  "<span>#{self}</span>".html_safe
198
- end
186
+ end
199
187
 
200
- def uline
188
+ def uline
201
189
  "<u>#{self}</u>".html_safe
202
- end
190
+ end
203
191
 
204
192
  def nbsp
205
193
  self.gsub(" ", "&nbsp;").html_safe
206
194
  end
207
195
 
208
- def replace_entities(mode = :html, options = {})
209
- str = self
210
- Chars2Remove::ENTITIES.each do |orig, rep|
211
- str = str.gsub(orig, rep[mode])
212
- end
213
- return str.html_safe
214
- end
196
+ def replace_entities(mode = :html)
197
+ str = self
198
+ Chars2Remove::ENTITIES.each do |orig, rep|
199
+ str = str.gsub(orig, rep[mode])
200
+ end
201
+ return str.html_safe
202
+ end
215
203
 
216
- def add_brs
217
- return self.gsub("\n", "<br />")
218
- end
204
+ def add_brs
205
+ return self.gsub("\n", "<br />")
206
+ end
219
207
 
220
- #== colorization in console
208
+ #== colorization in console
221
209
 
222
- def colorize(color_code)
223
- "\e[#{color_code};40m#{self}\e[0m"
224
- end
210
+ def colorize(color_code)
211
+ "\e[#{color_code};40m#{self}\e[0m"
212
+ end
225
213
 
226
- def red
227
- colorize(31)
228
- end
214
+ def red
215
+ colorize(31)
216
+ end
229
217
 
230
- def green
231
- colorize(32)
232
- end
218
+ def green
219
+ colorize(32)
220
+ end
233
221
 
234
- def yellow
235
- colorize(33)
236
- end
222
+ def yellow
223
+ colorize(33)
224
+ end
237
225
 
238
- def pink
239
- colorize(35)
240
- end
226
+ def pink
227
+ colorize(35)
228
+ end
241
229
 
242
230
 
243
- #== Numerische encription
244
- # cool thing for simple encrypt and decrypt strings
231
+ #== Numerische encription
232
+ # cool thing for simple encrypt and decrypt strings
245
233
 
246
- def numberize(options = {})
247
- # Basisarray das alle zeichen enthält die verschlüsselt werden können
248
- string_array = STRING_BASE.split("")
249
-
250
- if options[:token]
251
- string_array = string_array.sort_by {|x| x.hash*options[:token].inspect.bytes.join("").to_i}
252
- end
253
-
254
- # Nur Zahlen und buchstaben für die verschlüsselung/mix nehmen wg. URLs
255
- string_array_filtered = string_array.select {|s| !s.match(/[a-zA-Z0-9\-_]/).nil? }
256
- splitted = self.split("")
234
+ def numberize(options = {})
235
+ # Basisarray das alle zeichen enthält die verschlüsselt werden können
236
+ string_array = STRING_BASE.split("")
237
+
238
+ # Nur Zahlen und buchstaben für die verschlüsselung/mix nehmen wg. URLs
239
+ string_array_filtered = string_array.select {|s| !s.match(/[a-zA-Z0-9\-_]/).nil? }
240
+ splitted = self.split("")
257
241
 
258
- numbered_string = ""
242
+ numbered_string = ""
259
243
 
260
- splitted.each do |s|
261
- position = string_array.index(s)
262
- if !position.nil?
263
- numbered_string << (position.to_s.rjust(2, "0")+string_array_filtered[rand(string_array_filtered.size-1)])
264
- end
265
- end
244
+ splitted.each do |s|
245
+ position = string_array.index(s)
246
+ if !position.nil?
247
+ numbered_string << (position.to_s.rjust(2, "0")+string_array_filtered[rand(string_array_filtered.size-1)])
248
+ end
249
+ end
266
250
 
267
- return options[:base_64] == true ? Base64.encode64(numbered_string) : numbered_string
268
- end
251
+ return options[:base_64] == true ? Base64.encode64(numbered_string) : numbered_string
252
+ end
269
253
 
270
- def denumberize(options = {})
271
- string_array = STRING_BASE.split("")
272
-
273
- if options[:token]
274
- string_array = string_array.sort_by {|x| x.hash*options[:token].inspect.bytes.join("").to_i}
275
- end
276
-
277
- real_string = ""
278
- (options[:base_64] == true ? Base64.decode64(self) : self ).scan(/[0-9]{2}.{1}/).each do |s|
279
- real_string << string_array[s.first(2).to_i]
280
- end
281
- return real_string
282
- end
283
-
284
-
285
-
254
+ def denumberize(options = {})
255
+ string_array = STRING_BASE.split("")
256
+ real_string = ""
257
+ (options[:base_64] == true ? Base64.decode64(self) : self ).scan(/[0-9]{2}.{1}/).each do |s|
258
+ real_string << string_array[s.first(2).to_i]
259
+ end
260
+ return real_string
261
+ end
286
262
 
287
263
 
264
+
288
265
  end
289
-
290
266
 
291
267
  Symbol.class_eval do
292
268