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.
- data/CHANGES +14 -6
- data/MANIFEST +35 -18
- data/NOTES +5 -15
- data/README +1 -11
- data/doc/{History.txt → history.rdoc} +0 -0
- data/doc/html/api/core/created.rid +1 -1
- data/doc/html/api/core/files/CHANGES.html +20 -4
- data/doc/html/api/core/files/NOTES.html +44 -15
- data/doc/html/api/more/created.rid +1 -1
- data/doc/html/api/more/files/CHANGES.html +20 -4
- data/doc/html/api/more/files/NOTES.html +46 -15
- data/doc/html/changes.html +19 -3
- data/doc/html/notes.html +43 -14
- data/doc/notes.rdoc +9 -0
- data/lib/facets/basex.rb +37 -0
- data/lib/facets/basicobject.rb +2 -2
- data/lib/facets/date.rb +16 -4
- data/lib/facets/exception.rb +1 -0
- data/lib/facets/exception/suppress.rb +21 -0
- data/lib/facets/hash/argumentize.rb +2 -1
- data/lib/facets/kernel.rb +9 -2
- data/lib/facets/kernel/__class__.rb +9 -0
- data/lib/facets/kernel/__get__.rb +10 -0
- data/lib/facets/kernel/__set__.rb +1 -0
- data/lib/facets/kernel/instance_assign.rb +41 -0
- data/lib/facets/kernel/instance_class.rb +24 -0
- data/lib/facets/kernel/instance_send.rb +7 -0
- data/lib/facets/kernel/instance_variables.rb +99 -0
- data/lib/facets/kernel/object_class.rb +10 -0
- data/lib/facets/kernel/object_hexid.rb +12 -0
- data/lib/facets/kernel/{object.rb → object_send.rb} +0 -21
- data/lib/facets/kernel/silence.rb +25 -19
- data/lib/facets/kernel/suppress.rb +18 -0
- data/lib/facets/module.rb +3 -0
- data/lib/facets/module/basename.rb +31 -0
- data/lib/facets/module/modspace.rb +22 -0
- data/lib/facets/module/nesting.rb +0 -66
- data/lib/facets/module/spacename.rb +25 -0
- data/lib/facets/net/smtp_tls.rb +5 -8
- data/lib/facets/openhash.rb +1 -0
- data/lib/facets/openobject.rb +2 -1
- data/lib/facets/paramix.rb +187 -0
- data/lib/facets/platform.rb +192 -0
- data/lib/facets/recorder.rb +1 -1
- data/lib/facets/string.rb +12 -0
- data/lib/facets/string/to_time.rb +1 -23
- data/lib/facets/style.rb +145 -64
- data/lib/facets/time.rb +5 -0
- data/lib/facets/time/to_time.rb +14 -0
- data/log/{Changelog-0.txt → changelog-0.rdoc} +0 -0
- data/log/{Changelog-1.txt → changelog-1.rdoc} +0 -0
- data/log/{Changelog.txt → changelog.rdoc} +18 -0
- data/log/{Fixme.txt → fixme.rdoc} +3 -3
- data/log/testlog.txt +645 -0
- data/log/{Todo.txt → todo.rdoc} +80 -89
- data/meta/project.yaml +14 -10
- data/meta/version +1 -1
- data/script/conflicts +28 -3
- data/script/methods +32 -43
- data/test/kernel/{test_instance.rb → test_instance_assign.rb} +2 -10
- data/test/kernel/test_instance_class.rb +12 -0
- data/test/kernel/{test_object.rb → test_object_class.rb} +2 -9
- data/test/kernel/test_object_hexid.rb +12 -0
- data/test/module/test_basename.rb +11 -0
- data/test/module/test_modspace.rb +13 -0
- data/test/module/test_nesting.rb +0 -17
- data/test/module/test_spacename.rb +14 -0
- data/test/test_date.rb +12 -0
- data/test/test_style.rb +1 -1
- data/test/{string → time}/test_to_time.rb +1 -9
- metadata +46 -26
- data/lib/facets/behavior.rb +0 -104
- data/lib/facets/kernel/instance.rb +0 -73
- data/lib/facets/string/stylize.rb +0 -73
- data/lib/facets/string/underscore.rb +0 -28
- data/log/Testlog.txt +0 -205
- data/meta/corelibs +0 -49
- data/test/string/test_stylize.rb +0 -52
- 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,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
|
+
|
@@ -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(
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
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
|
-
#
|
24
|
-
def silence_stderr #:
|
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
|
+
|
data/lib/facets/module.rb
CHANGED
@@ -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
|
+
|