quality_extensions 1.0.0 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/Readme +11 -2
  2. data/lib/quality_extensions/array/classify.rb +1 -1
  3. data/lib/quality_extensions/array/expand_ranges.rb +1 -1
  4. data/lib/quality_extensions/array/group_by.rb +1 -1
  5. data/lib/quality_extensions/array/shell_escape.rb +6 -8
  6. data/lib/quality_extensions/colored/toggleability.rb +1 -1
  7. data/lib/quality_extensions/console/command.rb +1 -1
  8. data/lib/quality_extensions/date/iso8601.rb +1 -1
  9. data/lib/quality_extensions/enumerable/map_with_index.rb +55 -0
  10. data/lib/quality_extensions/exception/inspect_with_backtrace.rb +1 -1
  11. data/lib/quality_extensions/hash/assert_has_only_keys.rb +1 -1
  12. data/lib/quality_extensions/hash/to_query_string.rb +1 -1
  13. data/lib/quality_extensions/kernel/capture_output.rb +1 -1
  14. data/lib/quality_extensions/kernel/die.rb +2 -2
  15. data/lib/quality_extensions/kernel/example_printer.rb +1 -1
  16. data/lib/quality_extensions/kernel/remove_const.rb +1 -1
  17. data/lib/quality_extensions/kernel/remove_module.rb +1 -1
  18. data/lib/quality_extensions/kernel/require_all.rb +3 -3
  19. data/lib/quality_extensions/kernel/require_once.rb +1 -1
  20. data/lib/quality_extensions/kernel/simulate_input.rb +1 -1
  21. data/lib/quality_extensions/kernel/trap_chain.rb +1 -1
  22. data/lib/quality_extensions/module/alias_method_chain.rb +1 -1
  23. data/lib/quality_extensions/module/basename.rb +1 -1
  24. data/lib/quality_extensions/module/bool_attr_accessor.rb +1 -1
  25. data/lib/quality_extensions/module/class_methods.rb +1 -1
  26. data/lib/quality_extensions/module/create.rb +2 -2
  27. data/lib/quality_extensions/module/guard_method.rb +1 -3
  28. data/lib/quality_extensions/module/initializer.rb +72 -0
  29. data/lib/quality_extensions/module/join.rb +1 -1
  30. data/lib/quality_extensions/module/malias_method_chain.rb +1 -1
  31. data/lib/quality_extensions/module/namespace.rb +1 -2
  32. data/lib/quality_extensions/module/parents.rb +1 -1
  33. data/lib/quality_extensions/module/remove_const.rb +2 -2
  34. data/lib/quality_extensions/module/split.rb +1 -1
  35. data/lib/quality_extensions/nil_method_missing.rb +1 -1
  36. data/lib/quality_extensions/object/ancestry_of_method.rb +1 -1
  37. data/lib/quality_extensions/object/if_else.rb +1 -1
  38. data/lib/quality_extensions/object/ignore_access.rb +1 -1
  39. data/lib/quality_extensions/object/mcall.rb +1 -1
  40. data/lib/quality_extensions/object/methods.rb +1 -1
  41. data/lib/quality_extensions/object/send_if.rb +1 -1
  42. data/lib/quality_extensions/object/singleton_send.rb +1 -1
  43. data/lib/quality_extensions/safe_nil.rb +1 -1
  44. data/lib/quality_extensions/string/each_char_with_index.rb +1 -1
  45. data/lib/quality_extensions/string/shell_escape.rb +10 -3
  46. data/lib/quality_extensions/string/with_knowledge_of_color.rb +1 -1
  47. data/lib/quality_extensions/symbol/constantize.rb +1 -1
  48. data/lib/quality_extensions/symbol/match.rb +1 -1
  49. data/lib/quality_extensions/template.rb +1 -1
  50. data/lib/quality_extensions/test/difference_highlighting.rb +1 -1
  51. metadata +4 -2
data/Readme CHANGED
@@ -3,11 +3,14 @@
3
3
  [<b>Home page</b>:] http://quality-ext.rubyforge.org/
4
4
  [<b>Project site</b>:] http://rubyforge.org/projects/quality-ext/
5
5
  [<b>Gem install</b>:] <tt>gem install quality_extensions</tt>
6
+ [<b>Author</b>:] Tyler Rick <rubyforge.org|tylerrick.com> and others
6
7
  [<b>License</b>:] {Ruby License}[link:files/License.html]
7
8
 
8
9
  == Introduction
9
10
 
