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
@@ -63,7 +63,7 @@
|
|
63
63
|
</tr>
|
64
64
|
<tr>
|
65
65
|
<td>Modified:</td>
|
66
|
-
<td>
|
66
|
+
<td>Mon Mar 24 19:07:26 -0400 2008</td>
|
67
67
|
</tr>
|
68
68
|
</table>
|
69
69
|
</td></tr>
|
@@ -77,34 +77,65 @@
|
|
77
77
|
|
78
78
|
<div class="description"><h1>Release Notes</h1>
|
79
79
|
<p>
|
80
|
-
Facets 2.
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
80
|
+
Facets 2.4 is a major step forward for Facets. <a
|
81
|
+
href="../classes/It.html">It</a> is perhaps the release that 2.0 should
|
82
|
+
have been, but of course it took the actual 2.0 release to make 2.4
|
83
|
+
possible. Some annoyances you may have encountered in updating your code to
|
84
|
+
2.0 are now fixed. And from 2.4 on, Facets will now be settling down into
|
85
|
+
simple refinement release cycles.
|
85
86
|
</p>
|
86
87
|
<p>
|
87
|
-
|
88
|
-
|
88
|
+
The main change under the hood is to bring everything up to the top
|
89
|
+
lib/facets/ directory. No longer are the libraries sorted by category. I
|
90
|
+
had done so for a long time to make it easier to track the various libs,
|
91
|
+
but in the end it was only making it more diffcult to deal with build tools
|
92
|
+
and packaging.
|
89
93
|
</p>
|
90
94
|
<p>
|
91
|
-
|
95
|
+
For the end-user, the largest change is a new emphisis on:
|
92
96
|
</p>
|
97
|
+
<pre>
|
98
|
+
require 'facets'
|
99
|
+
</pre>
|
93
100
|
<p>
|
94
|
-
This
|
95
|
-
|
101
|
+
This is better than cherry-picking methods. <a
|
102
|
+
href="../classes/It.html">It</a> may seem counter- intuitive, but it
|
103
|
+
actually proves more advantantages to do this for the sake of
|
104
|
+
interoperability than the practice of cherry-picking. The reason is simply
|
105
|
+
because others may have cherry-picked different methods, and those
|
106
|
+
distinctions go unaccounted and untested.
|
107
|
+
</p>
|
108
|
+
<p>
|
109
|
+
Also with this release, to bolster the use of require ‘facets’,
|
110
|
+
some lack-luster extensions have been deprecated and namespace usage has
|
111
|
+
been improved. In addition, we are getting very close to full
|
112
|
+
ActiveSupport, and Ruby 1.9, interoperability. Expect this to be complete
|
113
|
+
in the next minor release or two.
|
114
|
+
</p>
|
115
|
+
<p>
|
116
|
+
This is still a bit of an early release. There remain a few libraries to
|
117
|
+
adjust for the new design considerations, but I wanted to get this new
|
118
|
+
design out as soon as possible so others could adjust their code sooner
|
119
|
+
rather than later. I‘ll be catching up on the CHANGES list over the
|
120
|
+
next few minor release.
|
96
121
|
</p>
|
122
|
+
<h2>As of 2.3</h2>
|
97
123
|
<p>
|
98
|
-
|
124
|
+
Amoung other changes with this release, cloneable.rb is now a true deep
|
125
|
+
dup/clone mixin; tracepoint.rb returns to the library.
|
99
126
|
</p>
|
127
|
+
<h2>As of 2.2.1:</h2>
|
128
|
+
<p>
|
129
|
+
This release get rid of the underlying methods subdir. All method redirects
|
130
|
+
are now in core, to ensure there are no more name clashes.
|
131
|
+
</p>
|
132
|
+
<h2>As of 2.2.0:</h2>
|
100
133
|
<p>
|
101
134
|
This release provides improved rdocs and prepares facets for use with RUby
|
102
135
|
1.9. <a href="../classes/It.html">It</a> also adds Matthew Harris’
|
103
136
|
duration.rb library. Bug thanks to Matthew!
|
104
137
|
</p>
|
105
|
-
<
|
106
|
-
As of 2.1.0:
|
107
|
-
</p>
|
138
|
+
<h2>As of 2.1.0:</h2>
|
108
139
|
<p>
|
109
140
|
Major changes include a new and much-improved command.rb, a new <a
|
110
141
|
href="../classes/BiCrypt.html">BiCrypt</a> class for simple two-way
|
data/doc/html/changes.html
CHANGED
@@ -8,10 +8,22 @@
|
|
8
8
|
<div class="content">
|
9
9
|
<div class="main">
|
10
10
|
<h1>Change History</h1>
|
11
|
-
<h2>2.4.0 / 2008-
|
11
|
+
<h2>2.4.0 / 2008-03-24</h2>
|
12
12
|
<ul>
|
13
|
-
<li>
|
14
|
-
|
13
|
+
<li>The Console name space is being deprecated. command.rb and arguments.rb now
|
14
|
+
use CLI naemspace.
|
15
|
+
|
16
|
+
</li>
|
17
|
+
<li>#compare_on and #equate_on are now "mixin methods" Comparable()
|
18
|
+
and Equateable().
|
19
|
+
|
20
|
+
</li>
|
21
|
+
<li>Enumerable#product, #combintations and #permutations have change to be Ruby
|
22
|
+
1.9 compatible.
|
23
|
+
|
24
|
+
</li>
|
25
|
+
<li>thread.rb, map_send, et al, block is passed to send instead of yiedling on
|
26
|
+
result.
|
15
27
|
|
16
28
|
</li>
|
17
29
|
<li>namespace.rb has been renamed to methodspace.rb.
|
@@ -34,6 +46,10 @@ application".
|
|
34
46
|
<li>Brought back a few web related libs htmlfilter.rb and cssfilter.rb in
|
35
47
|
particular.
|
36
48
|
|
49
|
+
</li>
|
50
|
+
<li>This was a fairly large and fast-paced update, so not all changes are
|
51
|
+
listed. See RDocs to more information.
|
52
|
+
|
37
53
|
</li>
|
38
54
|
</ul>
|
39
55
|
<h2>2.3.0 / 2008-02-01</h2>
|
data/doc/html/notes.html
CHANGED
@@ -9,34 +9,63 @@
|
|
9
9
|
<div class="main">
|
10
10
|
<h1>Release Notes</h1>
|
11
11
|
<p>
|
12
|
-
Facets 2.
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
Facets 2.4 is a major step forward for Facets. It is perhaps the release
|
13
|
+
that 2.0 should have been, but of course it took the actual 2.0 release to
|
14
|
+
make 2.4 possible. Some annoyances you may have encountered in updating
|
15
|
+
your code to 2.0 are now fixed. And from 2.4 on, Facets will now be
|
16
|
+
settling down into simple refinement release cycles.
|
17
17
|
</p>
|
18
18
|
<p>
|
19
|
-
|
20
|
-
|
19
|
+
The main change under the hood is to bring everything up to the top
|
20
|
+
lib/facets/ directory. No longer are the libraries sorted by category. I
|
21
|
+
had done so for a long time to make it easier to track the various libs,
|
22
|
+
but in the end it was only making it more diffcult to deal with build tools
|
23
|
+
and packaging.
|
21
24
|
</p>
|
22
25
|
<p>
|
23
|
-
|
26
|
+
For the end-user, the largest change is a new emphisis on:
|
24
27
|
</p>
|
28
|
+
<pre>
|
29
|
+
require 'facets'
|
30
|
+
</pre>
|
25
31
|
<p>
|
26
|
-
This
|
27
|
-
|
32
|
+
This is better than cherry-picking methods. It may seem counter- intuitive,
|
33
|
+
but it actually proves more advantantages to do this for the sake of
|
34
|
+
interoperability than the practice of cherry-picking. The reason is simply
|
35
|
+
because others may have cherry-picked different methods, and those
|
36
|
+
distinctions go unaccounted and untested.
|
37
|
+
</p>
|
38
|
+
<p>
|
39
|
+
Also with this release, to bolster the use of require ‘facets’,
|
40
|
+
some lack-luster extensions have been deprecated and namespace usage has
|
41
|
+
been improved. In addition, we are getting very close to full
|
42
|
+
ActiveSupport, and Ruby 1.9, interoperability. Expect this to be complete
|
43
|
+
in the next minor release or two.
|
44
|
+
</p>
|
45
|
+
<p>
|
46
|
+
This is still a bit of an early release. There remain a few libraries to
|
47
|
+
adjust for the new design considerations, but I wanted to get this new
|
48
|
+
design out as soon as possible so others could adjust their code sooner
|
49
|
+
rather than later. I’ll be catching up on the CHANGES list over the
|
50
|
+
next few minor release.
|
28
51
|
</p>
|
52
|
+
<h2>As of 2.3</h2>
|
29
53
|
<p>
|
30
|
-
|
54
|
+
Amoung other changes with this release, cloneable.rb is now a true deep
|
55
|
+
dup/clone mixin; tracepoint.rb returns to the library.
|
31
56
|
</p>
|
57
|
+
<h2>As of 2.2.1:</h2>
|
58
|
+
<p>
|
59
|
+
This release get rid of the underlying methods subdir. All method redirects
|
60
|
+
are now in core, to ensure there are no more name clashes.
|
61
|
+
</p>
|
62
|
+
<h2>As of 2.2.0:</h2>
|
32
63
|
<p>
|
33
64
|
This release provides improved rdocs and prepares facets for use with RUby
|
34
65
|
1.9. It also adds Matthew Harris’ duration.rb library. Bug thanks to
|
35
66
|
Matthew!
|
36
67
|
</p>
|
37
|
-
<
|
38
|
-
As of 2.1.0:
|
39
|
-
</p>
|
68
|
+
<h2>As of 2.1.0:</h2>
|
40
69
|
<p>
|
41
70
|
Major changes include a new and much-improved command.rb, a new BiCrypt
|
42
71
|
class for simple two-way crypotgraphy, as well as attr_reader!,
|
data/doc/notes.rdoc
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
== Instance Prefixed Methods
|
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
|
+
|
data/lib/facets/basex.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
class BaseX
|
2
|
+
|
3
|
+
BASE62 = ["0".."9", "a".."z", "A".."Z"].map { |r| r.to_a }.flatten
|
4
|
+
|
5
|
+
attr :chars, :base, :values
|
6
|
+
|
7
|
+
def initialize(chars=BASE62)
|
8
|
+
@chars = chars
|
9
|
+
@base = @chars.size
|
10
|
+
@values = Hash[*(0...@base).map { |i| [ @chars[i], i ] }.flatten]
|
11
|
+
end
|
12
|
+
|
13
|
+
def encode(byte_string)
|
14
|
+
convert_base(byte_string.unpack("C*"), 256, @base).map { |d|
|
15
|
+
@chars[d]
|
16
|
+
}.join('')
|
17
|
+
end
|
18
|
+
|
19
|
+
def decode(encoded)
|
20
|
+
convert_base(encoded.split('').map { |c|
|
21
|
+
@values[c]
|
22
|
+
}, @base, 256).pack("C*")
|
23
|
+
end
|
24
|
+
|
25
|
+
def convert_base(digits, from_base, to_base)
|
26
|
+
bignum = 0
|
27
|
+
digits.each { |digit| bignum = bignum * from_base + digit }
|
28
|
+
converted = []
|
29
|
+
until bignum.zero?
|
30
|
+
bignum, digit = bignum.divmod to_base
|
31
|
+
converted.push digit
|
32
|
+
end
|
33
|
+
converted.reverse
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
data/lib/facets/basicobject.rb
CHANGED
@@ -66,7 +66,7 @@
|
|
66
66
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
67
67
|
# FOR A PARTICULAR PURPOSE.
|
68
68
|
|
69
|
-
require 'facets/kernel/
|
69
|
+
require 'facets/kernel/object_class'
|
70
70
|
require 'facets/kernel/as'
|
71
71
|
|
72
72
|
# = BasicObject
|
@@ -122,7 +122,7 @@ class BasicObject
|
|
122
122
|
def object_self
|
123
123
|
@__object_self__ ||= As.new(self, ::Object)
|
124
124
|
end
|
125
|
-
alias :__self__ :object_self
|
125
|
+
alias :__self__ :object_self
|
126
126
|
|
127
127
|
#--
|
128
128
|
# The Self class allows one to get access the hidden Object/Kernel methods.
|
data/lib/facets/date.rb
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
# FOR A PARTICULAR PURPOSE.
|
21
21
|
|
22
22
|
require 'date'
|
23
|
+
require 'parsedate' # needed for String#to_date
|
23
24
|
|
24
25
|
class Date
|
25
26
|
|
@@ -55,9 +56,8 @@ class Date
|
|
55
56
|
#
|
56
57
|
# Date.new(2004,2).days_in_month #=> 28
|
57
58
|
#
|
58
|
-
|
59
|
-
|
60
|
-
#++
|
59
|
+
# CREDIT: Ken Kunz.
|
60
|
+
|
61
61
|
def days_in_month
|
62
62
|
Date.civil(year, month, -1).day
|
63
63
|
end
|
@@ -68,7 +68,7 @@ class Date
|
|
68
68
|
|
69
69
|
# Get the month name for this date object
|
70
70
|
#
|
71
|
-
#
|
71
|
+
# CREDIT Benjamin Oakes
|
72
72
|
|
73
73
|
def month_name
|
74
74
|
MONTHNAMES[self.month]
|
@@ -76,3 +76,15 @@ class Date
|
|
76
76
|
|
77
77
|
end
|
78
78
|
|
79
|
+
class String
|
80
|
+
|
81
|
+
# Parse data from string.
|
82
|
+
#
|
83
|
+
# CREDIT: Trans
|
84
|
+
|
85
|
+
def to_date
|
86
|
+
::Date::civil(*ParseDate.parsedate(self)[0..2])
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
data/lib/facets/exception.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
class Exception
|
2
|
+
|
3
|
+
# Supress errors while executing a block, with execptions.
|
4
|
+
#
|
5
|
+
# CREDIT: Trans
|
6
|
+
# CREDIT: David Heinemeier Hansson
|
7
|
+
|
8
|
+
def self.suppress(*exception_classes)
|
9
|
+
exception_classes.each do |e|
|
10
|
+
unless e < self
|
11
|
+
raise ArgumentError, "exception #{e} not a subclass of #{self}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
begin yield
|
15
|
+
rescue Exception => e
|
16
|
+
raise unless exception_classes.any? { |cls| e.kind_of?(cls) }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
@@ -4,7 +4,8 @@ class Hash
|
|
4
4
|
#
|
5
5
|
# h = { :list => [1,2], :base => "HI" }
|
6
6
|
# h.argumentize #=> [ [], { :list => [1,2], :base => "HI" } ]
|
7
|
-
# h.argumentize(:list)
|
7
|
+
# h.argumentize(:list) #=> [ [1,2], { :base => "HI" } ]
|
8
|
+
# h.argumentize(:base) #=> [ ["HI"], { :list => [1,2] } ]
|
8
9
|
#
|
9
10
|
def argumentize(args_field=nil)
|
10
11
|
config = dup
|
data/lib/facets/kernel.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'facets/ruby'
|
2
2
|
|
3
3
|
require 'facets/kernel/__dir__.rb'
|
4
|
+
require 'facets/kernel/__get__.rb'
|
5
|
+
require 'facets/kernel/__set__.rb'
|
4
6
|
require 'facets/kernel/as.rb'
|
5
7
|
require 'facets/kernel/complete.rb'
|
6
8
|
require 'facets/kernel/constant.rb'
|
@@ -8,15 +10,20 @@ require 'facets/kernel/d.rb'
|
|
8
10
|
require 'facets/kernel/deep_copy.rb'
|
9
11
|
require 'facets/kernel/ergo.rb'
|
10
12
|
require 'facets/kernel/here.rb'
|
11
|
-
require 'facets/kernel/
|
13
|
+
require 'facets/kernel/instance_assign.rb' # DEPRECATE
|
14
|
+
require 'facets/kernel/instance_class.rb'
|
15
|
+
require 'facets/kernel/instance_send.rb'
|
12
16
|
require 'facets/kernel/load.rb'
|
13
17
|
require 'facets/kernel/not_nil.rb'
|
14
|
-
require 'facets/kernel/
|
18
|
+
require 'facets/kernel/object_class.rb'
|
19
|
+
require 'facets/kernel/object_hexid.rb'
|
20
|
+
require 'facets/kernel/object_send.rb'
|
15
21
|
require 'facets/kernel/p.rb'
|
16
22
|
require 'facets/kernel/populate.rb'
|
17
23
|
require 'facets/kernel/resc.rb'
|
18
24
|
require 'facets/kernel/respond.rb'
|
19
25
|
require 'facets/kernel/silence.rb'
|
20
26
|
require 'facets/kernel/singleton_class.rb'
|
27
|
+
require 'facets/kernel/suppress.rb'
|
21
28
|
require 'facets/kernel/with.rb'
|
22
29
|
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/kernel/__get__'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Kernel
|
2
|
+
|
3
|
+
# Return instance variable values in an array.
|
4
|
+
#
|
5
|
+
# class X
|
6
|
+
# def initialize(a,b)
|
7
|
+
# @a, @b = a, b
|
8
|
+
# end
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# x = X.new(1,2)
|
12
|
+
#
|
13
|
+
# x.instance_values #=> { "a"=>1, "b"=>2 }
|
14
|
+
#
|
15
|
+
# WARNING: #instance_values will be deprecated. Use instance_vars.to_hash instead.
|
16
|
+
|
17
|
+
def instance_values
|
18
|
+
instance_variables.inject({}) do |values, name|
|
19
|
+
values[name[1..-1]] = instance_variable_get(name)
|
20
|
+
values
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Set instance variables using a hash.
|
25
|
+
#
|
26
|
+
# instance_assign('@a'=>1, '@b'=>2)
|
27
|
+
# @a #=> 1
|
28
|
+
# @b #=> 2
|
29
|
+
#
|
30
|
+
# WARNING: #instance_assign will be deprecated. Use instance_vars.update instead.
|
31
|
+
|
32
|
+
def instance_assign(hash)
|
33
|
+
hash.each do |k,v|
|
34
|
+
k = "@#{k}" if k !~ /^@/
|
35
|
+
instance_variable_set(k, v)
|
36
|
+
end
|
37
|
+
return self
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|