muby 0.7.8 → 0.7.9

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.
@@ -4,7 +4,7 @@ require 'ncurses'
4
4
  module Muby
5
5
 
6
6
 
7
- VERSION = "0.7.8" unless defined?(Muby::VERSION)
7
+ VERSION = "0.7.9" unless defined?(Muby::VERSION)
8
8
 
9
9
  #
10
10
  # The class that encapsulates all configuration.
@@ -50,6 +50,8 @@ module Muby
50
50
  :width => "Ncurses.COLS",
51
51
  :height => "conf.input_height + 2"
52
52
  }
53
+
54
+ @single_shot_gags = []
53
55
 
54
56
  @echo_keycodes = false
55
57
 
@@ -86,6 +86,31 @@ class Muby::Connection
86
86
  exception(e)
87
87
  end
88
88
  end
89
+ returnValue = true if single_shot_gag(matchBuffer)
90
+ returnValue
91
+ end
92
+
93
+ #
94
+ # Check if we want to gag the current matchBuffer with the single shot gags and debug about it.
95
+ # Remove all matching gags, and all gags producing regexp errors.
96
+ #
97
+ def single_shot_gag(matchBuffer)
98
+ returnValue = false
99
+ new_gags = []
100
+ conf.single_shot_gags.each do |gag|
101
+ this_gag_matched = false
102
+ begin
103
+ if matchBuffer.match(gag)
104
+ trace(matchBuffer + " matches " + gag.inspect + ": gag active (but only once)")
105
+ returnValue = true
106
+ this_gag_matched = true
107
+ end
108
+ rescue RegexpError => error
109
+ exception(e)
110
+ end
111
+ new_gags << gag unless this_gag_matched
112
+ end
113
+ conf.single_shot_gags = new_gags
89
114
  returnValue
90
115
  end
91
116
 
@@ -144,12 +169,6 @@ class Muby::Connection
144
169
  nil
145
170
  end
146
171
 
147
- def getc
148
- c = @socket.getc
149
- log_input(c.chr) if c
150
- c
151
- end
152
-
153
172
  unless defined?(TELNET_COMMANDS)
154
173
  TELNET_COMMANDS = {
155
174
  240 => :end_of_sub_negotiation,
@@ -166,19 +185,13 @@ class Muby::Connection
166
185
  }
167
186
  end
168
187
 
169
- #
170
- # This is not telnet command OR ansi, lets treat it as nice MUD text!
171
- #
172
- # Debug about it, add it to match buffer, add it to show buffer and show if we want to show.
173
- # Then check it for triggers.
174
- #
175
- def handle_regular_character(c)
176
- @matchBuffer = @matchBuffer + c.chr
177
- append_show_buffer(c.chr)
178
- manage_buffers(c)
188
+ def getc
189
+ c = @socket.getc
190
+ log_input(c.chr) if c
191
+ c
179
192
  end
180
193
 
181
- def handle(c)
194
+ def process(c)
182
195
  #
183
196
  # The telnet support (just so we dont explode or something)
184
197
  #
@@ -214,6 +227,7 @@ class Muby::Connection
214
227
  warn("Got an unknown TELNET command (#{c.chr}) which I don't know how to handle. Expect strange behaviour...")
215
228
  end
216
229
  end
230
+ return nil
217
231
  elsif c == 27 # escape char! this is probably some ANSI color or shite
218
232
  c = getc
219
233
  if c.chr == "[" # this is an ansi-something that is more than one char long
@@ -287,17 +301,19 @@ class Muby::Connection
287
301
  @showBuffer.push(style)
288
302
  end
289
303
  end
304
+ return nil
290
305
  elsif !conf.broken_keycodes.include?(c)
291
- handle_regular_character(c)
306
+ return c
292
307
  end
293
308
  end
294
309
 
295
- def append_show_buffer(c)
310
+ def append_buffers(c)
296
311
  if String === @showBuffer.last
297
- @showBuffer.last << c
312
+ @showBuffer.last << c.chr
298
313
  else
299
- @showBuffer << c
314
+ @showBuffer << c.chr
300
315
  end
316
+ @matchBuffer = @matchBuffer + c.chr
301
317
  end
302
318
 
303
319
  #
@@ -305,11 +321,29 @@ class Muby::Connection
305
321
  #
306
322
  def listen
307
323
  c = true
308
- # We have to look at each byte for ncurses reasons as well as triggers etc.
324
+ # While we get characters
309
325
  while c
326
+ # While we have something to read within one second
310
327
  while select([@socket],nil,nil,1) && c = getc
311
- handle(c)
328
+ # If it is a regular character
329
+ if regular_char = process(c)
330
+ # Append it to our match and show buffers
331
+ append_buffers(regular_char)
332
+ # Trigger all remote character triggers on it
333
+ trigger(@matchBuffer, conf.remote_character_triggers, true)
334
+ # If it is a newline
335
+ if regular_char == 10
336
+ # Trigger all normal remote triggers on it
337
+ run_remote_triggers
338
+ display_buffer
339
+ @matchBuffer = ""
340
+ end
341
+ end
312
342
  end
343
+ trigger(@matchBuffer, conf.remote_character_triggers, true)
344
+ run_remote_triggers
345
+ display_buffer if conf.flush
346
+ @matchBuffer = ""
313
347
  end
314
348
  status("Connection closed by remote end")
315
349
  @inputWindow.disconnect
@@ -326,16 +360,9 @@ class Muby::Connection
326
360
  end
327
361
  end
328
362
 
329
- def manage_buffers(c)
330
- trigger(@matchBuffer, conf.remote_character_triggers, true)
331
- if c == 10 || conf.flush
332
- display_buffer
333
- if c == 10
334
- trigger(@matchBuffer, conf.remote_triggers, false)
335
- @matchBuffer = ""
336
- @used_triggers = {}
337
- end
338
- end
363
+ def run_remote_triggers
364
+ trigger(@matchBuffer, conf.remote_triggers, false)
365
+ @used_triggers = {}
339
366
  end
340
367
 
341
368
  def homemade_split(s, r)
@@ -4,6 +4,7 @@ module Muby
4
4
  def self.configuration
5
5
  {
6
6
  :connect_timeout => "The number of seconds we will try to connect before giving up.",
7
+ :single_shot_gags => "The gags that will only be used once and then discarded. Usually created by triggers.",
7
8
  :feed_completer_with_history => "If true, the completion command will use history to calculate possible completions.",
8
9
  :feed_completer_with_input => "If true, the completion command will use everything seen from the remote end to calculate possible completions.",
9
10
  :extra_completions => "Fill this array with words that you allways want to be able to complete to.",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.8
4
+ version: 0.7.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Kihlgren, Sy Ali
@@ -9,11 +9,12 @@ autorequire: muby
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-24 00:00:00 +02:00
12
+ date: 2008-09-27 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ncurses
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -30,20 +31,21 @@ extensions: []
30
31
  extra_rdoc_files: []
31
32
 
32
33
  files:
34
+ - lib/muby/completer.rb
35
+ - lib/muby/configuration.rb
33
36
  - lib/muby/connection.rb
37
+ - lib/muby/displayer.rb
38
+ - lib/muby/help.rb
39
+ - lib/muby/inputwindow.rb
34
40
  - lib/muby/logger.rb
41
+ - lib/muby/outputwindow.rb
35
42
  - lib/muby/style.rb
36
43
  - lib/muby/user_methods.rb
37
- - lib/muby/helper_methods.rb
38
44
  - lib/muby/application.rb
45
+ - lib/muby/helper_methods.rb
39
46
  - lib/muby/user_window.rb
40
- - lib/muby/configuration.rb
41
- - lib/muby/inputwindow.rb
42
- - lib/muby/help.rb
43
- - lib/muby/outputwindow.rb
44
- - lib/muby/completer.rb
45
- - lib/muby/displayer.rb
46
47
  - lib/muby.rb
48
+ - contrib/sy/cce.rb
47
49
  - contrib/aardmud.org_4000/aliases/aard-aliases.rb
48
50
  - contrib/aardmud.org_4000/gags/aard-gags.rb
49
51
  - contrib/aardmud.org_4000/speedwalks/aard-sw-areas-vidblain.rb
@@ -64,7 +66,6 @@ files:
64
66
  - contrib/aardmud.org_4000/misc/aard_consider_substitutions.rb
65
67
  - contrib/aardmud.org_4000/aard-helpers.rb
66
68
  - contrib/aardmud.org_4000/aard-config.rb
67
- - contrib/sy/cce.rb
68
69
  - contrib/aardmud.org_4000/README.txt
69
70
  - LICENSE
70
71
  has_rdoc: true
@@ -90,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
91
  requirements: []
91
92
 
92
93
  rubyforge_project:
93
- rubygems_version: 1.1.1
94
+ rubygems_version: 1.2.0
94
95
  signing_key:
95
96
  specification_version: 2
96
97
  summary: A simple but powerful mud client.