10
- This is a library of miscellaneous general-purpose, reusable Ruby code, quite similar in purpose and layout to {Ruby Facets}[http://facets.rubyforge.org/]. It is certainly not meant to _compete_ with Facets though!
11
+ QualityExtensions is a library of general-purpose, reusable methods/classes that are compatible with/built-upon Facets (2.4.1) but not (yet) included in Facets... including FileTest.binary_file?, Enumerable#enum, String#digits_only, send_if_not_nil, send_if_true, send_unless, Kernel#capture_output, Kernel#backtrace, Symbol#=~, Hash#hash_select, Hash#delete_unless, Array#expand_ranges, assert_changed, assert_contains, and many more.
12
+
13
+ It is similar in purpose and layout to {Ruby Facets}[http://facets.rubyforge.org/] but not intended _compete_ with Facets.
11
14
 
12
15
  Developers are encouraged to first check if the method or class they are looking for already exists in one of the fine existing open-source projects (like {Facets}[http://facets.rubyforge.org/] or {Extensions}[http://extensions.rubyforge.org/rdoc/index.html] or {stdlib}[http://www.ruby-doc.org/stdlib/]).
13
16
 
@@ -17,9 +20,15 @@ Like Facets, this library contains:
17
20
  * methods that add functionality to existing Ruby classes (String, Array, etc.)
18
21
  * as well as new classes that aren't in core Ruby
19
22
 
23
+ == Featured methods
24
+
25
+ * <tt>Regexp#+</tt>, <tt>Regexp#join</tt>
26
+ * <tt>guard_method</tt>/<tt>mguard_method</tt>
27
+ * ...
28
+
20
29
  == Installation
21
30
 
22
- gem install quality_extensions
31
+ gem install quality_extensions -y
23
32
 
24
33
  == Usage
25
34
 
@@ -10,7 +10,7 @@
10
10
  # column from the array, which can be nice, since the classification key in the hash makes it somewhat redundant.
11
11
  #++
12
12
 
13
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
13
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
14
14
  require 'rubygems'
15
15
  gem 'facets'
16
16
  require 'facets/to_hash'
@@ -5,7 +5,7 @@
5
5
  # Submit to Facets?:: Yes.
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
  require 'rubygems'
10
10
  require 'facets/kernel/silence'
11
11
 
@@ -10,7 +10,7 @@
10
10
  # *not* in "table" form (whose elements are *not* all arrays of equal size and might not even be *arrays*).
11
11
  #++
12
12
 
13
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
13
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
14
14
  require 'rubygems'
15
15
  gem 'facets'
16
16
  require 'facets/array/delete'
@@ -5,16 +5,16 @@
5
5
  # Submit to Facets?:: Yes.
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
  require 'rubygems'
10
10
  require 'facets/ruby' # to_proc
11
11
  require 'facets/kernel/load'
12
12
  require_local '../string/shell_escape.rb'
13
13
 
14
+ require 'pp'
14
15
  class Array
15
16
  def shell_escape
16
- #self.map(&:shell_escape)
17
- Escape.shell_command(self)
17
+ self.map(&:shell_escape).map(&:to_s)
18
18
  end
19
19
  end
20
20
 
@@ -29,13 +29,11 @@ require 'test/unit'
29
29
 
30
30
  class TheTest < Test::Unit::TestCase
31
31
  def test_1
32
- assert_equal 'a', ['a'].shell_escape.to_s
32
+ assert_equal ['a'], ['a'].shell_escape
33
33
  end
34
34
  def test_2
35
- #assert_equal ["arg1", "'multiple words for single argument'"],
36
- # ['arg1', 'multiple words for single argument'].shell_escape.to_s
37
- assert_equal "arg1 'multiple words for single argument'",
38
- ['arg1', 'multiple words for single argument'].shell_escape.to_s
35
+ assert_equal ["arg1", "'multiple words for single argument'"],
36
+ ['arg1', 'multiple words for single argument'].shell_escape
39
37
  end
40
38
  end
41
39
  =end
@@ -6,7 +6,7 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  require 'rubygems'
11
11
  gem 'colored'
12
12
  require 'colored'
@@ -29,7 +29,7 @@
29
29
  # Copyright:: Copyright (c) 2005-2007
30
30
  # License:: Ruby License
31
31
 
32
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
32
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
33
33
  require 'shellwords'
34
34
  require 'rubygems'
35
35
  require 'facets/style' #modulize
@@ -5,7 +5,7 @@
5
5
  # Submit to Facets?:: Yes.
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
  require 'date'
10
10
  require 'rubygems'
11
11
  require 'facets/date'
@@ -0,0 +1,55 @@
1
+ #--
2
+ # Author:: vinterbleg <http://snippets.dzone.com/posts/show/5119>, Tyler Rick
3
+ # Copyright:: Copyright (c) Its authors.
4
+ # License:: Ruby License
5
+ # Submit to Facets?:: Yes. facets/enumerable/collect.rb only has non-in-place version (map_with_index).
6
+ # Developer notes::
7
+ # Changes::
8
+ #++
9
+
10
+ module Enumerable
11
+ def map_with_index!
12
+ each_with_index do |e, i|
13
+ self[i] = yield(e, i)
14
+ end
15
+ end
16
+
17
+ def map_with_index(&block)
18
+ dup.map_with_index!(&block)
19
+ end
20
+ end
21
+
22
+
23
+ # _____ _
24
+ # |_ _|__ ___| |_
25
+ # | |/ _ \/ __| __|
26
+ # | | __/\__ \ |_
27
+ # |_|\___||___/\__|
28
+ #
29
+ =begin test
30
+ require 'test/unit'
31
+
32
+ class NonInPlaceTest < Test::Unit::TestCase
33
+ def test_1
34
+ array = ['a', 'b']
35
+ after = array.map_with_index do |e, i|
36
+ e.upcase + array[i+1].to_s
37
+ end
38
+ assert_equal ['Ab', 'B'], after
39
+ assert_equal ['a', 'b'], array
40
+ end
41
+ end
42
+
43
+ class InPlaceTest < Test::Unit::TestCase
44
+ def test_1
45
+ array = ['a', 'b']
46
+ after = array.map_with_index! do |e, i|
47
+ e.upcase + array[i+1].to_s
48
+ end
49
+ assert_equal ['Ab', 'B'], after
50
+ assert_equal after, array
51
+ end
52
+ end
53
+ =end
54
+
55
+
@@ -7,7 +7,7 @@
7
7
  # * Add depth argument to inspect()?
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
  require 'rubygems'
12
12
  require 'facets/module/alias'
13
13
 
@@ -6,7 +6,7 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  require 'rubygems'
11
11
  require 'facets/hash/keys'
12
12
 
@@ -5,7 +5,7 @@
5
5
  # Submit to Facets?:: Yes.
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
  autoload :CGI, 'cgi'
10
10
  require 'rubygems'
11
11
  require 'facets/kernel/load'
@@ -17,7 +17,7 @@
17
17
  # stream.reopen(old_stream)
18
18
  # end
19
19
 
20
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
20
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
21
21
  require 'stringio'
22
22
  require 'rubygems'
23
23
  require 'facets/dictionary'
@@ -6,7 +6,7 @@
6
6
  # Deprecated. Because I discovered Kernel::abort !
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  module Kernel
11
11
  def die(message, exit_code = 1)
12
12
  $stderr.puts message
@@ -21,7 +21,7 @@ end
21
21
  # |_|\___||___/\__|
22
22
  #
23
23
  =begin test
24
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
24
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
25
25
  require 'test/unit'
26
26
  require 'rubygems'
27
27
  require 'quality_extensions/kernel/capture_output'
@@ -11,7 +11,7 @@
11
11
  # * Add class method for ExamplePrinter to set a template for use by xmp? So if you don't like the default ("=> #{result}"), you can specify your own...
12
12
  #++
13
13
 
14
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
14
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
15
15
  require 'rubygems'
16
16
  #require 'facets/binding/self/of_caller'
17
17
 
@@ -6,7 +6,7 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  require 'rubygems'
11
11
  require 'quality_extensions/object/ignore_access'
12
12
  require 'quality_extensions/module/split'
@@ -7,7 +7,7 @@
7
7
  # * Deprecated by quality_extensions/module/remove.rb
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
  require 'rubygems'
12
12
  require 'quality_extensions/object/ignore_access'
13
13
  require 'quality_extensions/module/split'
@@ -5,7 +5,7 @@
5
5
  # Submit to Facets?:: Yes
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
  require 'rubygems'
10
10
  require 'facets/filelist'
11
11
 
@@ -50,7 +50,7 @@ module Kernel
50
50
  # <tt>require</tt>s all Ruby files in +dir+ (relative to <tt>File.dirname(__FILE__)</tt>) or any of its subdirectories.
51
51
  #
52
52
  # This is just a shortcut for this:
53
- # require_all File.join(File.dirname(__FILE__), dir)
53
+ # require_all File.expand_path(File.join(File.dirname(__FILE__), dir))
54
54
  #
55
55
  # All of the +options+ available for +require_all+ are still available here.
56
56
  #
@@ -58,7 +58,7 @@ module Kernel
58
58
  raise ArgumentError.new("dir must be a String") unless dir.is_a?(String)
59
59
  local_dir = File.dirname( caller[0] )
60
60
  require_all(
61
- File.join(local_dir, dir),
61
+ File.expand_path(File.join(local_dir, dir)),
62
62
  options
63
63
  )
64
64
  end
@@ -5,7 +5,7 @@
5
5
  # Submit to Facets?:: No, not yet
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
  require 'rubygems'
10
10
 
11
11
  module Kernel
@@ -6,7 +6,7 @@
6
6
  # Developer notes:
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  require 'stringio'
11
11
  require 'rubygems'
12
12
 
@@ -5,7 +5,7 @@
5
5
  # Submit to Facets?:: Yes!
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
 
10
10
  module Kernel
11
11
  # Calling <tt>Kernel#trap()</tt> by itself will _replace_ any previously registered handler code.
@@ -7,7 +7,7 @@
7
7
  # Changes::
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
  require 'rubygems'
12
12
  gem 'facets'
13
13
  require 'facets/module/alias'
@@ -7,7 +7,7 @@
7
7
  # Changes::
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
  require 'rubygems'
12
12
  require 'facets/module/basename'
13
13
  require 'quality_extensions/module/namespace'
@@ -12,7 +12,7 @@
12
12
  # * Changed it so that if you call a!(false) it would actually set @a to false rather than leaving it unchanged. (I assume that was a bug.)
13
13
  #++
14
14
 
15
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
15
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
16
16
 
17
17
  # bool_attr_accessor
18
18
 
@@ -6,7 +6,7 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
 
11
11
  class Object
12
12
 
@@ -23,10 +23,10 @@
23
23
  # * Added __FILE__, __LINE__ to class_eval so that error messages would be more helpful.
24
24
  #++
25
25
 
26
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
26
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
27
27
  require 'rubygems'
28
28
  require 'quality_extensions/hash/assert_has_only_keys'
29
- require 'facets/hash/reverse_merge'
29
+ require 'facets/hash/merge'
30
30
  require 'facets/kernel/constant'
31
31
  require 'facets/ruby' # to_proc
32
32
  require 'quality_extensions/module/split'
@@ -11,11 +11,9 @@
11
11
  # possible to make it thread-safe?
12
12
  #++
13
13
 
14
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
14
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
15
15
  require 'rubygems'
16
- puts '1'
17
16
  require 'quality_extensions/module/attribute_accessors'
18
- puts '2'
19
17
  require 'facets/kernel/load'
20
18
  require_local 'bool_attr_accessor'
21
19
  #require 'quality_extensions/module/bool_attr_accessor'
@@ -0,0 +1,72 @@
1
+ #--
2
+ # Author:: Trans?
3
+ # Copyright:: Copyright (c) Trans?
4
+ # License:: Ruby License
5
+ # Submit to Facets?:: No. Copied from facets-1.8.54/lib/facets/core/hash/assert_has_only_keys.rb. No longer exists in 2.4.1.
6
+ # Developer notes::
7
+ #++
8
+
9
+ class Module
10
+
11
+ # Automatically create an initializer assigning the given
12
+ # arguments.
13
+ #
14
+ # class MyClass
15
+ # initializer(:a, "b", :c)
16
+ # end
17
+ #
18
+ # _is equivalent to_
19
+ #
20
+ # class MyClass
21
+ # def initialize(a, b, c)
22
+ # @a,@b,@c = a,b,c
23
+ # end
24
+ # end
25
+ #
26
+ # Downside: Initializers defined like this can't take blocks.
27
+ # This can be fixed when Ruby 1.9 is out.
28
+ #
29
+ # The initializer will not raise an Exception when the user
30
+ # does not supply a value for each instance variable. In that
31
+ # case it will just set the instance variable to nil. You can
32
+ # assign default values or raise an Exception in the block.
33
+ #
34
+ def initializer(*attributes, &block)
35
+ define_method(:initialize) do |*args|
36
+ attributes.zip(args) do |sym, value|
37
+ instance_variable_set("@#{sym}", value)
38
+ end
39
+
40
+ instance_eval(&block) if block
41
+ end
42
+ end
43
+
44
+ end
45
+
46
+
47
+
48
+ # _____ _
49
+ # |_ _|__ ___| |_
50
+ # | |/ _ \/ __| __|
51
+ # | | __/\__ \ |_
52
+ # |_|\___||___/\__|
53
+ #
54
+ =begin test
55
+
56
+ require 'test/unit'
57
+
58
+ class TCModule < Test::Unit::TestCase
59
+
60
+ def test_attr_initializer
61
+ cc = Class.new
62
+ cc.class_eval {
63
+ initializer :ai
64
+ attr_reader :ai
65
+ }
66
+ c = cc.new(10)
67
+ assert_equal( 10, c.ai )
68
+ end
69
+
70
+ end
71
+
72
+ =end
@@ -7,7 +7,7 @@
7
7
  # Changes::
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
  require 'rubygems'
12
12
  require 'facets/ruby' # to_proc
13
13
  require 'quality_extensions/symbol/constantize'
@@ -7,7 +7,7 @@
7
7
  # Changes::
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
  require 'rubygems'
12
12
  gem 'facets'
13
13
  require 'facets/kernel/singleton_class'
@@ -8,8 +8,7 @@
8
8
  # * 0.0.52: Renamed namespace to namespace_module to avoid conflicting with Facets' Module#namespace and Rake's namespace
9
9
  #++
10
10
 
11
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
12
- require 'rubygems'
11
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
13
12
  require 'quality_extensions/symbol/constantize'
14
13
  require 'quality_extensions/module/split'
15
14
 
@@ -9,7 +9,7 @@
9
9
  # * Copied from ActiveSupport.
10
10
  #++
11
11
 
12
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
12
+ $LOAD_PATH << File.expand_path(File.expand_path(File.join(File.dirname(__FILE__), '..', '..')))
13
13
  require 'rubygems'
14
14
  require 'facets/kernel/constant'
15
15
 
@@ -6,11 +6,11 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  require 'rubygems'
11
11
  require 'quality_extensions/object/ignore_access'
12
12
  require 'quality_extensions/module/split'
13
- require 'facets/module/by_name'
13
+ require 'quality_extensions/module/by_name'
14
14
  require 'facets/module/modspace'
15
15
 
16
16
  module Kernel
@@ -6,7 +6,7 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  require 'rubygems'
11
11
  require 'facets/ruby' # to_proc
12
12
 
@@ -8,7 +8,7 @@
8
8
  # Developer notes::
9
9
  #++
10
10
 
11
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..')
11
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..'))
12
12
 
13
13
  class NilClass
14
14
  # This allows you to call undefined methods on nil without an exception being raised.
@@ -9,7 +9,7 @@
9
9
  # * Rename to origin_of_method (or source_of_method)?? Since strictly speaking it may return a method that is not from any *ancestors* but is from the Class class.
10
10
  #++
11
11
 
12
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
12
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
13
13
  require 'rubygems'
14
14
  require 'quality_extensions/module/class_methods'
15
15
  require 'quality_extensions/module/ancestry_of_instance_method'
@@ -7,7 +7,7 @@
7
7
  # Changes::
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
 
12
12
  class Object
13
13
  # Returns +self+ if +condition+; otherwise, returns +else_value+.
@@ -17,7 +17,7 @@
17
17
  # * promiscuous (like rdoc's --promiscuous -- different semantics though)
18
18
  #++
19
19
 
20
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
20
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
21
21
  require 'rubygems'
22
22
  require 'facets/functor'
23
23
 
@@ -6,7 +6,7 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
 
11
11
  class Object
12
12
  # Calls the method implementation from the module of your choice (+moduule+) on the object of your choice (+self+).
@@ -6,7 +6,7 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  require 'rubygems'
11
11
  require 'facets/module/alias'
12
12
  require 'facets/ruby' # to_proc
@@ -13,7 +13,7 @@
13
13
  # * Or just leave it how it is because all the alternatives are too long...
14
14
  #++
15
15
 
16
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
16
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
17
17
  require 'rubygems'
18
18
  gem 'facets'
19
19
  require 'facets/kernel/with' # returning
@@ -17,7 +17,7 @@
17
17
  # * create_and_call
18
18
  #++
19
19
 
20
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
20
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
21
21
 
22
22
  class Object
23
23
 
@@ -9,7 +9,7 @@
9
9
  # Developer notes::
10
10
  #++
11
11
 
12
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
12
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
13
13
  require 'singleton'
14
14
  require 'rubygems'
15
15
  require 'facets/basicobject'
@@ -6,7 +6,7 @@
6
6
  # Developer notes::
7
7
  #++
8
8
 
9
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
9
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
10
10
  require 'rubygems'
11
11
  require 'quality_extensions/enumerable/enum'
12
12
 
@@ -5,7 +5,7 @@
5
5
  # Submit to Facets?:: Yes
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
  require 'rubygems'
10
10
  require 'escape' # http://www.a-k-r.org/escape/
11
11
  require 'facets/ruby' unless Symbol.method_defined?(:to_proc)
@@ -27,19 +27,26 @@ end
27
27
  require 'test/unit'
28
28
 
29
29
  class TheTest < Test::Unit::TestCase
30
+ # Use `echo` command to test integrity all the way to a command and back out the other side.
30
31
  def assert_that_echo_gives_back_what_we_put_in(input)
31
32
  input = %q{!&'"`$0 |()<>}
32
33
  output = `echo -n #{input.shell_escape}`
33
34
  assert_equal input, output
34
35
  end
35
- def test_1
36
+ def test_using_echo_1
36
37
  assert_that_echo_gives_back_what_we_put_in(
37
38
  %q{!&'"`$0 |()<>} )
38
39
  end
39
- def test_2
40
+ def test_using_echo_2
40
41
  assert_that_echo_gives_back_what_we_put_in(
41
42
  %q{'an arg that's got "quotes"} )
42
43
  end
44
+
45
+ # Escape has changed its behavior in newer versions. It wants to return it as type Escape::ShellEscaped.
46
+ def test_type
47
+ assert_equal Escape::ShellEscaped, 'a'.shell_escape.class
48
+ assert_equal 'a', 'a'.shell_escape.to_s
49
+ end
43
50
  end
44
51
  =end
45
52
 
@@ -5,7 +5,7 @@
5
5
  # Submit to Facets?:: Maybe
6
6
  #++
7
7
 
8
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
8
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
9
9
 
10
10
  module WithKnowledgeOfColor
11
11
  Color_regexp = /\e\[[^m]+m/
@@ -7,7 +7,7 @@
7
7
  # Changes::
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
  require 'rubygems'
12
12
  require 'facets/kernel/constant'
13
13
 
@@ -7,7 +7,7 @@
7
7
  # * Rename to symbol/regexp.rb ?
8
8
  #++
9
9
 
10
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
10
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
11
11
  require 'rubygems'
12
12
  require 'facets/module/alias'
13
13
 
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # Author:: Tyler Rick
3
- # Copyright:: Copyright (c) 2007 QualitySmith, Inc.
3
+ # Copyright:: Copyright (c) 2008, Tyler Rick
4
4
  # License:: Ruby License
5
5
  # Submit to Facets?::
6
6
  # Developer notes::
@@ -8,7 +8,7 @@
8
8
  # This file adds a bit of color to your failed string comparisons (assert_equal).
9
9
  # Differences will be highlighted for you in color so that you can instantly find them.
10
10
 
11
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..')
11
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
12
12
  require 'rubygems'
13
13
  gem 'colored'
14
14
  require 'colored'
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: quality_extensions
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2008-06-11 00:00:00 -07:00
6
+ version: 1.0.3
7
+ date: 2008-06-20 00:00:00 -07:00
8
8
  summary: A collection of reusable Ruby methods which are not (yet) in Facets.
9
9
  require_paths:
10
10
  - lib
@@ -34,6 +34,7 @@ files:
34
34
  - lib/quality_extensions/module/namespace.rb
35
35
  - lib/quality_extensions/module/guard_method.rb
36
36
  - lib/quality_extensions/module/dirname.rb
37
+ - lib/quality_extensions/module/initializer.rb
37
38
  - lib/quality_extensions/module/alias_method_chain.rb
38
39
  - lib/quality_extensions/module/create.rb
39
40
  - lib/quality_extensions/module/remove_const.rb
@@ -88,6 +89,7 @@ files:
88
89
  - lib/quality_extensions/test/assert_changed.rb
89
90
  - lib/quality_extensions/enumerable/enum.rb
90
91
  - lib/quality_extensions/enumerable/select_until.rb
92
+ - lib/quality_extensions/enumerable/map_with_index.rb
91
93
  - lib/quality_extensions/enumerable/select_while.rb
92
94
  - lib/quality_extensions/exception/inspect_with_backtrace.rb
93
95
  - lib/quality_extensions/chainable_safe_nil.rb