perception 0.1.5
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/0 start all Tests.bat +20 -0
- data/History.txt +4 -0
- data/License.txt +21 -0
- data/Manifest.txt +29 -0
- data/PostInstall.txt +6 -0
- data/README.txt +55 -0
- data/Rakefile.rb +127 -0
- data/demo/demo_pp.rb +163 -0
- data/demo/demo_zz.rb +332 -0
- data/init.rb +2 -0
- data/lib/perception/const.rb +78 -0
- data/lib/perception/date_and_time.rb +78 -0
- data/lib/perception/logging.rb +123 -0
- data/lib/perception/numeric.rb +194 -0
- data/lib/perception/perception_main.rb +317 -0
- data/lib/perception/perception_private.rb +231 -0
- data/lib/perception/ppp.rb +377 -0
- data/lib/perception/string_spread.rb +155 -0
- data/lib/perception/test.rb +114 -0
- data/lib/perception.rb +36 -0
- data/test/_start_all.rb +10 -0
- data/test/test_date_and_time.rb +54 -0
- data/test/test_numeric.rb +104 -0
- data/test/test_ppp.rb +297 -0
- data/website/index.html +11 -0
- data/website/index.txt +83 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +138 -0
- data/website/template.html.erb +48 -0
- metadata +119 -0
data/test/test_ppp.rb
ADDED
@@ -0,0 +1,297 @@
|
|
1
|
+
|
2
|
+
require 'kyanite/unit_test'
|
3
|
+
require 'perception'
|
4
|
+
|
5
|
+
|
6
|
+
class TestPerceptionPPP < UnitTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
seee.init
|
10
|
+
seee.out = []
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def test_010_symbol
|
15
|
+
test = :hallo_test
|
16
|
+
result1 = ":hallo_test"
|
17
|
+
result2 = "\n:hallo_test"
|
18
|
+
assert_equal result1, test.inspect_pp
|
19
|
+
assert_equal result1, test.inspect_see
|
20
|
+
assert_equal result2, see(test); setup
|
21
|
+
assert_equal result2, see_pp(test); setup
|
22
|
+
assert_equal result2, see_puts(test); setup
|
23
|
+
assert_equal result2, see_print(test); setup
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# Bei String unterscheiden sich die Ergebnisse von inspect_see und see
|
28
|
+
def test_021_string
|
29
|
+
test = %q{Hallo "''" Welt}
|
30
|
+
result1 = %q{'Hallo "''" Welt'}
|
31
|
+
result2 = %q{Hallo "''" Welt}
|
32
|
+
result1b = %Q{\n'Hallo "''" Welt'}
|
33
|
+
result2b = %Q{\nHallo "''" Welt}
|
34
|
+
|
35
|
+
assert_equal result1, test.inspect_pp
|
36
|
+
assert_equal result1, test.inspect_see
|
37
|
+
assert_equal result1b, see_pp(test); setup
|
38
|
+
|
39
|
+
assert_equal result2b, see_puts(test); setup
|
40
|
+
assert_equal result2b, see_print(test); setup
|
41
|
+
assert_equal result2b, see(test); setup
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
def test_022_string
|
46
|
+
test = %q{}
|
47
|
+
result1 = %q{''}
|
48
|
+
result1b = %Q{\n''}
|
49
|
+
result2 = %q{empty}
|
50
|
+
result2b = %Q{\nempty}
|
51
|
+
|
52
|
+
assert_equal result1, test.inspect_pp
|
53
|
+
assert_equal result1, test.inspect_see
|
54
|
+
assert_equal result1b, see_pp(test); setup
|
55
|
+
|
56
|
+
assert_equal result2b, see_puts(test); setup
|
57
|
+
assert_equal result2b, see_print(test); setup
|
58
|
+
assert_equal result2b, see(test); setup
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
def test_031_array
|
63
|
+
test = [1,2,3]
|
64
|
+
result1 = %q{[1, 2, 3]}
|
65
|
+
result1b = %Q{\n[1, 2, 3]}
|
66
|
+
assert_equal result1, test.inspect_pp
|
67
|
+
assert_equal result1b, see_puts(test); setup
|
68
|
+
assert_equal result1b, see_print(test); setup
|
69
|
+
assert_equal result1, test.inspect_see
|
70
|
+
assert_equal result1b, see_pp(test); setup
|
71
|
+
assert_equal result1b, see(test); setup
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def test_032_array
|
76
|
+
test = []
|
77
|
+
test << ['this','is','an','array','1']
|
78
|
+
test << ['this','is','another','array','2']
|
79
|
+
test << ['and','this','is','another', :tree]
|
80
|
+
test << ['no',{:key => :value},'just','another', 'array']
|
81
|
+
result1 = %Q{\n[['this', 'is', 'an', 'array', '1'], ['this', 'is', 'another', 'array', '2'], ['and', 'this', 'is', 'another', :tree], ['no', {:key=>:value}, 'just', 'another', 'array']]}
|
82
|
+
result2 = result1.gsub(%q{'},%q{"})
|
83
|
+
result3 = <<ENDOFSTRING
|
84
|
+
[['this', 'is', 'an', 'array', '1'],
|
85
|
+
['this', 'is', 'another', 'array', '2'],
|
86
|
+
['and', 'this', 'is', 'another', :tree],
|
87
|
+
['no', {:key=>:value}, 'just', 'another', 'array']]
|
88
|
+
ENDOFSTRING
|
89
|
+
result3 = result3.chomp.strip.gsub("\n"," \n")
|
90
|
+
|
91
|
+
assert_equal result1.gsub("\n",""), test.inspect_pp
|
92
|
+
assert_equal result2, see_puts(test); setup
|
93
|
+
assert_equal result2, see_print(test); setup
|
94
|
+
assert_equal result3, test.inspect_see#.gsub("\n",'')
|
95
|
+
assert_equal "\n" + result3, see_pp(test); setup
|
96
|
+
assert_equal "\n" + result3, see(test); setup
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
def test_033_array
|
101
|
+
t1 = 'long_longlong_long_long'
|
102
|
+
t2 = 'also_long, also_long, also_long_also'
|
103
|
+
t3 = 'hallo'
|
104
|
+
test = []
|
105
|
+
test << %W{one a b c}
|
106
|
+
test << ['two', t1, t2, t3]
|
107
|
+
test << ['three', t2, t2, t1]
|
108
|
+
result1 = <<ENDOFSTRING
|
109
|
+
[['one', 'a', 'b', 'c'],
|
110
|
+
['two', 'long_longlong_long_long', 'also_long, also_long, also_long_also', 'hallo'],
|
111
|
+
['three', 'also_long, also_long, also_long_also', 'also_long, also_long, also_long_also', 'long_longlong_long_long']]
|
112
|
+
ENDOFSTRING
|
113
|
+
result1 = result1.chomp.strip
|
114
|
+
result2 = result1.gsub(%q{'},%q{"}).gsub("\n",'')
|
115
|
+
result3 = <<ENDOFSTRING
|
116
|
+
[['one', 'a', 'b', 'c'],
|
117
|
+
['two', 'long_longlong_long_long', 'also_long, also_long, also_long_also', 'hallo'],
|
118
|
+
['three', 'also_long, also_long, also_long_also', 'also_long, also_long, also_long_also', 'long_longlong_long_long']]
|
119
|
+
ENDOFSTRING
|
120
|
+
result3=result3.chomp
|
121
|
+
|
122
|
+
assert_equal result1, test.inspect_pp
|
123
|
+
assert_equal "\n" + result2, see_puts(test); setup
|
124
|
+
assert_equal "\n" + result2, see_print(test); setup
|
125
|
+
# puts
|
126
|
+
# require File.join(File.dirname(__FILE__), '..', '..', 'klippstein_ruby_extensions', 'lib', 'string' )
|
127
|
+
# pp test.inspect_see.overlapdiff(result3)
|
128
|
+
# puts
|
129
|
+
assert_equal result3, test.inspect_see#.gsub("\n",'')
|
130
|
+
assert_equal "\n" + result3, see_pp(test); setup
|
131
|
+
assert_equal "\n" + result3, see(test); setup
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
def test_040_object
|
138
|
+
seee.logger
|
139
|
+
see 'hi'
|
140
|
+
seee.time_last = Time.at(1296702800)
|
141
|
+
test = seee
|
142
|
+
result1 = <<ENDOFSTRING
|
143
|
+
#<Perception::SeeSession:0x2860d24
|
144
|
+
@call_stack_last = 20,
|
145
|
+
@call_stack_now = 20,
|
146
|
+
@cursor_now = 0,
|
147
|
+
@delayed_clear = false,
|
148
|
+
@delayed_newlines = 0,
|
149
|
+
@indent = false,
|
150
|
+
@level = 1,
|
151
|
+
@logger = #<Logger:0x2ae165c @default_formatter=#<>, @formatter=nil, @level=0, @logdev=#<<><[][]>>, @progname=nil>,
|
152
|
+
@method_last = :puts,
|
153
|
+
@method_now = :pp,
|
154
|
+
@out = [],
|
155
|
+
@speed = nil,
|
156
|
+
@string_last = 'hi',
|
157
|
+
@time_last = 2011-02-03 Thursday 04:13:20>
|
158
|
+
ENDOFSTRING
|
159
|
+
result1 = result1.strip.chomp.gsub("\n",' ')
|
160
|
+
|
161
|
+
# seee-ID austauschen
|
162
|
+
id = "%x" % (seee.__id__ * 2)
|
163
|
+
id.sub!(/\Af(?=[[:xdigit:]]{2}+\z)/, '') if id.sub!(/\A\.\./, '')
|
164
|
+
id = "0x#{id}"
|
165
|
+
result1 = result1.gsub('0x2860d24',id)
|
166
|
+
|
167
|
+
# Logger-ID austauschen
|
168
|
+
id = "%x" % (seee.logger.__id__ * 2)
|
169
|
+
id.sub!(/\Af(?=[[:xdigit:]]{2}+\z)/, '') if id.sub!(/\A\.\./, '')
|
170
|
+
id = "0x#{id}"
|
171
|
+
result1 = result1.gsub('0x2ae165c',id)
|
172
|
+
|
173
|
+
assert_equal result1, see(test).strip.chomp.gsub("\n",' '); setup
|
174
|
+
end
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
def test_053_dictionary
|
179
|
+
require 'facets/dictionary'
|
180
|
+
|
181
|
+
@dictionary = Dictionary.new
|
182
|
+
@dictionary[:a_dictionary] = true
|
183
|
+
@dictionary[:b_init] = true
|
184
|
+
@dictionary[:c_symbol] = :symbol
|
185
|
+
@dictionary[:d_array] = [1,2,3]
|
186
|
+
@dictionary[:e_integer] = 1
|
187
|
+
@dictionary[:f_string] = 'hallo'
|
188
|
+
@subdictionary = Dictionary.new
|
189
|
+
@subdictionary[:a] = :value
|
190
|
+
@subdictionary[:b] = 'blubb'
|
191
|
+
@subdictionary[:c] = 2
|
192
|
+
@subdictionary[:d] = [:a,:b,:c]
|
193
|
+
@subdictionary[:e] = { :key => :value}
|
194
|
+
@subdictionary[:f] = 'hallo'
|
195
|
+
@dictionary[:g_subdictionary] = @subdictionary
|
196
|
+
test = @dictionary
|
197
|
+
|
198
|
+
result1 = <<ENDOFSTRING
|
199
|
+
{:a_dictionary=>true,
|
200
|
+
:b_init=>true,
|
201
|
+
:c_symbol=>:symbol,
|
202
|
+
:d_array=>[1, 2, 3],
|
203
|
+
:e_integer=>1,
|
204
|
+
:f_string=>'hallo',
|
205
|
+
:g_subdictionary=>
|
206
|
+
{:a=>:value,
|
207
|
+
:b=>'blubb',
|
208
|
+
:c=>2,
|
209
|
+
:d=>[:a, :b, :c],
|
210
|
+
:e=>{:key=>:value},
|
211
|
+
:f=>'hallo'}}
|
212
|
+
ENDOFSTRING
|
213
|
+
result1 = result1.chomp
|
214
|
+
result2 = '{:a_dictionary=>true, :b_init=>true, :c_symbol=>:symbol, :d_array=>[1, 2, 3], :e_integer=>1, :f_string=>"hallo", :g_subdictionary=>{:a=>:value, :b=>"blubb", :c=>2, :d=>[:a, :b, :c], :e=>{:key=>:value}, :f=>"hallo"}}'
|
215
|
+
result3 = <<ENDOFSTRING
|
216
|
+
{:a_dictionary => true,
|
217
|
+
:b_init => true,
|
218
|
+
:c_symbol => :symbol,
|
219
|
+
:d_array => [1, 2, 3],
|
220
|
+
:e_integer => 1,
|
221
|
+
:f_string => 'hallo',
|
222
|
+
:g_subdictionary => {:a=>:value, :b=>'blubb', :c=>2, :d=>[:a, :b, :c], :e=>{:key=>:value}, :f=>'hallo'}}
|
223
|
+
ENDOFSTRING
|
224
|
+
result3 = result3.chomp
|
225
|
+
|
226
|
+
|
227
|
+
assert_equal result1, test.inspect_pp
|
228
|
+
assert_equal "\n" + result2, see_puts(test); setup
|
229
|
+
assert_equal "\n" + result2, see_print(test); setup
|
230
|
+
|
231
|
+
assert_equal result3, test.inspect_see
|
232
|
+
assert_equal "\n" + result3, see_pp(test); setup
|
233
|
+
assert_equal "\n" + result3, see(test); setup
|
234
|
+
end
|
235
|
+
|
236
|
+
|
237
|
+
def test_061_set
|
238
|
+
test = SortedSet.new([1,2,3])
|
239
|
+
result1 = "{1, 2, 3}"
|
240
|
+
assert_equal result1, test.inspect_pp
|
241
|
+
assert_equal result1, test.inspect_see
|
242
|
+
assert_equal "\n" + result1, see_puts(test); setup
|
243
|
+
assert_equal "\n" + result1, see_print(test); setup
|
244
|
+
assert_equal "\n" + result1, see_pp(test); setup
|
245
|
+
assert_equal "\n" + result1, see(test); setup
|
246
|
+
end
|
247
|
+
|
248
|
+
|
249
|
+
def test_071_multi
|
250
|
+
result = see 'hallo', '1'
|
251
|
+
assert_equal %Q{\n'hallo' '1'}, result
|
252
|
+
setup
|
253
|
+
|
254
|
+
result = see 'halloewtewgsdgvsdgdfgbdfxbgdgbdfgdfxgdsf', '1'
|
255
|
+
assert_equal %Q{\n'halloewtewgsdgvsdgdfgbdfxbgdgbdfgdfxgdsf' '1'}, result
|
256
|
+
setup
|
257
|
+
|
258
|
+
result = see :a, '1'
|
259
|
+
assert_equal %Q{\n:a '1'}, result
|
260
|
+
setup
|
261
|
+
|
262
|
+
result = see [:a,:b], '1'
|
263
|
+
assert_equal %Q{\n[:a, :b] '1'}, result
|
264
|
+
setup
|
265
|
+
|
266
|
+
result = see [1,2], [:a,:b]
|
267
|
+
assert_equal %Q{\n[1, 2] [:a, :b]}, result
|
268
|
+
setup
|
269
|
+
|
270
|
+
result = see :a,:b,:c
|
271
|
+
assert_equal %Q{\n:a :b :c}, result
|
272
|
+
setup
|
273
|
+
|
274
|
+
result = see 1,2,3
|
275
|
+
assert_equal %Q{\n1 2 3}, result
|
276
|
+
setup
|
277
|
+
end
|
278
|
+
|
279
|
+
|
280
|
+
end # class
|
281
|
+
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
|
data/website/index.html
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
4
|
+
<title>perception</title>
|
5
|
+
|
6
|
+
</head>
|
7
|
+
<body id="body">
|
8
|
+
<p>This page has not yet been created for RubyGem <code>perception</code></p>
|
9
|
+
<p>To the developer: To generate it, update website/index.txt and run the rake task <code>website</code> to generate this <code>index.html</code> file.</p>
|
10
|
+
</body>
|
11
|
+
</html>
|
data/website/index.txt
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
h1. perception
|
2
|
+
|
3
|
+
h1. → 'perception'
|
4
|
+
|
5
|
+
|
6
|
+
h2. What
|
7
|
+
|
8
|
+
|
9
|
+
h2. Installing
|
10
|
+
|
11
|
+
<pre syntax="ruby">sudo gem install perception</pre>
|
12
|
+
|
13
|
+
h2. The basics
|
14
|
+
|
15
|
+
|
16
|
+
h2. Demonstration of usage
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
h2. Forum
|
21
|
+
|
22
|
+
"http://groups.google.com/group/perception":http://groups.google.com/group/perception
|
23
|
+
|
24
|
+
TODO - create Google Group - perception
|
25
|
+
|
26
|
+
h2. How to submit patches
|
27
|
+
|
28
|
+
Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
|
29
|
+
|
30
|
+
TODO - pick SVN or Git instructions
|
31
|
+
|
32
|
+
The trunk repository is <code>svn://rubyforge.org/var/svn/perception/trunk</code> for anonymous access.
|
33
|
+
|
34
|
+
OOOORRRR
|
35
|
+
|
36
|
+
You can fetch the source from either:
|
37
|
+
|
38
|
+
<% if rubyforge_project_id %>
|
39
|
+
|
40
|
+
* rubyforge: "http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>":http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>
|
41
|
+
|
42
|
+
<pre>git clone git://rubyforge.org/perception.git</pre>
|
43
|
+
|
44
|
+
<% else %>
|
45
|
+
|
46
|
+
* rubyforge: MISSING IN ACTION
|
47
|
+
|
48
|
+
TODO - You can not created a RubyForge project, OR have not run <code>rubyforge config</code>
|
49
|
+
yet to refresh your local rubyforge data with this projects' id information.
|
50
|
+
|
51
|
+
When you do this, this message will magically disappear!
|
52
|
+
|
53
|
+
Or you can hack website/index.txt and make it all go away!!
|
54
|
+
|
55
|
+
<% end %>
|
56
|
+
|
57
|
+
* github: "http://github.com/GITHUB_USERNAME/perception/tree/master":http://github.com/GITHUB_USERNAME/perception/tree/master
|
58
|
+
|
59
|
+
<pre>git clone git://github.com/GITHUB_USERNAME/perception.git</pre>
|
60
|
+
|
61
|
+
|
62
|
+
TODO - add "github_username: username" to ~/.rubyforge/user-config.yml and newgem will reuse it for future projects.
|
63
|
+
|
64
|
+
|
65
|
+
* gitorious: "git://gitorious.org/perception/mainline.git":git://gitorious.org/perception/mainline.git
|
66
|
+
|
67
|
+
<pre>git clone git://gitorious.org/perception/mainline.git</pre>
|
68
|
+
|
69
|
+
h3. Build and test instructions
|
70
|
+
|
71
|
+
<pre>cd perception
|
72
|
+
rake test
|
73
|
+
rake install_gem</pre>
|
74
|
+
|
75
|
+
|
76
|
+
h2. License
|
77
|
+
|
78
|
+
This code is free to use under the terms of the MIT license.
|
79
|
+
|
80
|
+
h2. Contact
|
81
|
+
|
82
|
+
Comments are welcome. Send an email to "Bjoern Klippstein":mailto:FIXME email via the "forum":http://groups.google.com/group/perception
|
83
|
+
|