typrtail 0.0.2 → 0.0.3

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.
@@ -18,6 +18,21 @@ h1. Installation
18
18
  user@host ~$ gem install typrtail
19
19
  </pre>
20
20
 
21
+ h1. Configuration
22
+
23
+ @typrtail@ looks for @$HOME/.typrtailrc@ and if it exists, loads it. This file
24
+ is plain ruby, you can override any of the parameters any way you like...have
25
+ it your way.
26
+
27
+ <pre>
28
+ # override some defaults, be faster with more errors!
29
+ $speed_adjust = 0.35 # was 1.0
30
+ $typo_prob = 35
31
+ $min_typo_prob = 15
32
+
33
+ # stop more abruptly when we hit a typo
34
+ $time_to_recognize_typo = 0.4 # was 0.3
35
+ </pre>
21
36
 
22
37
  h1. FAQ
23
38
 
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # to make everything faster, make this <1.0, sower >1.0 HTH
3
+ RC_FILE = "#{ENV['HOME']}/.typrtailrc"
4
+
5
+ # to make everything faster, make this <1.0, slower >1.0 HTH
4
6
  $speed_adjust = 1.0
5
7
 
6
8
  $rand_base = 10
@@ -171,6 +173,9 @@ def erase_typo
171
173
  sleep slp
172
174
  end
173
175
 
176
+
177
+ load RC_FILE if File.exist? RC_FILE
178
+
174
179
  lastch = ' '
175
180
  chars_since_typeo = 0
176
181
  total_chars = 0
Binary file
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
 
4
4
  SPEC = Gem::Specification.new do |s|
5
5
  s.name = "typrtail"
6
- s.version = "0.0.2"
6
+ s.version = "0.0.3"
7
7
  s.author = "Kyle Burton"
8
8
  s.email = "kyle.burton@gmail.com"
9
9
  s.platform = Gem::Platform::RUBY
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typrtail
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kyle Burton
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-27 00:00:00 -04:00
18
+ date: 2010-08-03 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -29,15 +29,9 @@ extra_rdoc_files: []
29
29
 
30
30
  files:
31
31
  - bin/typrtail
32
- - pkg/typrtail-0.0.1/bin/typrtail
33
- - pkg/typrtail-0.0.1/Rakefile
34
- - pkg/typrtail-0.0.1/README.textile
35
- - pkg/typrtail-0.0.1/typrtail.gemspec
36
- - pkg/typrtail-0.0.1.gem
37
- - pkg/typrtail-0.0.1.tgz
38
32
  - Rakefile
39
33
  - README.textile
40
- - typrtail-0.0.1.gem
34
+ - typrtail-0.0.2.gem
41
35
  - typrtail.gemspec
42
36
  has_rdoc: true
43
37
  homepage: http://github.com/kyleburton/typrtail
