as-extensions 0.1.0 → 0.1.1
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.
- data/ext/array.rb +12 -4
- data/ext/base64.rb +21 -0
- data/ext/enumerable.rb +6 -5
- data/ext/set.rb +4 -4
- data/ext/string.rb +2 -2
- data/ext/symbol.rb +4 -4
- data/lib/as-extensions.rb +29 -24
- metadata +4 -3
data/ext/array.rb
CHANGED
@@ -44,12 +44,20 @@ Array.class_eval do
|
|
44
44
|
self[0] = x
|
45
45
|
end
|
46
46
|
|
47
|
-
def fpop
|
48
|
-
[last,init]
|
47
|
+
def fpop(n=nil)
|
48
|
+
n.nil? ? [last,init] : [self[(-n)..(-1)],self[0..(-(n+1))]]
|
49
49
|
end
|
50
50
|
|
51
|
-
def
|
52
|
-
|
51
|
+
def fpush(*a)
|
52
|
+
self+a
|
53
|
+
end
|
54
|
+
|
55
|
+
def fshift(n=nil)
|
56
|
+
n.nil? ? [head,tail] : [self[0..(n-1)],self[n..-1]]
|
57
|
+
end
|
58
|
+
|
59
|
+
def funshift(*a)
|
60
|
+
a+self
|
53
61
|
end
|
54
62
|
|
55
63
|
alias :head :first
|
data/ext/base64.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Base64.class_eval do
|
2
|
+
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def urlsafe_encode64(bin,no_padding=nil)
|
6
|
+
r = strict_encode64(bin).tr("+/", "-_")
|
7
|
+
2.times{r.chomp!('=')} if no_padding
|
8
|
+
r
|
9
|
+
end
|
10
|
+
|
11
|
+
def urlsafe_decode64(str,no_padding=nil)
|
12
|
+
t = if no_padding
|
13
|
+
case (str.size % 4)
|
14
|
+
when 2; "#{str}=="
|
15
|
+
when 3; "#{str}="
|
16
|
+
else str end
|
17
|
+
else str end
|
18
|
+
strict_decode64(t.tr("-_", "+/"))
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/ext/enumerable.rb
CHANGED
@@ -18,11 +18,12 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
Enumerable.class_eval do
|
21
|
-
|
21
|
+
|
22
22
|
# When a method doesn't exist, convert to an Array
|
23
|
-
def method_missing(
|
24
|
-
if
|
25
|
-
|
23
|
+
def method_missing(s,*args,&blk)
|
24
|
+
if [:to_str,:to_int].include?(s) || is_a?(Array) || !respond_to?(:to_a)
|
25
|
+
super
|
26
|
+
else to_a.send(s,*args,&blk) end
|
26
27
|
end
|
27
|
-
|
28
|
+
|
28
29
|
end
|
data/ext/set.rb
CHANGED
@@ -18,10 +18,10 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
Set.class_eval do
|
21
|
-
|
21
|
+
|
22
22
|
# If method doesn't exist, consider as an Array.
|
23
|
-
def method_missing(s
|
24
|
-
|
23
|
+
def method_missing(s,*args,&blk)
|
24
|
+
[:to_str,:to_int].include?(s) ? super : to_a.send(s,*args,&blk)
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
end
|
data/ext/string.rb
CHANGED
@@ -60,8 +60,8 @@ String.class_eval do
|
|
60
60
|
|
61
61
|
# Consider the String as an Array of chars for a few methods
|
62
62
|
if (RUBY_VERSION < "1.9")
|
63
|
-
def method_missing(
|
64
|
-
|
63
|
+
def method_missing(s,*args,&blk)
|
64
|
+
ASE_ARRAY_METHODS.include?(n) ? chars.to_a.send(s,*args,&blk).join : super
|
65
65
|
end
|
66
66
|
else
|
67
67
|
ASE_ARRAY_METHODS.each{|n| define_method(n){|*a,&b| chars.to_a.send(n,*a,&b).join}}
|
data/ext/symbol.rb
CHANGED
@@ -18,11 +18,11 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
Symbol.class_eval do
|
21
|
-
|
21
|
+
|
22
22
|
# When a method doesn't exist, consider the Symbol as a String
|
23
23
|
# Warning: this will *not* convert back to Symbol
|
24
|
-
def method_missing(
|
25
|
-
to_s.send(
|
24
|
+
def method_missing(s,*args,&blk)
|
25
|
+
[:to_str,:to_int].include?(s) ? super : to_s.send(s,*args,&blk)
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
end
|
data/lib/as-extensions.rb
CHANGED
@@ -21,44 +21,49 @@
|
|
21
21
|
$KCODE = "U" if (RUBY_VERSION < "1.9") && ($KCODE == "NONE")
|
22
22
|
|
23
23
|
module ASE
|
24
|
-
|
24
|
+
|
25
25
|
class << self
|
26
|
-
|
26
|
+
|
27
27
|
# Require a part / parts of a library
|
28
|
-
def require_part(part,
|
28
|
+
def require_part(part,dir=nil)
|
29
29
|
orig = caller(1).first.split(':').first
|
30
|
-
dir ||= File.join(
|
30
|
+
dir ||= File.join(File.dirname(orig),File.basename(orig,".rb"))
|
31
31
|
if part.is_a?(::Array)
|
32
|
-
part.each
|
32
|
+
part.each{|p| require_part(p,dir)}
|
33
33
|
else
|
34
|
-
require File.join(dir,
|
34
|
+
require File.join(dir,part)
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
# Require an extension / extensions of a library
|
39
|
-
def require_ext(ext,
|
39
|
+
def require_ext(ext,dir=nil)
|
40
40
|
orig = caller(1).first.split(':').first
|
41
|
-
dir ||= File.join( File.dirname(File.dirname(orig)),
|
41
|
+
dir ||= File.join( File.dirname(File.dirname(orig)),"ext")
|
42
42
|
if ext.is_a?(::Array)
|
43
|
-
ext.each
|
43
|
+
ext.each{|e| require_ext(e,dir)}
|
44
44
|
else
|
45
|
-
require File.join(dir,
|
45
|
+
require File.join(dir,ext)
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
end # class << self
|
50
|
-
|
51
|
-
# This loading order (extra-ext, need, logger, log)
|
52
|
-
|
53
|
-
need
|
54
|
-
|
55
|
-
|
50
|
+
|
51
|
+
# This loading order (extra-ext, need, logger, log)
|
52
|
+
# is necessary to bootstrap need()
|
53
|
+
require_part %w{extra-ext need}
|
54
|
+
need "logger"
|
55
|
+
require_part "log"
|
56
|
+
|
56
57
|
# Now we can load everything normally
|
57
|
-
need %w{
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
58
|
+
need %w{active_support babosa base64 fileutils map open-uri pathname uri
|
59
|
+
set socket}
|
60
|
+
need %w{active_support/core_ext}
|
61
|
+
require_part %w{fs enum deep net test time ext-logic}
|
62
|
+
require_ext %w{array base64 datetime dir enumerable file hash io object set
|
63
|
+
socket string symbol time uri}
|
64
|
+
|
62
65
|
end
|
63
66
|
|
64
|
-
|
67
|
+
unless ActiveSupport::const_defined?("Extension")
|
68
|
+
ActiveSupport::const_set("Extension",ASE)
|
69
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Pierre Chapuis
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-08-05 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -80,6 +80,7 @@ extra_rdoc_files:
|
|
80
80
|
- README.md
|
81
81
|
files:
|
82
82
|
- ext/array.rb
|
83
|
+
- ext/base64.rb
|
83
84
|
- ext/boolean.rb
|
84
85
|
- ext/datetime.rb
|
85
86
|
- ext/dir.rb
|