facets 2.4.0 → 2.4.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.
Files changed (79) hide show
  1. data/CHANGES +14 -6
  2. data/MANIFEST +35 -18
  3. data/NOTES +5 -15
  4. data/README +1 -11
  5. data/doc/{History.txt → history.rdoc} +0 -0
  6. data/doc/html/api/core/created.rid +1 -1
  7. data/doc/html/api/core/files/CHANGES.html +20 -4
  8. data/doc/html/api/core/files/NOTES.html +44 -15
  9. data/doc/html/api/more/created.rid +1 -1
  10. data/doc/html/api/more/files/CHANGES.html +20 -4
  11. data/doc/html/api/more/files/NOTES.html +46 -15
  12. data/doc/html/changes.html +19 -3
  13. data/doc/html/notes.html +43 -14
  14. data/doc/notes.rdoc +9 -0
  15. data/lib/facets/basex.rb +37 -0
  16. data/lib/facets/basicobject.rb +2 -2
  17. data/lib/facets/date.rb +16 -4
  18. data/lib/facets/exception.rb +1 -0
  19. data/lib/facets/exception/suppress.rb +21 -0
  20. data/lib/facets/hash/argumentize.rb +2 -1
  21. data/lib/facets/kernel.rb +9 -2
  22. data/lib/facets/kernel/__class__.rb +9 -0
  23. data/lib/facets/kernel/__get__.rb +10 -0
  24. data/lib/facets/kernel/__set__.rb +1 -0
  25. data/lib/facets/kernel/instance_assign.rb +41 -0
  26. data/lib/facets/kernel/instance_class.rb +24 -0
  27. data/lib/facets/kernel/instance_send.rb +7 -0
  28. data/lib/facets/kernel/instance_variables.rb +99 -0
  29. data/lib/facets/kernel/object_class.rb +10 -0
  30. data/lib/facets/kernel/object_hexid.rb +12 -0
  31. data/lib/facets/kernel/{object.rb → object_send.rb} +0 -21
  32. data/lib/facets/kernel/silence.rb +25 -19
  33. data/lib/facets/kernel/suppress.rb +18 -0
  34. data/lib/facets/module.rb +3 -0
  35. data/lib/facets/module/basename.rb +31 -0
  36. data/lib/facets/module/modspace.rb +22 -0
  37. data/lib/facets/module/nesting.rb +0 -66
  38. data/lib/facets/module/spacename.rb +25 -0
  39. data/lib/facets/net/smtp_tls.rb +5 -8
  40. data/lib/facets/openhash.rb +1 -0
  41. data/lib/facets/openobject.rb +2 -1
  42. data/lib/facets/paramix.rb +187 -0
  43. data/lib/facets/platform.rb +192 -0
  44. data/lib/facets/recorder.rb +1 -1
  45. data/lib/facets/string.rb +12 -0
  46. data/lib/facets/string/to_time.rb +1 -23
  47. data/lib/facets/style.rb +145 -64
  48. data/lib/facets/time.rb +5 -0
  49. data/lib/facets/time/to_time.rb +14 -0
  50. data/log/{Changelog-0.txt → changelog-0.rdoc} +0 -0
  51. data/log/{Changelog-1.txt → changelog-1.rdoc} +0 -0
  52. data/log/{Changelog.txt → changelog.rdoc} +18 -0
  53. data/log/{Fixme.txt → fixme.rdoc} +3 -3
  54. data/log/testlog.txt +645 -0
  55. data/log/{Todo.txt → todo.rdoc} +80 -89
  56. data/meta/project.yaml +14 -10
  57. data/meta/version +1 -1
  58. data/script/conflicts +28 -3
  59. data/script/methods +32 -43
  60. data/test/kernel/{test_instance.rb → test_instance_assign.rb} +2 -10
  61. data/test/kernel/test_instance_class.rb +12 -0
  62. data/test/kernel/{test_object.rb → test_object_class.rb} +2 -9
  63. data/test/kernel/test_object_hexid.rb +12 -0
  64. data/test/module/test_basename.rb +11 -0
  65. data/test/module/test_modspace.rb +13 -0
  66. data/test/module/test_nesting.rb +0 -17
  67. data/test/module/test_spacename.rb +14 -0
  68. data/test/test_date.rb +12 -0
  69. data/test/test_style.rb +1 -1
  70. data/test/{string → time}/test_to_time.rb +1 -9
  71. metadata +46 -26
  72. data/lib/facets/behavior.rb +0 -104
  73. data/lib/facets/kernel/instance.rb +0 -73
  74. data/lib/facets/string/stylize.rb +0 -73
  75. data/lib/facets/string/underscore.rb +0 -28
  76. data/log/Testlog.txt +0 -205
  77. data/meta/corelibs +0 -49
  78. data/test/string/test_stylize.rb +0 -52
  79. data/test/string/test_underscore.rb +0 -13