Binary file
Binary file
@@ -1,39 +0,0 @@
1
- h1. typrtail
2
-
3
- Tail or cat a file: make it look like someone is typing them.
4
-
5
- For some processes I was monitoring, this was far more entertaining than just watching a @tail -f@.
6
-
7
- <pre>
8
- user@host ~$ tail -f /var/log/messages | typrtail
9
- </pre>
10
-
11
- <pre>
12
- user@host ~$ wget -q -O - http://www.gutenberg.org/files/730/730.txt | head -n 20 | typrtail
13
- </pre>
14
-
15
- h1. Installation
16
-
17
- <pre>
18
- user@host ~$ gem install typrtail
19
- </pre>
20
-
21
-
22
- h1. FAQ
23
-
24
- h2. What good is this?
25
-
26
- Come on, it's just for fun.
27
-
28
- h2. Why'd you do this?
29
-
30
- I was overworked and needed an escape.
31
-
32
- h2. Doesn't this already exist?
33
-
34
- Yeah, I'm sure it does, they're probably better too, I needed a break.
35
-
36
- h2. It's too slow, can you make it faster?
37
-
38
- Yes, you can. It's a plain Ruby program, open it up and take a look at the top, there are a lot of constants (yes, globals - *gasp* globals! I know, how awful!) that control things like the typing speed. Have at 'em!
39
-
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'rake/gempackagetask'
4
- require 'spec/rake/spectask'
5
- load 'typrtail.gemspec'
6
-
7
-
8
- Rake::GemPackageTask.new(SPEC) do |t|
9
- t.need_tar = true
10
- end
@@ -1,220 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # to make everything faster, make this <1.0, sower >1.0 HTH
4
- $speed_adjust = 1.0
5
-
6
- $rand_base = 10
7
- $rand_range = 100.0
8
-
9
- # 1 in X chance of a typo :D
10
- $typo_prob = 50
11
- $min_typo_prob = 10
12
- $min_slp = 0.02
13
-
14
- # repeated chars are fast
15
- $repeat_time = 0.05
16
- # typing the same char 2x is fast
17
- $same_type_time = 0.075
18
- # oops, how fast do you recover from seeing you made one or more typos?
19
- $time_to_recognize_typo = 0.3
20
- $sleep_after_space = 0.2
21
-
22
-
23
- # spacebar is wicked quick to hit, so is enter -- unshifted characters are
24
- # easier than those that require a shift key...
25
- $typing_rates = {
26
- " " => 2.0,
27
- "\n" => 1.5,
28
- "abcdefghijklmnopqrstuvwxyz" => 0.9,
29
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ" => 0.50,
30
- "`1234567890-=[]\\;',./" => 0.60,
31
- "~!@#\$%^&*()_+{{}|:\"<>?" => 0.2,
32
- }
33
-
34
- # typos are near the character typed :)
35
- $typo_table = {
36
- "a" => "qwsz",
37
- "b" => "ghvn ",
38
- "c" => "dfxv ",
39
- "d" => "ersfxc",
40
- "e" => "34wrsd",
41
- "f" => "rtdgcv",
42
- "g" => "tyfhvb",
43
- "h" => "yugjbn",
44
- "i" => "89uojk",
45
- "j" => "uihknm,",
46
- "k" => "iojlm,",
47
- "l" => "opk;,.",
48
- "m" => " n,jk",
49
- "n" => " bmhj ",
50
- "o" => "90ipkl",
51
- "p" => "0-o[l;",
52
- "q" => "12wsa ",
53
- "r" => "45etdf",
54
- "s" => "weadzx",
55
- "t" => "56ryfg",
56
- "u" => "78yihj",
57
- "v" => "fgcb ",
58
- "w" => "23qeas",
59
- "x" => "sdzc ",
60
- "y" => "67tugh",
61
- "z" => "asx",
62
-
63
- "A" => "aaQWSZ",
64
- "B" => "bbGHVN ",
65
- "C" => "ccDFXV ",
66
- "D" => "ddERSFXC",
67
- "E" => "ee\#$WRSD",
68
- "F" => "ffRTDGCV",
69
- "G" => "ggTYFHVB",
70
- "H" => "hhYUGJBN",
71
- "I" => "ii*(UOJK",
72
- "J" => "jjUIHKNM,",
73
- "K" => "kkIOJLM,",
74
- "L" => "llOPK:<>",
75
- "M" => "mm N<JK",
76
- "N" => "nn BMHJ ",
77
- "O" => "oo()IPKL",
78
- "P" => "pp)_O{L:",
79
- "Q" => "qq!@WSA ",
80
- "R" => "rr$%ETDF",
81
- "S" => "ssWEADZX",
82
- "T" => "tt%^RYFG",
83
- "U" => "uu&*YIHJ",
84
- "V" => "vvFGCB ",
85
- "W" => "ww@#QEAS",
86
- "X" => "xxSDZC ",
87
- "Y" => "yy^&TUGH",
88
- "Z" => "zzASX",
89
-
90
-
91
- "`" => "1",
92
- "1" => "`22q",
93
- "2" => "1133qw",
94
- "3" => "2244we",
95
- "4" => "3355er",
96
- "5" => "4466rt",
97
- "6" => "5577ty",
98
- "7" => "6688yu",
99
- "8" => "7799ui",
100
- "9" => "8800io",
101
- "0" => "99-op",
102
- "-" => "00=p[",
103
- "=" => "-[]",
104
- "[" => "-=p];'",
105
- "]" => "=[\\'",
106
- "\\" => "]",
107
- ";" => "p[l'./",
108
- "'" => "[];/",
109
- "," => " m.kl",
110
- "." => ",/l;",
111
- "/" => ".;'",
112
- "~" => "`!",
113
- "!" => "11~@Q",
114
- "@" => "22!#QW",
115
- "\#" => "33@$WE",
116
- "$" => "44#%ER",
117
- "%" => "55$^RT",
118
- "^" => "66%&TY",
119
- "&" => "77^*YU",
120
- "*" => "88&(UI",
121
- "(" => "99*)IO",
122
- ")" => "00(_OP",
123
- "_" => "--)+P{",
124
- "+" => "==_{}",
125
- "{" => "[[_+P}:\"",
126
- "}" => "]]+{|\"",
127
- "|" => "\\\}",
128
- ":" => ";;P{L\">?",
129
- "\"" => "''{}:?",
130
- "<" => ",,KLM> ",
131
- ">" => "..<?L:",
132
- "?" => "//>:\"",
133
-
134
- " " => " "
135
- }
136
-
137
- # keep it real ;)
138
- def plausible_typo ch
139
- chars = $typo_table[ch.chr]
140
- return nil unless chars
141
- chars[rand(chars.size)]
142
- end
143
-
144
- # Ruby msut have these, just don't know what they are
145
- def is_alpha? ch
146
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".include? ch
147
- end
148
-
149
- def is_num? ch
150
- "0123456789".include? ch
151
- end
152
-
153
- # Hammer^H^H^H^H^H^Hpause time
154
- def pause_time ch
155
- slp = 0.05 + (rand($rand_base) / $rand_range)
156
- modifier = $typing_rates.keys.detect do |chars|
157
- chars.include? ch
158
- end
159
- modifier = $typing_rates[modifier] || 0.5
160
- slp / modifier
161
- end
162
-
163
- # backup, erase, backup (for next char)
164
- # NB: should peek, and not do this if next char is a newline b/c this will add
165
- # a space before the end of the line...
166
- def erase_typo
167
- $stderr.putc("\b"[0])
168
- $stderr.putc(" "[0])
169
- $stderr.putc("\b"[0])
170
- slp = pause_time("a"[0]) / 2.0
171
- sleep slp
172
- end
173
-
174
- lastch = ' '
175
- chars_since_typeo = 0
176
- total_chars = 0
177
- while ch = $stdin.getc
178
- total_chars += 1
179
- slp = pause_time(ch)
180
- # repeated characters are quick
181
- if ch == lastch
182
- slp = $repeat_time
183
- # sequences of the same 'type' are quick
184
- elsif is_alpha?(ch) && is_alpha?(lastch)
185
- slp = $same_type_time
186
- elsif is_num?(ch) && is_num?(lastch)
187
- slp = $same_type_time
188
- end
189
-
190
- # awww, it gets harder to keep going w/o making a mistake :-)
191
- typo_prob = $typo_prob - (chars_since_typeo/2)
192
- typo_prob = typo_prob < $min_typo_prob ? $min_typo_prob : typo_prob
193
- num_typos = 0
194
- while rand(typo_prob) <= 1.0
195
- chars_since_typeo = 0
196
- typo_prob = $typo_prob
197
- typo = plausible_typo ch
198
- if typo
199
- $stderr.putc typo
200
- $stderr.flush
201
- num_typos += 1
202
- sleep($speed_adjust * $time_to_recognize_typo)
203
- end
204
- # making a typo makes another one more likely :P
205
- typo_prob /= 2.0
206
- end
207
- num_typos.times { erase_typo }
208
-
209
- # so you made it thorugh the gauntlet? emith the char...
210
- lastch = ch
211
- slp += Math.sin(total_chars) / 4.0
212
- slp = slp < $min_slp ? $min_slp : slp
213
-
214
- sleep($speed_adjust * slp)
215
-
216
- $stdout.putc ch
217
- $stdout.flush
218
- sleep($speed_adjust * $sleep_after_space) if ' ' == ch.chr
219
- chars_since_typeo += 1
220
- end
@@ -1,25 +0,0 @@
1
- require 'rubygems'
2
-
3
-
4
- SPEC = Gem::Specification.new do |s|
5
- s.name = "typrtail"
6
- s.version = "0.0.2"
7
- s.author = "Kyle Burton"
8
- s.email = "kyle.burton@gmail.com"
9
- s.platform = Gem::Platform::RUBY
10
- s.description = <<DESC
11
- typrtail is a toy program.
12
-
13
- It simulates a person typing a file, it is suitable to be used in a pipeline.
14
-
15
- user@host ~$ tail -f /var/log/messages | typrtail
16
-
17
- DESC
18
- s.summary = "Hey! It looks like you're typing but your fingers aren't moving!"
19
- # s.rubyforge_project = "typrtail"
20
- s.homepage = "http://github.com/kyleburton/typrtail"
21
- s.files = Dir.glob("**/*")
22
- s.executables << "typrtail"
23
- s.require_path = "bin"
24
- s.has_rdoc = false
25
- end
Binary file