ruby_ami 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # [develop](https://github.com/adhearsion/ruby_ami)
2
2
 
3
+ # [1.2.2](https://github.com/adhearsion/ruby_ami/compare/v1.2.1...v1.2.2) - [2012-09-05](https://rubygems.org/gems/ruby_ami/versions/1.2.2)
4
+ * Streams now log syntax errors
5
+ * Celluloid dependency updated
6
+
3
7
  # [1.2.1](https://github.com/adhearsion/ruby_ami/compare/v1.2.0...v1.2.1) - [2012-07-19](https://rubygems.org/gems/ruby_ami/versions/1.2.1)
4
8
  * Use SecureRandom for UUIDs
5
9
 
data/Guardfile CHANGED
@@ -1,3 +1,7 @@
1
+ guard 'shell', :all_on_start => true do
2
+ watch("lib/ruby_ami/lexer_machine.rl") { `rake ragel` }
3
+ end
4
+
1
5
  guard 'rspec', :version => 2, :cli => '--format documentation' do
2
6
  watch(%r{^spec/.+_spec\.rb$})
3
7
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
data/README.md CHANGED
@@ -27,6 +27,23 @@ end
27
27
  client.start
28
28
  ```
29
29
 
30
+ ## Development Requirements
31
+
32
+ ruby_ami uses [ragel](http://www.complang.org/ragel/) to generate some of it's
33
+ files.
34
+
35
+ On OS X (if you use homebrew):
36
+
37
+ brew install ragel
38
+
39
+ On Linux:
40
+
41
+ apt-get install ragel OR yum install ragel
42
+
43
+ Once you are inside the repository, before anything else, you will want to run:
44
+
45
+ rake ragel
46
+
30
47
  ## Links:
31
48
  * [Source](https://github.com/adhearsion/ruby_ami)
32
49
  * [Documentation](http://rdoc.info/github/adhearsion/ruby_ami/master/frames)
@@ -4,8 +4,8 @@ module RubyAMI
4
4
  class AGIResultParser
5
5
  attr_reader :code, :result, :data
6
6
 
7
- FORMAT = /^(\d{3}) result=(-?\d*) ?(\(?.*\)?)?$/.freeze
8
- DATA_KV_FORMAT = /([\w\d]+)=([\w\d]*)/.freeze
7
+ FORMAT = /^(?<code>\d{3}) result=(?<result>-?\d*) ?(?<data>\(?.*\)?)?$/.freeze
8
+ DATA_KV_FORMAT = /(?<key>[\w\d]+)=(?<value>[\w\d]*)/.freeze
9
9
  DATA_CLEANER = /(^\()|(\)$)/.freeze
10
10
 
11
11
  def initialize(result_string)
@@ -16,7 +16,7 @@ module RubyAMI
16
16
 
17
17
  def data_hash
18
18
  return unless data_kv_match
19
- {data_kv_match[1] => data_kv_match[2]}
19
+ {data_kv_match[:key] => data_kv_match[:value]}
20
20
  end
21
21
 
22
22
  private
@@ -30,9 +30,9 @@ module RubyAMI
30
30
  end
31
31
 
32
32
  def parse
33
- @code = match[1].to_i
34
- @result = match[2].to_i
35
- @data = match[3] ? match[3].gsub(DATA_CLEANER, '').freeze : nil
33
+ @code = match[:code].to_i
34
+ @result = match[:result].to_i
35
+ @data = match[:data] ? match[:data].gsub(DATA_CLEANER, '').freeze : nil
36
36
  end
37
37
 
38
38
  def data_kv_match
@@ -45,7 +45,7 @@ module RubyAMI
45
45
  @actions_stream = new_stream lambda { |message| @message_processor << message }
46
46
  streams.each(&:run!)
47
47
  @state = :started
48
- streams.each(&:join)
48
+ streams.each { |s| Celluloid::Actor.join s }
49
49
  end
50
50
 
51
51
  def stop
@@ -60,6 +60,10 @@ module RubyAMI
60
60
  @event_callback.call message
61
61
  end
62
62
 
63
+ def syntax_error_encountered(ignored_chunk)
64
+ logger.error "Encountered a syntax error. Ignoring chunk: #{ignored_chunk.inspect}"
65
+ end
66
+
63
67
  alias :error_received :message_received
64
68
 
65
69
  def finalize
@@ -1,3 +1,3 @@
1
1
  module RubyAMI
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
data/ruby_ami.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_runtime_dependency %q<celluloid-io>, ["~> 0.11.0"]
21
+ s.add_runtime_dependency %q<celluloid-io>, ["~> 0.12.0"]
22
22
  s.add_runtime_dependency %q<future-resource>, [">= 0"]
23
23
  s.add_runtime_dependency %q<girl_friday>, [">= 0"]
24
24
  s.add_runtime_dependency %q<countdownlatch>, ["~> 1.0"]
@@ -33,5 +33,6 @@ Gem::Specification.new do |s|
33
33
  s.add_development_dependency %q<simplecov>, [">= 0"]
34
34
  s.add_development_dependency %q<simplecov-rcov>, [">= 0"]
35
35
  s.add_development_dependency %q<guard-rspec>
36
+ s.add_development_dependency %q<guard-shell>
36
37
  s.add_development_dependency %q<ruby_gntp>
37
38
  end
@@ -28,8 +28,8 @@ module RubyAMI
28
28
  @stream = Stream.new '127.0.0.1', server_port, lambda { |m| client.message_received m }
29
29
  @stream.run!
30
30
  fake_client.call if fake_client.respond_to? :call
31
- s.join
32
- @stream.join
31
+ Celluloid::Actor.join s
32
+ Celluloid::Actor.join @stream
33
33
  end
34
34
 
35
35
  def expect_connected_event
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_ami
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-19 00:00:00.000000000 Z
12
+ date: 2012-09-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: celluloid-io
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.11.0
21
+ version: 0.12.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.11.0
29
+ version: 0.12.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: future-resource
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -235,6 +235,22 @@ dependencies:
235
235
  - - ! '>='
236
236
  - !ruby/object:Gem::Version
237
237
  version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: guard-shell
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
238
254
  - !ruby/object:Gem::Dependency
239
255
  name: ruby_gntp
240
256
  requirement: !ruby/object:Gem::Requirement
@@ -314,7 +330,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
314
330
  version: '0'
315
331
  segments:
316
332
  - 0
317
- hash: 486749482907062449
333
+ hash: -4025771816081059304
318
334
  required_rubygems_version: !ruby/object:Gem::Requirement
319
335
  none: false
320
336
  requirements:
@@ -323,10 +339,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
323
339
  version: '0'
324
340
  segments:
325
341
  - 0
326
- hash: 486749482907062449
342
+ hash: -4025771816081059304
327
343
  requirements: []
328
344
  rubyforge_project: ruby_ami
329
- rubygems_version: 1.8.24
345
+ rubygems_version: 1.8.23
330
346
  signing_key:
331
347
  specification_version: 3
332
348
  summary: Futzing with AMI so you don't have to