@@ -0,0 +1,24 @@
1
+ module Kernel
2
+
3
+ # Kernel extension prefixed by instance_ which provide
4
+ # internal (eg private) access to the object.
5
+ # Kernel extension using instance_ prefix which is beneficial
6
+ # to separation of metaprogramming from general programming.
7
+ # object_ methods, in contrast to the instance_ methods,
8
+ # do not access internal state.
9
+
10
+ # Easy access to an object qua class, otherwise known
11
+ # as the object's metaclass or singleton class. This
12
+ # implemnetation alwasy returns the class, even if a
13
+ # block is provided to eval against it.
14
+ #
15
+ # It is what it is.
16
+ #
17
+ # CREDIT: Trans
18
+
19
+ def instance_class(&block)
20
+ (class << self; self; end).module_eval(&block) if block
21
+ (class << self; self; end)
22
+ end
23
+
24
+ end
@@ -0,0 +1,7 @@
1
+ module Kernel
2
+
3
+ # Private send.
4
+ alias_method :instance_send, :__send__
5
+
6
+ end
7
+
@@ -0,0 +1,99 @@
1
+ module Kernel
2
+
3
+ def instance_vars
4
+ InstanceVariables.new(self)
5
+ end
6
+
7
+ end
8
+
9
+
10
+ class InstanceVariables
11
+
12
+ include Enumerable
13
+
14
+ def initialize(delegate)
15
+ @delegate = delegate
16
+ end
17
+
18
+ def instance_delegate
19
+ @delegate
20
+ end
21
+
22
+ def each
23
+ @delegate.instance_variables.each do |name|
24
+ yield(name[1..-1].to_sym, @delegate.instance_variable_get(name))
25
+ end
26
+ end
27
+
28
+ def to_hash
29
+ h = {}
30
+ each do |name, value|
31
+ h[name] = value
32
+ end
33
+ h
34
+ end
35
+
36
+ def [](name)
37
+ name = atize(name)
38
+ @delegate.instance_variable_get(name)
39
+ end
40
+
41
+ def []=(name, value)
42
+ name = atize(name)
43
+ @delegate.instance_varaible_set(name,value)
44
+ end
45
+
46
+ def <<(pair)
47
+ name, value = *pair
48
+ name = atize(name)
49
+ @delegate.instance_varaible_set(name, value)
50
+ end
51
+
52
+ def update(hash)
53
+ hash.each do |pair|
54
+ self << pair
55
+ end
56
+ end
57
+
58
+ def keys
59
+ @delegate.instance_variables.collect do |name|
60
+ name[1..-1].to_sym
61
+ end
62
+ end
63
+
64
+ def names
65
+ @delegate.instance_variables.collect do |name|
66
+ name[1..-1]
67
+ end
68
+ end
69
+
70
+ def values
71
+ @delegate.instance_variables.collect do |name|
72
+ @delegate.instance_variable_get(name)
73
+ end
74
+ end
75
+
76
+ private
77
+
78
+ def atize(name)
79
+ name !~ /^@/ ? "@#{name}" : name
80
+ end
81
+
82
+ end
83
+
84
+
85
+ if $0 == __FILE__
86
+
87
+ class Friend
88
+ attr_accessor :name, :age, :phone
89
+ def initialize(name, age, phone)
90
+ @name, @age, @phone = name, age, phone
91
+ end
92
+ end
93
+
94
+ f1 = Friend.new("John", 30, "555-1212")
95
+ p f1.variables
96
+ p f1.variables.to_hash
97
+
98
+ end
99
+
@@ -0,0 +1,10 @@
1
+ module Kernel
2
+
3
+ # Defines object_classas an alias of class.
4
+ # This is an alternative to __class__, akin to
5
+ # #object_id.
6
+
7
+ alias_method :object_class, :class
8
+
9
+ end
10
+
@@ -0,0 +1,12 @@
1
+ module Kernel
2
+
3
+ # Returns the object id as a string in hexideciaml,
4
+ # which is how Ruby reports them with inspect.
5
+ #
6
+ # "ABC".object_hexid #=> "0x402d359c"
7
+
8
+ def object_hexid
9
+ return "0x" << ('%.x' % (2*self.__id__)) #[1..-1]
10
+ end
11
+
12
+ end
@@ -1,17 +1,5 @@
1
1
  module Kernel
