SkypeR 0.0.4 → 0.0.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.
Files changed (3) hide show
  1. data/bin/iskype.rb +45 -16
  2. data/bin/iskype.rb~ +58 -24
  3. metadata +3 -3
data/bin/iskype.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift File.join(File.dirname(__FILE__))
3
3
 
4
+ require 'rubygems'
5
+ #require_gem 'yaparc'
6
+ require 'yaparc'
4
7
  require 'readline'
5
8
  require 'optparse'
6
9
  require 'logger'
@@ -39,6 +42,7 @@ module SkypeR
39
42
  def initialize(name, log = nil, parse = false)
40
43
  @debug = false
41
44
  @application = Service::Application.new(name)
45
+ @parse = parse
42
46
  @headers = []
43
47
  @logger = Logger.new(log ? log : $stderr)
44
48
  @commands = {
@@ -52,23 +56,18 @@ module SkypeR
52
56
  proc { |args| @libraries << args }],
53
57
  'test' => ['test if the repl is ok by running a printf through it.',
54
58
  proc { xsb_command('printf("repl is ok\n");') }],
55
- 's' => ['cause a segfault to let crepl attempt to recover.',
56
- proc do
57
- puts 'attempting segfault'
58
- xsb_command '*((char*)0) = 0;'
59
- end],
60
59
  'help' => ['show help on commands.', proc { show_help }]
61
60
  }
62
61
  end
63
62
 
64
63
 
65
- def skype_command(code)
66
- command = Service::Command.new(code)
67
- if @application.validate(command)
68
- @application.invoke(command, 40)
69
- else
70
- "Parse Error"
71
- end
64
+ def skype_command(command_statement)
65
+ command_message = Service::CommandMessage.new(command_statement)
66
+ end
67
+
68
+ def skype_response(response_statement, response_instance)
69
+ response = Service::ResponseMessage.new(response_statement, response_instance)
70
+ result = @application.parse(response)
72
71
  end
73
72
 
74
73
  def skype_exit
@@ -106,18 +105,48 @@ Commands start with a . and are as follows:
106
105
  @logger.debug("OUTPUT> See you again.")
107
106
  return
108
107
  else
109
- result = skype_command(line)
110
- puts "=> #{result}"
111
- @logger.debug("OUTPUT> #{result}")
108
+ response_statement = nil
109
+ command_message = SkypeR::Service::CommandMessage.new(line)
110
+ if @parse
111
+ case result = @application.parse(command_message)
112
+ when Yaparc::OK
113
+ response_statement = @application.invoke(command_message, 30)
114
+ # response_instance = result.value[:command_instance].response
115
+ # skype_response(response_statement, response_instance)
116
+ when Yaparc::Fail
117
+ response_statement = "##{command_message.command_id} Parse Error"
118
+ else
119
+ raise
120
+ end
121
+ else # in case of parse option disabled
122
+ response_statement = @application.invoke(command_message, 30)
123
+ end
124
+ unless response_statement.empty?
125
+ response_id, response_statement = split_response(response_statement)
126
+ puts "=> #{response_statement}"
127
+ @logger.debug("OUTPUT> #{response_statement}")
128
+ end
112
129
  end
113
130
  end
114
131
  Readline::HISTORY.push(line)
115
132
  end
116
133
  @interpreter.close
