as-extensions 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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 fshift
52
- [head,tail]
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(method_sym, *arguments, &block)
24
- if !is_a?(Array) && respond_to?(:to_a) then to_a.send(method_sym, *arguments, &block)
25
- else super end
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, *args, &blk)
24
- self.to_a.send(s, *args, &blk)
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(n,*a,&b)
64
- if ASE_ARRAY_METHODS.include?(n) then chars.to_a.send(n,*a,&b).join else super end
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(method_sym, *arguments, &block)
25
- to_s.send(method_sym, *arguments, &block)
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, dir=nil)
28
+ def require_part(part,dir=nil)
29
29
  orig = caller(1).first.split(':').first
30
- dir ||= File.join( File.dirname(orig), File.basename(orig, ".rb") )
30
+ dir ||= File.join(File.dirname(orig),File.basename(orig,".rb"))
31
31
  if part.is_a?(::Array)
32
- part.each do |p| require_part(p, dir) end
32
+ part.each{|p| require_part(p,dir)}
33
33
  else
34
- require File.join(dir, part)
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, dir=nil)
39
+ def require_ext(ext,dir=nil)
40
40
  orig = caller(1).first.split(':').first
41
- dir ||= File.join( File.dirname(File.dirname(orig)), 'ext' )
41
+ dir ||= File.join( File.dirname(File.dirname(orig)),"ext")
42
42
  if ext.is_a?(::Array)
43
- ext.each do |e| require_ext(e, dir) end
43
+ ext.each{|e| require_ext(e,dir)}
44
44
  else
45
- require File.join(dir, ext)
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) is necessary to bootstrap need()
52
- require_part %w{ extra-ext need }
53
- need 'logger'
54
- require_part 'log'
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{ active_support babosa fileutils map open-uri pathname uri set socket }
58
- need %w{ active_support/core_ext }
59
- require_part %w{ fs enum deep net test time ext-logic }
60
- require_ext %w{ array datetime dir enumerable file hash io object set socket string symbol time uri }
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
- ActiveSupport::const_set('Extension', ASE) unless ActiveSupport::const_defined?('Extension')
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
- - 0
9
- version: 0.1.0
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-04-23 00:00:00 +02:00
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