2
2
 
3
- # Defines object_classas an alias of class.
4
- # This is an alternative to __class__, akin to
5
- # #object_id.
6
-
7
- alias_method :object_class, :class
8
-
9
- # Defines core method __class__ as an alias of class.
10
- # This allows you to use #class as your own method, without
11
- # loosing the ability to determine the object's class.
12
-
13
- alias_method :__class__, :class
14
-
15
3
  # Send only to public methods.
16
4
  #
17
5
  # class X
@@ -40,14 +28,5 @@ module Kernel
40
28
  end
41
29
  end
42
30
 
43
- # Returns the object id as a string in hexideciaml,
44
- # which is how Ruby reports them with inspect.
45
- #
46
- # "ABC".object_hexid #=> "0x402d359c"
47
-
48
- def object_hexid
49
- return "0x" << ('%.x' % (2*self.__id__)) #[1..-1]
50
- end
51
-
52
31
  end
53
32
 
@@ -10,21 +10,37 @@ module Kernel
10
10
  #
11
11
  # CREDIT: David Heinemeier Hansson
12
12
 
13
- def silence_stream(stream)
14
- old_stream = stream.dup
15
- stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
16
- stream.sync = true
13
+ def silence_stream(*streams) #:yeild:
14
+ on_hold = streams.collect{ |stream| stream.dup }
15
+ streams.each do |stream|
16
+ stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
17
+ stream.sync = true
18
+ end
17
19
  yield
18
20
  ensure
19
- stream.reopen(old_stream)
21
+ streams.each_with_index do |stream, i|
22
+ stream.reopen(on_hold[i])
23
+ end
20
24
  end
21
- #alias_method :silently, :silence_stream
22
25
 
23
- # For compatibility.
24
- def silence_stderr #:nodoc:
26
+ #
27
+ def silence_stderr #:yeild:
25
28
  silence_stream(STDERR) { yield }
26
29
  end
27
30
 
31
+ #
32
+ def silence_stdout #:yeild:
33
+ silence_stream(STDOUT) { yield }
34
+ end
35
+
36
+ # Just like silence_stream, but will default to
37
+ # STDOUT, STDERR if no streams are given.
38
+
39
+ def silently(*streams) #:yeild:
40
+ streams = [STDOUT, STDERR] if streams.empty?
41
+ silence_stream(*streams){ yield }
42
+ end
43
+
28
44
  # Sets $VERBOSE to nil for the duration of the block
29
45
  # and back to its original value afterwards.
30
46
  #
@@ -55,15 +71,5 @@ module Kernel
55
71
  $VERBOSE = old_verbose
56
72
  end
57
73
 
58
- # Supress errors while executing a block, with execptions.
59
- #
60
- # CREDIT: David Heinemeier Hansson
61
-
62
- def suppress(*exception_classes)
63
- begin yield
64
- rescue Exception => e
65
- raise unless exception_classes.any? { |cls| e.kind_of?(cls) }
66
- end
67
- end
68
-
69
74
  end
75
+
@@ -0,0 +1,18 @@
1
+ module Kernel
2
+
3
+ # Supress errors while executing a block, with execptions.
4
+ #
5
+ # TODO: This will be deprecatd in favor or Exception#suppress.
6
+ #
7
+ # CREDIT: David Heinemeier Hansson
8
+
9
+ def suppress(*exception_classes)
10
+ warn "use Exception#supress for future versions"
11
+ begin yield
12
+ rescue Exception => e
13
+ raise unless exception_classes.any? { |cls| e.kind_of?(cls) }
14
+ end
15
+ end
16
+
17
+ end
18
+
@@ -3,6 +3,7 @@ require 'facets/ruby'
3
3
  #require 'facets/module/abstract.rb'
4
4
  require 'facets/module/alias.rb'
5
5
  require 'facets/module/ancestor.rb'
6
+ require 'facets/module/basename.rb'
6
7
  require 'facets/module/can.rb'
7
8
  require 'facets/module/class.rb'
8
9
  #require 'facets/module/clone.rb'
@@ -11,9 +12,11 @@ require 'facets/module/include_function_module.rb'
11
12
  require 'facets/module/instance_methods.rb'
12
13
  require 'facets/module/is.rb'
13
14
  #require 'facets/module/module_load.rb'
