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 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