117
- end # of Command
134
+
135
+ end # of input_loop method
136
+
137
+ private
138
+ def split_response(response_statement)
139
+ if match = Regexp.new(/(#[0-9]+) (.*)$/).match(response_statement)
140
+ [match[1], match[2]]
141
+ else
142
+ p "#{response_statement}"
143
+ raise
144
+ end
145
+ end
118
146
  end # of Service
119
147
  end # of SkypeR
120
148
 
149
+
121
150
  begin
122
151
  arguments = SkypeR::Arguments.new(ARGV)
123
152
  if name = arguments[:name]
data/bin/iskype.rb~ CHANGED
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift File.join(File.dirname(__FILE__))
3
3
 
4
+ require 'rubygems'
5
+ require_gem 'yaparc'
4
6
  require 'readline'
5
7
  require 'optparse'
6
8
  require 'logger'
@@ -22,6 +24,10 @@ module SkypeR
22
24
  self[:log] = string || '$'
23
25
  end
24
26
 
27
+ opts.on('-p', '--parse', 'parsing enabled') do
28
+ self[:parse] = true
29
+ end
30
+
25
31
  opts.on_tail('-h', '--help', 'display this help') do
26
32
  puts opts
27
33
  exit
@@ -32,9 +38,10 @@ module SkypeR
32
38
  end
33
39
 
34
40
  class REPL
35
- def initialize(name, log = nil)
41
+ def initialize(name, log = nil, parse = false)
36
42
  @debug = false
37
43
  @application = Service::Application.new(name)
44
+ @parse = parse
38
45
  @headers = []
39
46
  @logger = Logger.new(log ? log : $stderr)
40
47
  @commands = {
@@ -42,26 +49,24 @@ module SkypeR
42
49
  proc { @debug = !@debug; puts "debug is #{@debug?'on':'off'}" }],
43
50
  'logger' => ['"logger on": bring logger active.',
44
51
  proc {|args|
45
- @headers << args
52
+ @headers << args
46
53
  }],
47
54
  'l' => ['"l m": bring in a C library.',
48
55
  proc { |args| @libraries << args }],
49
56
  'test' => ['test if the repl is ok by running a printf through it.',
50
57
  proc { xsb_command('printf("repl is ok\n");') }],
51
- 's' => ['cause a segfault to let crepl attempt to recover.',
52
- proc do
53
- puts 'attempting segfault'
54
- xsb_command '*((char*)0) = 0;'
55
- end],
56
58
  'help' => ['show help on commands.', proc { show_help }]
57
59
  }
58
60
  end
59
61
 
60
62
 
61
- def skype_command(code)
62
- command = Service::Command.new(code)
63
- @application.invoke(command, 40)
64
- # @application.invoke_with_timeout(command, 40)
63
+ def skype_command(command_statement)
64
+ command_message = Service::CommandMessage.new(command_statement)
65
+ end
66
+
67
+ def skype_response(response_statement, response_instance)
68
+ response = Service::ResponseMessage.new(response_statement, response_instance)
69
+ result = @application.parse(response)
65
70
  end
66
71
 
67
72
  def skype_exit
@@ -99,33 +104,62 @@ Commands start with a . and are as follows:
99
104
  @logger.debug("OUTPUT> See you again.")
100
105
  return
101
106
  else
102
- result = skype_command(line)
103
- puts "=> #{result}"
104
- @logger.debug("OUTPUT> #{result}")
107
+ response_statement = nil
108
+ command_message = SkypeR::Service::CommandMessage.new(line)
109
+ if @parse
110
+ case result = @application.parse(command_message)
111
+ when Yaparc::OK
112
+ response_statement = @application.invoke(command_message, 30)
113
+ # response_instance = result.value[:command_instance].response
114
+ # skype_response(response_statement, response_instance)
115
+ when Yaparc::Fail
116
+ response_statement = "##{command_message.command_id} Parse Error"
117
+ else
118
+ raise
119
+ end
120
+ else # in case of parse option disabled
121
+ response_statement = @application.invoke(command_message, 30)
122
+ end
123
+ unless response_statement.empty?
124
+ response_id, response_statement = split_response(response_statement)
125
+ puts "=> #{response_statement}"
126
+ @logger.debug("OUTPUT> #{response_statement}")
127
+ end
105
128
  end
106
129
  end
107
130
  Readline::HISTORY.push(line)
108
131
  end
109
132
  @interpreter.close
110
- end # of Command
133
+
134
+ end # of input_loop method
135
+
136
+ private
137
+ def split_response(response_statement)
138
+ if match = Regexp.new(/(#[0-9]+) (.*)$/).match(response_statement)
139
+ [match[1], match[2]]
140
+ else
141
+ p "#{response_statement}"
142
+ raise
143
+ end
144
+ end
111
145
  end # of Service
112
146
  end # of SkypeR
113
147
 
148
+
114
149
  begin
115
150
  arguments = SkypeR::Arguments.new(ARGV)
116
- # p "arguments[:name] = #{arguments[:name]}"
117
151
  if name = arguments[:name]
118
- repl = SkypeR::REPL.new(name, arguments[:log])
152
+ repl = SkypeR::REPL.new(name, arguments[:log], arguments[:parse])
119
153
  else
120
- repl = SkypeR::REPL.new('test', 'log/iskype.log')
154
+ repl = SkypeR::REPL.new('test', 'log/iskype.log', arguments[:parse])
121
155
  end
122
156
  repl.input_loop
123
- rescue Exception => e
124
- puts e.message
125
- puts "Backtrace:"
126
- e.backtrace.each {|line|
127
- puts line
128
- }
157
+ # rescue Exception => e
158
+ # puts e.message
159
+ # puts "Backtrace:"
160
+ # e.backtrace.each {|line|
161
+ # puts line
162
+ # }
129
163
  end
130
164
 
131
165
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.3
3
3
  specification_version: 1
4
4
  name: SkypeR
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.4
7
- date: 2008-01-10 00:00:00 +09:00
6
+ version: 0.0.5
7
+ date: 2008-01-16 00:00:00 +09:00
8
8
  summary: a SkypeAPI library for Ruby
9
9
  require_paths:
10
10
  - lib
@@ -63,5 +63,5 @@ dependencies:
63
63
  requirements:
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
- version: 0.0.8
66
+ version: 0.1.0
67
67
  version: