friendly_extensions 0.0.66 → 0.0.69

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/string_and_more.rb +107 -91
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: beaab51fa38a34324b21d2870403e656aac2cb7b
4
- data.tar.gz: 678e03682c2a930971c13bb10719e5ee8cc64255
3
+ metadata.gz: c725237024baa680e26dfdb5d18efdc1a4a68fd3
4
+ data.tar.gz: 913e3aeeca23e2695134b9714b440a80da38306b
5
5
  SHA512:
6
- metadata.gz: e125164853958b09b6be5ee0018aad8dfc6bd3c0f9f2e25fe23a495a7b1b9324195f9fa18d1badf903c3a10b698f789e9f01323c103d39398f410ba653d3c750
7
- data.tar.gz: 3454e702a99f234eb593ad977c10e6c91389b86db06905e81617e4b478d2f57a66b6154b4ebf8114affb4128f978dc9aba0b59c4de2931d757d5bbbe5a21250c
6
+ metadata.gz: e35b6b2cc1dacc8ff9c7f509dceadfed154392d48c14568201a3387bc83dce55721d529accbd0de48fc19d52d4d0732109e7cd9aceba11b3316be00af8974f18
7
+ data.tar.gz: 3124a5eb010a03f4ed34984aa2336823c6c8435fd27de812cf33e8a74692618ab64ffc576ac017a782c0a87bde8b70ea22337679b1a272760cc26895fa95f858
@@ -22,6 +22,10 @@ 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
+
25
29
 
26
30
  # Returns random String, for Passwords, Captachs etc..
27
31
  # could create :upcase, :downcase, :numbers or :all
@@ -56,7 +60,7 @@ module StringAndMore
56
60
  end
57
61
 
58
62
  # Create string with german date format to Date
59
- def to_date
63
+ def to_date
60
64
  # Try German
61
65
  matched_date = self.match(/((0|1|2|3)[0-9]{1})\.(0[0-9]{1}|10|11|12)\.[0-9]{4}/)
62
66
 
@@ -70,7 +74,7 @@ module StringAndMore
70
74
  end
71
75
 
72
76
  raise ArgumentError, "String has no date like DD.MM.YYYY or YYYY-DD-MM" if matched_date.nil?
73
- end
77
+ end
74
78
 
75
79
 
76
80
  def to_number(type = :float)
@@ -134,143 +138,155 @@ module StringAndMore
134
138
  return str
135
139
  end
136
140
 
137
- def limit(l=20)
138
- if self.size > l
139
- s = self.size
140
- s2 = (((self.size-1)/2).round)
141
- first = self.slice(0..s2)
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)
142
146
  last = self.slice(s2+1..-1)
143
147
 
144
148
  l1 = (l/2).round
145
149
 
146
- "#{first.first(l1)}...#{last.last(l1)}"
147
- else
148
- return self
149
- end
150
- end
150
+ "#{first.first(l1)}...#{last.last(l1)}"
151
+ else
152
+ return self
153
+ end
154
+ end
151
155
 
152
156
 
153
157
 
154
158
 
155
- def to_datetime
156
- date = self.split(" ").first
157
- time = self.split(" ").last.split(":")
158
- 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)
159
- end
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
160
164
 
161
165
 
162
- def clear_html(options = {})
163
- ActionView::Base.full_sanitizer.sanitize(self, :tags => options[:tags] )
164
- end
166
+ def clear_html(options = {})
167
+ ActionView::Base.full_sanitizer.sanitize(self, :tags => options[:tags] )
168
+ end
165
169
 
166
- def replace_html(from, to)
167
- new_text = self
168
- new_text = new_text.gsub("<#{from}>", "<#{to}>")
170
+ def replace_html(from, to)
171
+ new_text = self
172
+ new_text = new_text.gsub("<#{from}>", "<#{to}>")
169
173
  new_text = new_text.gsub("</#{from}>", "</#{to}>")
170
174
  return new_text
171
- end
175
+ end
172
176
 
173
- def to_model
177
+ def to_model
174
178
  self.singularize.camelize.constantize
175
- end
179
+ end
176
180
 
177
- def to_a
178
- return [self]
179
- end
181
+ def to_a
182
+ return [self]
183
+ end
180
184
 
181
- #== HTML Styling
185
+ #== HTML Styling
182
186
  # as the function names say
183
187
 
184
- def bold
188
+ def bold
185
189
  "<b>#{self}</b>".html_safe
186
- end
190
+ end
187
191
 
188
- def ital
192
+ def ital
189
193
  "<i>#{self}</i>".html_safe
190
- end
194
+ end
191
195
 
192
- def span
196
+ def span
193
197
  "<span>#{self}</span>".html_safe
194
- end
198
+ end
195
199
 
196
- def uline
200
+ def uline
197
201
  "<u>#{self}</u>".html_safe
198
- end
202
+ end
199
203
 
200
204
  def nbsp
201
205
  self.gsub(" ", "&nbsp;").html_safe
202
206
  end
203
207
 
204
- def replace_entities(mode = :html, options = {})
205
- str = self
206
- Chars2Remove::ENTITIES.each do |orig, rep|
207
- str = str.gsub(orig, rep[mode])
208
- end
209
- return str.html_safe
210
- end
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
211
215
 
212
- def add_brs
213
- return self.gsub("\n", "<br />")
214
- end
216
+ def add_brs
217
+ return self.gsub("\n", "<br />")
218
+ end
215
219
 
216
- #== colorization in console
220
+ #== colorization in console
217
221
 
218
- def colorize(color_code)
219
- "\e[#{color_code};40m#{self}\e[0m"
220
- end
222
+ def colorize(color_code)
223
+ "\e[#{color_code};40m#{self}\e[0m"
224
+ end
221
225
 
222
- def red
223
- colorize(31)
224
- end
226
+ def red
227
+ colorize(31)
228
+ end
225
229
 
226
- def green
227
- colorize(32)
228
- end
230
+ def green
231
+ colorize(32)
232
+ end
229
233
 
230
- def yellow
231
- colorize(33)
232
- end
234
+ def yellow
235
+ colorize(33)
236
+ end
233
237
 
234
- def pink
235
- colorize(35)
236
- end
238
+ def pink
239
+ colorize(35)
240
+ end
237
241
 
238
242
 
239
- #== Numerische encription
240
- # cool thing for simple encrypt and decrypt strings
243
+ #== Numerische encription
244
+ # cool thing for simple encrypt and decrypt strings
241
245
 
242
- def numberize(options = {})
243
- # Basisarray das alle zeichen enthält die verschlüsselt werden können
244
- string_array = STRING_BASE.split("")
245
-
246
- # Nur Zahlen und buchstaben für die verschlüsselung/mix nehmen wg. URLs
247
- string_array_filtered = string_array.select {|s| !s.match(/[a-zA-Z0-9\-_]/).nil? }
248
- splitted = self.split("")
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("")
249
257
 
250
- numbered_string = ""
258
+ numbered_string = ""
251
259
 
252
- splitted.each do |s|
253
- position = string_array.index(s)
254
- if !position.nil?
255
- numbered_string << (position.to_s.rjust(2, "0")+string_array_filtered[rand(string_array_filtered.size-1)])
256
- end
257
- end
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
258
266
 
259
- return options[:base_64] == true ? Base64.encode64(numbered_string) : numbered_string
260
- end
267
+ return options[:base_64] == true ? Base64.encode64(numbered_string) : numbered_string
268
+ end
261
269
 
262
- def denumberize(options = {})
263
- string_array = STRING_BASE.split("")
264
- real_string = ""
265
- (options[:base_64] == true ? Base64.decode64(self) : self ).scan(/[0-9]{2}.{1}/).each do |s|
266
- real_string << string_array[s.first(2).to_i]
267
- end
268
- return real_string
269
- end
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
+
270
286
 
271
287
 
272
-
273
288
  end
289
+
274
290
 
275
291
  Symbol.class_eval do
276
292
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: friendly_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.66
4
+ version: 0.0.69
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Eck
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-26 00:00:00.000000000 Z
11
+ date: 2014-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails