friendly_extensions 0.0.8 → 0.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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