15
+ require 'facets/module/modspace.rb'
14
16
  require 'facets/module/nesting.rb'
15
17
  require 'facets/module/op.rb'
16
18
  require 'facets/module/pathize.rb'
17
19
  require 'facets/module/prepend.rb'
18
20
  require 'facets/module/revise.rb'
21
+ require 'facets/module/spacename.rb'
19
22
 
@@ -0,0 +1,31 @@
1
+ class Module
2
+
3
+ # Returns the root name of the module/class.
4
+ #
5
+ # module Example
6
+ # class Demo
7
+ # end
8
+ # end
9
+ #
10
+ # Demo.name #=> "Example::Demo"
11
+ # Demo.basename #=> "Demo"
12
+ #
13
+ # For anonymous modules this will provide a basename
14
+ # based on Module#inspect.
15
+ #
16
+ # m = Module.new
17
+ # m.inspect #=> "#<Module:0xb7bb0434>"
18
+ # m.basename #=> "Module_0xb7bb0434"
19
+ #
20
+ # CREDIT: Trans
21
+
22
+ def basename
23
+ if name and not name.empty?
24
+ name.gsub(/^.*::/, '')
25
+ else
26
+ nil #inspect.gsub('#<','').gsub('>','').sub(':', '_')
27
+ end
28
+ end
29
+
30
+ end
31
+
@@ -0,0 +1,22 @@
1
+ class Module
2
+
3
+ # Returns the module's container module.
4
+ #
5
+ # module Example
6
+ # class Demo
7
+ # end
8
+ # end
9
+ #
10
+ # Example::Demo.modspace #=> Example
11
+ #
12
+ # See also Module#basename.
13
+ #
14
+ # CREDIT: Trans
15
+
16
+ def modspace
17
+ space = name[ 0...(name.rindex( '::' ) || 0)]
18
+ space.empty? ? Object : eval(space)
19
+ end
20
+
21
+ end
22
+
@@ -14,71 +14,5 @@ class Module
14
14
  return n
15
15
  end
16
16
 
17
- # Returns the module's container module.
18
- #
19
- # module Example
20
- # class Demo
21
- # end
22
- # end
23
- #
24
- # Example::Demo.modspace #=> Example
25
- #
26
- # See also Module#basename.
27
- #
28
- # CREDIT: Trans
29
-
30
- def modspace
31
- space = name[ 0...(name.rindex( '::' ) || 0)]
32
- space.empty? ? Object : eval(space)
33
- end
34
-
35
- # Returns the root name of the module/class.
36
- #
37
- # module Example
38
- # class Demo
39
- # end
40
- # end
41
- #
42
- # Demo.name #=> "Example::Demo"
43
- # Demo.basename #=> "Demo"
44
- #
45
- # For anonymous modules this will provide a basename
46
- # based on Module#inspect.
47
- #
48
- # m = Module.new
49
- # m.inspect #=> "#<Module:0xb7bb0434>"
50
- # m.basename #=> "Module_0xb7bb0434"
51
- #
52
- # CREDIT: Trans
53
-
54
- def basename
55
- if name and not name.empty?
56
- name.gsub(/^.*::/, '')
57
- else
58
- nil #inspect.gsub('#<','').gsub('>','').sub(':', '_')
59
- end
60
- end
61
-
62
- # Returns the name of module's container module.
63
- #
64
- # module Example
65
- # class Demo
66
- # end
67
- # end
68
- #
69
- # Demo.name #=> "Example::Demo"
70
- # Demo.spacename #=> "Example"
71
- #
72
- # This used to be called +dirname+.
73
- #
74
- # See also Module#basename.
75
- #
76
- # CREDIT: Trans
77
-
78
- def spacename
79
- name[0...(name.rindex('::') || 0)]
80
- #name.gsub(/::[^:]*$/, '')
81
- end
82
-
83
17
  end
84
18
 
@@ -0,0 +1,25 @@
1
+ class Module
2
+
3
+ # Returns the name of module's container module.
4
+ #
5
+ # module Example
6
+ # class Demo
7
+ # end
8
+ # end
9
+ #
10
+ # Demo.name #=> "Example::Demo"
11
+ # Demo.spacename #=> "Example"
12
+ #
13
+ # This used to be called +dirname+.
14
+ #
15
+ # See also Module#basename.
16
+ #
17
+ # CREDIT: Trans
18
+
19
+ def spacename
20
+ name[0...(name.rindex('::') || 0)]
21
+ #name.gsub(/::[^:]*$/, '')
22
+ end
23
+
24
+ end
25
+