perception 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/demo/demo_zz.rb ADDED
@@ -0,0 +1,332 @@
1
+
2
+ if $0 == __FILE__
3
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'perception' )
4
+ else
5
+ require 'perception'
6
+ end
7
+
8
+
9
+ module Perception #:nodoc
10
+
11
+ class DemoSee
12
+ @@initialized_count = 0
13
+
14
+ def initialize( announce_first=true )
15
+ @@initialized_count += 1
16
+ return if (@@initialized_count == 1 && !announce_first)
17
+ seee.fast!
18
+ #seee.left!
19
+ seee.indent!
20
+ see ("\n" * 5) if @@initialized_count > 1
21
+ see "Perception Demo ##{@@initialized_count}"
22
+ see "=================="
23
+ see
24
+ wait_for_key('Press any key to start')
25
+ end # def
26
+
27
+
28
+
29
+ # Printing basic types
30
+ def demo_see_basic_types
31
+ see '1dim Arrays:'
32
+ see a=['this','is','an','array','1']
33
+ see b=['this','is','another','array','2']
34
+ see c=['and','this','is','another', :tree]
35
+ see d=['complex array', [1,2,3], {:key => :value, :love => :baby}, 4.0, :four]
36
+ see d=['next','is','two','blank', 'lines']
37
+ see
38
+ see
39
+ see '2dim Arrays'
40
+ see [a,b,c,d]
41
+ see
42
+ see
43
+ see 'Other Objects:'
44
+ see []
45
+ see 'ordinary string (without "")'
46
+ see '(next one is empty)'
47
+ see ''
48
+ see 1
49
+ see 2
50
+ see 3.0
51
+ see nil
52
+ see true
53
+ see false
54
+ see :a_symbol
55
+ see({:key => :value, :love => :baby})
56
+ see ['complex array', [1,2,3], {:key => :value, :love => :baby}, 3.0 , '']
57
+ end # def
58
+
59
+
60
+ def demo_level
61
+ seee.slow!
62
+ see "The printout is automaticaly indented. This is the printout of a nested structure of #see's:"
63
+ see
64
+ see
65
+ seee.indent!
66
+ sub_demo_level
67
+ see
68
+ see
69
+ wait_for_key
70
+ see 'You can force left printout with seee.left!. Reactivate indention with seee.indent!.'
71
+ seee.left!
72
+ see
73
+ see
74
+ sub_demo_level
75
+ end
76
+
77
+
78
+ def sub_demo_level
79
+ see "Hello world. This is level zero. "
80
+ (1..1).each do
81
+ see "This is the beginning of level one."
82
+ 1.downto(1) do
83
+ see "This is the beginning of level two."
84
+ 1.upto(1) do
85
+ see "This is the beginning of level three."
86
+ 1.times do
87
+ see "This is the beginning of level four."
88
+ see "This is the end of level four."
89
+ end
90
+ see "This is the end of level three."
91
+ end
92
+ see "This is the end of level two."
93
+ end
94
+ see "This is the end of level one."
95
+ end
96
+ see "This is level zero again. Bye. "
97
+ end # def
98
+
99
+
100
+
101
+
102
+
103
+
104
+ # slow printing
105
+ def demo_see_slowdown1
106
+ seee.slow!
107
+ see 'This is a string'
108
+ see 'and here we have a longer one.'
109
+ see 'so we need even longeer strings, but they all have to be different.'
110
+ see '#see has forgotten the first string. So I will tell him again: This is a string. and here we have a longer one. '
111
+ see 'In slow mode #see waits for you to read the lines. More words, longer waiting.'
112
+ see 'short prints...'
113
+ see '...short waiting.'
114
+ see 'short prints...'
115
+ see '...short waiting.'
116
+ string = 'This string is getting longer.'
117
+ (1..10).each do |i|
118
+ see string
119
+ string += ' But it repeats.'
120
+ end
121
+ see '#see only counts those words you have to read.'
122
+ see 'You can choose the speed. This is faster:'
123
+
124
+ wait_for_key
125
+ see
126
+ seee.slow!(0.5)
127
+ see 'This is a string'
128
+ see 'and here we have a longer one.'
129
+ see 'so we need even longeer strings, but they all have to be different.'
130
+ see '#see has forgotten the first string. So I will tell him again: This is a string. and here we have a longer one. '
131
+ see 'In slow mode #see waits for you to read the lines. More words, longer waiting.'
132
+ see 'short prints...'
133
+ see '...short waiting.'
134
+ see '...short waiting.'
135
+ string = 'This string is getting longer.'
136
+ (1..10).each do |i|
137
+ see string
138
+ string += ' But it repeats.'
139
+ end
140
+ see '#see only counts those words you have to read.'
141
+ see
142
+ end
143
+
144
+
145
+ def demo_see_slowdown2
146
+ seee.slow!
147
+ (1..8).each do |i|
148
+ see "#{i} see this "
149
+ end
150
+ (1..8).each do |i|
151
+ see "#{i} see that "
152
+ sleep 0.05
153
+ end
154
+ see 'The speed was always the same, but each "see that" took double the time.'
155
+ see '#see knows the time since last print.'
156
+ see 'You can use this for simple benchmarking:'
157
+ end
158
+
159
+
160
+ # Simple benchmarking
161
+ def demo_bench
162
+ see "I'm counting to 10 000 000, please wait."
163
+ 10000000.downto(0) {}
164
+ see "it took #{seee.bench} seconds."
165
+ see 'You always get the time since last print with seee.bench.'
166
+ end
167
+
168
+
169
+ # temporary printing
170
+ def demo_see_temp_and_clear_last
171
+ seee.slow!
172
+ see_print "countdown: "
173
+ 10.downto(0) do |i|
174
+ see_temp i
175
+ end
176
+ see 'finished!'
177
+ sleep 1
178
+ seee.clear!
179
+ see 'You can clear the last print with seee.clear!'
180
+ see 'And you can print temporary informations with see_temp'
181
+ end
182
+
183
+
184
+ # print two informations on one line
185
+ def demo_see_flash1
186
+ seee.fast!
187
+ (1..1000).each do |i|
188
+ see "I am line number #{i}. Waiting for line number 327."
189
+ seee.flash! if i == 327
190
+ end
191
+ see 'You can make the last printout blink with seee.flash!'
192
+ end
193
+
194
+
195
+ # print two informations on one line
196
+ def demo_alternate_see
197
+ see ['this','is','an','array',:one]
198
+ see ['this','is','an','array',:two]
199
+ see ['this','is','an','array',:three]
200
+ see ['this', [1,2,3], {:wEDSG => :DZHe5D, :DShg => :DGStdf}, 4.0, :four]
201
+ seee.flash! ' Hoops!! '
202
+ see ['this','is','an','array',:five]
203
+ see ['this','is','an','array',:six]
204
+ see ['this','is','an','array',:seven]
205
+ end
206
+
207
+
208
+ def demo_flash_puts
209
+ see 'Bla Bla '
210
+ see 'Bla Bla '
211
+ see 'Bla Bla '
212
+ see 'Bla Bla '
213
+ see 'Bla Bla '
214
+ see 'Bla Bla '
215
+ see 'Bla Bla '
216
+ see 'Bla Bla '
217
+ see 'Important'
218
+ seee.flash!
219
+ see 'Bla Bla '
220
+ see 'Bla Bla '
221
+ see 'Bla Bla '
222
+ see 'Bla Bla '
223
+ see 'Bla Bla '
224
+ see 'Bla Bla '
225
+ see 'Bla Bla '
226
+ see 'Bla Bla '
227
+ end
228
+
229
+
230
+ def demo_flash_pp
231
+ see_pp 'Bla Bla '
232
+ see_pp 'Bla Bla '
233
+ see_pp 'Bla Bla '
234
+ see_pp 'Bla Bla '
235
+ see_pp 'Bla Bla '
236
+ see_pp 'Bla Bla '
237
+ see_pp 'Bla Bla '
238
+ see_pp 'Bla Bla '
239
+ see_pp 'Important '
240
+ seee.flash!
241
+ see_pp 'Bla Bla '
242
+ see_pp 'Bla Bla '
243
+ see_pp 'Bla Bla '
244
+ see_pp 'Bla Bla '
245
+ see_pp 'Bla Bla '
246
+ see_pp 'Bla Bla '
247
+ see_pp 'Bla Bla '
248
+ see_pp 'Bla Bla '
249
+ end
250
+
251
+
252
+ def demo_flash_print
253
+ see_print 'Bla Bla '
254
+ see_print 'Bla Bla '
255
+ see_print 'Bla Bla '
256
+ see_print 'Bla Bla '
257
+ see_print 'Bla Bla '
258
+ see_print 'Bla Bla '
259
+ see_print 'Bla Bla '
260
+ see_print 'Bla Bla '
261
+ see_print 'Important '
262
+ seee.flash!
263
+ see_print 'Bla Bla '
264
+ see_print 'Bla Bla '
265
+ see_print 'Bla Bla '
266
+ see_print 'Bla Bla '
267
+ see_print 'Bla Bla '
268
+ see_print 'Bla Bla '
269
+ see_print 'Bla Bla '
270
+ see_print 'Bla Bla '
271
+ end
272
+
273
+
274
+ def demo_noinput
275
+ method = :see
276
+ seee.slow!
277
+ Object.send(method, 'Hallo')
278
+ Object.send(method)
279
+ Object.send(method, 'Welt')
280
+ Object.send(method)
281
+ Object.send(method, 'Double')
282
+ Object.send(method)
283
+ Object.send(method)
284
+ Object.send(method, 'Space')
285
+ Object.send(method)
286
+ Object.send(method)
287
+ Object.send(method, 'Blubb')
288
+ Object.send(method)
289
+ Object.send(method)
290
+ Object.send(method, 'Blubb!!')
291
+ end
292
+
293
+
294
+
295
+
296
+ def self.see_all_demos
297
+ Perception::DemoSee.new.demo_see_basic_types
298
+ Perception::DemoSee.new.demo_level
299
+ Perception::DemoSee.new.demo_see_slowdown1
300
+ Perception::DemoSee.new.demo_see_slowdown2
301
+ Perception::DemoSee.new.demo_bench
302
+ Perception::DemoSee.new.demo_see_temp_and_clear_last
303
+ Perception::DemoSee.new.demo_see_flash1
304
+ Perception::DemoSee.new.demo_alternate_see
305
+
306
+ Perception::DemoSee.new.demo_flash_puts
307
+ Perception::DemoSee.new.demo_flash_pp
308
+ Perception::DemoSee.new.demo_flash_print
309
+ Perception::DemoSee.new.demo_noinput
310
+ end
311
+
312
+
313
+
314
+ end # class
315
+ end # class
316
+
317
+
318
+ if $0 == __FILE__ then
319
+
320
+ Perception::DemoSee.see_all_demos
321
+
322
+ end
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
data/init.rb ADDED
@@ -0,0 +1,2 @@
1
+
2
+ require File.join(File.dirname(__FILE__), 'lib', 'perception.rb' )
@@ -0,0 +1,78 @@
1
+
2
+ require File.join(File.dirname(__FILE__), '..', 'perception' ) if $0 == __FILE__
3
+
4
+ module Perception #:nodoc
5
+
6
+ unless defined?(TIME_FORMATS)
7
+ TIME_FORMATS = {
8
+ # 0 1 2 3 4
9
+ :iso => [ '%Y-%m-%d', '%Y-%m-%d %H:%M', '%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S', '%Y-%m-%d %A %H:%M:%S' ],
10
+ :de => [ '%d.%b.%Y', '%d.%b.%Y %H:%M', '%d.%b.%Y %H:%M:%S', '%d. %B %Y %H:%M:%S', '%A, %d. %B %Y %H:%M:%S' ] # %e is not working
11
+ }
12
+ end
13
+
14
+
15
+
16
+
17
+ # Shows a ruler
18
+ unless defined? RULER
19
+ r100= "0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999"
20
+ r10= "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
21
+ RULER = r100 + r100 + "\n" + r10 + r10
22
+ end
23
+
24
+
25
+ SEE_PERCEPTION_TIME_PER_WORD = 200 unless defined? SEE_PERCEPTION_TIME_PER_WORD
26
+
27
+ # automatic indention
28
+ SEE_TAB_WIDTH = 2 unless defined? SEE_TAB_WIDTH
29
+ SEE_LEVEL_START = 1 unless defined? SEE_LEVEL_START
30
+ SEE_INDENT_START = false unless defined? SEE_INDENT_START
31
+
32
+
33
+ # nicht verwenden: 07..13, 27
34
+ PPP_KOMMA = 1.chr unless defined? PPP_KOMMA
35
+ PPP_SEARCH = 2.chr unless defined? PPP_SEARCH
36
+ PPP_GESCHW_KLAMMER_AUF = 3.chr unless defined? PPP_GESCHW_KLAMMER_AUF
37
+ PPP_GESCHW_KLAMMER_ZU = 4.chr unless defined? PPP_GESCHW_KLAMMER_ZU
38
+ PPP_ECKIGE_KLAMMER_AUF = 5.chr unless defined? PPP_ECKIGE_KLAMMER_AUF
39
+ PPP_ECKIGE_KLAMMER_ZU = 6.chr unless defined? PPP_ECKIGE_KLAMMER_ZU
40
+ PPP_SPITZE_KLAMMER_AUF = 14.chr unless defined? PPP_SPITZE_KLAMMER_AUF
41
+ PPP_SPITZE_KLAMMER_ZU = 15.chr unless defined? PPP_SPITZE_KLAMMER_ZU
42
+ PPP_PFEIL = 16.chr+16.chr unless defined? PPP_PFEIL
43
+ PPP_TUDDELCHEN1 = 17.chr unless defined? PPP_TUDDELCHEN1
44
+ PPP_TUDDELCHEN2 = 18.chr unless defined? PPP_TUDDELCHEN2
45
+ PPP_ANTI_NEWLINE = 31.chr unless defined? PPP_ANTI_NEWLINE
46
+
47
+
48
+
49
+
50
+ # codieren: P => Q, in P fehlen derzeit die spitzen Klammern, weil sonst Hash nicht funktioniert
51
+ # decodieren: Q => R
52
+ PPP_TR_ARRAY_P = %q{'"{}[]<>} unless defined? PPP_TR_ARRAY_P
53
+ unless defined? PPP_TR_ARRAY_Q
54
+ PPP_TR_ARRAY_Q = PPP_TUDDELCHEN1 + PPP_TUDDELCHEN2 +
55
+ PPP_GESCHW_KLAMMER_AUF + PPP_GESCHW_KLAMMER_ZU +
56
+ PPP_ECKIGE_KLAMMER_AUF + PPP_ECKIGE_KLAMMER_ZU +
57
+ PPP_SPITZE_KLAMMER_AUF + PPP_SPITZE_KLAMMER_ZU
58
+ end
59
+ PPP_TR_ARRAY_R = %q{'"{}[]<>} unless defined? PPP_TR_ARRAY_R
60
+
61
+ PPP_TR_ALL = PPP_TR_ARRAY_Q + PPP_KOMMA + PPP_ANTI_NEWLINE unless defined? PPP_TR_ALL
62
+
63
+
64
+
65
+
66
+ end # module
67
+
68
+
69
+
70
+ # -----------------------------------------------------------------------------------------
71
+ # ausprobieren
72
+ #
73
+ if $0 == __FILE__ then
74
+
75
+ require File.join(File.dirname(__FILE__), '..', '..', 'demo', 'demo_pp' )
76
+ Perception::DemoSee.see_all_demos
77
+
78
+ end # if
@@ -0,0 +1,78 @@
1
+
2
+ require File.join(File.dirname(__FILE__), '..', 'perception' ) if $0 == __FILE__
3
+
4
+
5
+ module Perception #:nodoc
6
+ module TimeI
7
+
8
+
9
+ def inspect_see(options={})
10
+ norm = options[:norm] || :iso
11
+ precision_max = 4
12
+ precision = options[:precision] || precision_max
13
+ precision = 0 if precision < 0
14
+ precision = precision_max if precision > precision_max
15
+ formatstring = TIME_FORMATS[norm][precision]
16
+ self.strftime(formatstring)
17
+ end
18
+
19
+
20
+
21
+
22
+ def to_s
23
+ self.inspect_see(:precision => 5)
24
+ end
25
+
26
+
27
+ def pretty_print(q)
28
+ q.text(self.inspect_see(:precision => 5))
29
+ end
30
+
31
+
32
+ end # module TimeI
33
+ end # module Perception
34
+
35
+
36
+
37
+
38
+ class Time #:nodoc:
39
+ include Perception::TimeI
40
+ end
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+ # -----------------------------------------------------------------------------------------
51
+ # Tests
52
+ #
53
+ if $0 == __FILE__ then
54
+
55
+ # ms = 2635200
56
+ # puts (Time.now - ms*0).inspect_see(:norm => :de, :precision => 5)
57
+ # see Time.now
58
+
59
+ require File.join(File.dirname(__FILE__), '..', '..', 'test', 'test_date_and_time' )
60
+
61
+
62
+ end # if
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
@@ -0,0 +1,123 @@
1
+
2
+ require File.join(File.dirname(__FILE__), '..', 'perception' ) if $0 == __FILE__
3
+
4
+
5
+ module Perception #:nodoc
6
+
7
+ class SeeSession
8
+
9
+ def logger( logdir=nil, filename='see.log' )
10
+ return @logger if @logger
11
+ require 'logger' unless defined?(Logger)
12
+
13
+ # Logfile festlegen
14
+ unless logdir
15
+ mycaller = CallerUtils.mycaller(:skip => ['perception', 'ruby\gems', 'ruby/gems', 'test/unit'])
16
+ logdir = CallerUtils.mycaller_maindir(mycaller) + '/log' if mycaller
17
+ end
18
+ if ( logdir.nil? || logdir == 'test/log' )
19
+ require 'tmpdir'
20
+ logdir = Dir::tmpdir + '/log'
21
+ end
22
+ logfile = File.join(logdir, filename)
23
+ # puts "\nmycaller=#{mycaller.inspect_pp}"
24
+ # puts "\nlogdir=#{logdir.inspect_pp}"
25
+ # puts "\nlogfile=#{logfile.inspect_pp}"
26
+
27
+
28
+ # Erzeugen, wenn nötig
29
+ begin
30
+ # Dir erzeugen
31
+ unless File.exist?(logdir)
32
+ Dir.mkdir(logdir)
33
+ puts "\n\nSeeSession#logger: Directory #{logdir} created\n\n"
34
+ end
35
+ # File erzeugen
36
+ unless File.exist?(logfile)
37
+ File.open(logfile,(File::WRONLY | File::APPEND | File::CREAT))
38
+ log_status("Logfile created by #{mycaller}")
39
+ end
40
+ #Logger erzeugen
41
+ @logger = Logger.new( logfile )
42
+ log_level = :debug
43
+ @logger.level = Logger.const_get(log_level.to_s.upcase)
44
+ @logger << "\n" # dem letzten Eintrag fehlt vielleicht das newline
45
+ #rescue
46
+
47
+ end
48
+
49
+ return @logger
50
+ end # def
51
+
52
+
53
+
54
+ def log_status(message='')
55
+ status = "\n\n\n# " + ('-'*120) + "\n"
56
+ status += "# " + Time.now.inspect_see + "\n"
57
+ status += "# " + message + "\n"
58
+ logger << status
59
+ end
60
+
61
+
62
+ end # class
63
+
64
+
65
+ end # module
66
+
67
+
68
+ class Object
69
+
70
+ # Same as method see, but outputs in logfile only
71
+ def log(input=:kein_input, *rest)
72
+ out_bak = seee.out.dup
73
+ seee.out=[:log]
74
+ if rest.empty?
75
+ see input
76
+ else
77
+ seee.process_print( ( [input] + rest), :method => :multi )
78
+ end
79
+ seee.out=out_bak
80
+ nil
81
+ end
82
+
83
+
84
+ # raw output into logfile
85
+ def rawlog(input='')
86
+ seee.logger << (input)
87
+ nil
88
+ end
89
+
90
+
91
+ end
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+ # ------------------------------------------------------------------------------
100
+ # Ausprobieren
101
+ #
102
+ if $0 == __FILE__ then
103
+
104
+
105
+ see "Hallo"
106
+ see 'Jups.', :g, :h
107
+ #seee.log_status
108
+ log 'Jups.'
109
+ log 'Jups.', :g, :h
110
+
111
+
112
+
113
+ end # if
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+