ruby-osc 0.4.1 → 0.31.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,8 +13,6 @@ Concise OSC implementation for Ruby
13
13
  require 'rubygems'
14
14
  require 'ruby-osc'
15
15
 
16
- include OSC
17
-
18
16
  OSC.run do
19
17
  server = Server.new 9090
20
18
  client = Client.new 9090
@@ -1,4 +1,4 @@
1
- require 'rubygems'
1
+ $:.unshift( File.join( File.dirname( __FILE__), '..', 'lib' ) )
2
2
  require 'ruby-osc'
3
3
 
4
4
  include OSC
@@ -23,7 +23,6 @@ OSC.run do
23
23
  exit
24
24
  end
25
25
 
26
-
27
26
  client.send Message.new('/foo/bar', 1, 1.2, 'a string')
28
27
  client.send Message.new('/foo/bar/zar', 1, 1.2, 'a string')
29
28
  client.send Bundle.new(Time.now + 2, Message.new('/exit'))
@@ -4,9 +4,7 @@ require 'socket' # Strange side effects with eventmachine udp client and SuperCo
4
4
  require 'strscan'
5
5
  require 'thread'
6
6
 
7
- $:.unshift( File.join( File.dirname( __FILE__), '..', 'lib' ) )
8
-
9
- # encoding: UTF-8
7
+ $:.unshift( File.join( File.dirname( __FILE__), '..', 'lib' ) )
10
8
  require 'ruby-osc/message'
11
9
  require 'ruby-osc/bundle'
12
10
  require 'ruby-osc/server'
@@ -15,15 +13,15 @@ require "ruby-osc/version"
15
13
 
16
14
  module OSC
17
15
  class DecodeError < StandardError; end
18
-
16
+
19
17
  class Blob < String; end
20
-
18
+
21
19
  module OSCArgument
22
20
  def to_osc_type
23
21
  raise NotImplementedError, "#to_osc_type method should be implemented for #{ self.class }"
24
22
  end
25
23
  end
26
-
24
+
27
25
  def self.coerce_argument arg
28
26
  case arg
29
27
  when OSCArgument then arg.to_osc_type
@@ -31,29 +29,29 @@ module OSC
31
29
  when String, Float, Fixnum, Blob, String then arg # Pure osc 1.0 specification
32
30
  else raise(TypeError, "#{ arg.inspect } is not a valid Message argument") end
33
31
  end
34
-
32
+
35
33
  def self.decode str #:nodoc:
36
34
  str.match(/^#bundle/) ? Bundle.decode(str) : Message.decode(str)
37
35
  end
38
-
36
+
39
37
  def self.padding_size size
40
- (4 - (size) % 4) % 4
38
+ (4 - (size) % 4) % 4
41
39
  end
42
40
 
43
41
  def self.run
44
42
  EM.run do
45
43
  EM.error_handler { |e| puts e }
46
- EM.set_quantum 5
44
+ EM.set_quantum 5
47
45
  yield
48
46
  end
49
47
  end
50
-
48
+
51
49
  def self.encoding_directive obj #:nodoc:
52
50
  case obj
53
51
  when Float then [obj, 'f', 'g']
54
52
  when Fixnum then [obj, 'i', 'N']
55
- when Blob then [[obj.bytesize, obj], 'b', "Na*x#{ padding_size obj.bytesize + 4 }"]
56
- when String then [obj, 's', "Z*x#{ padding_size obj.bytesize + 1 }"]
53
+ when Blob then [[obj.size, obj], 'b', "Na*x#{ padding_size obj.size + 4 }"]
54
+ when String then [obj, 's', "Z*x#{ padding_size obj.size + 1 }"]
57
55
  when Time
58
56
  t1, fr = (obj.to_f + 2208988800).divmod(1)
59
57
  t2 = (fr * (2**32)).to_i
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  module OSC
3
2
  class Bundle < Array
4
3
  attr_accessor :timetag
@@ -16,7 +15,7 @@ module OSC
16
15
  time, tag, dir = OSC.encoding_directive @timetag
17
16
  time.pack dir
18
17
  else "\000\000\000\000\000\000\000\001" end
19
-
18
+
20
19
  "#bundle\000#{ timetag }" + collect do |x|
21
20
  x = x.encode
22
21
  [x.size].pack('N') + x
@@ -26,26 +25,26 @@ module OSC
26
25
  def self.decode string
27
26
  string.sub! /^#bundle\000/, ''
28
27
  t1, t2, content_str = string.unpack('N2a*')
29
-
28
+
30
29
  timetag = t1 == 0 && t2 == 1 ? nil : Time.at(t1 + t2 / (2**32.0) - 2_208_988_800)
31
30
  scanner = StringScanner.new content_str
32
31
  args = []
33
-
32
+
34
33
  until scanner.eos?
35
34
  size = scanner.scan(/.{4}/).unpack('N').first
36
35
  arg_str = scanner.scan(/.{#{ size }}/nm) rescue raise(DecodeError, "An error occured while trying to decode bad formatted osc bundle")
37
36
  args << OSC.decode(arg_str)
38
37
  end
39
-
38
+
40
39
  new timetag, *args
41
40
  end
42
-
41
+
43
42
  def == other
44
43
  self.class == other.class and self.timetag == other.timetag and self.to_a == other.to_a
45
44
  end
46
45
 
47
46
  def to_a; Array.new self; end
48
-
47
+
49
48
  def to_s
50
49
  "OSC::Bundle(#{ self.join(', ') })"
51
50
  end
@@ -1,17 +1,12 @@
1
- # encoding: UTF-8
2
- require 'socket' # Strange side effects with eventmachine udp client and SuperCollider
3
-
4
1
  # From the Funaba osc gem:
5
2
  module OSC
6
3
  class Client
7
-
4
+
8
5
  def initialize port, host = '127.0.0.1'
9
6
  @socket = UDPSocket.new
10
- @socket = UDPSocket.open
11
- @socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
12
7
  @socket.connect host, port
13
8
  end
14
-
9
+
15
10
  def send mesg, *args
16
11
  @socket.send mesg.encode, 0
17
12
  end
@@ -20,24 +15,24 @@ end
20
15
 
21
16
  # module OSC
22
17
  # class Client
23
- #
18
+ #
24
19
  # def initialize port, address = 'localhost'
25
20
  # @address, @port = address, port
26
21
  # run
27
22
  # end
28
- #
23
+ #
29
24
  # def run
30
25
  # @connection = EventMachine.open_datagram_socket 'localhost', 0, Connection
31
26
  # end
32
- #
27
+ #
33
28
  # def stop
34
29
  # @connection.close_connection if @connection
35
30
  # end
36
- #
31
+ #
37
32
  # def send item
38
- # @connection.send_datagram item.encode, @address, @port
33
+ # @connection.send_datagram item.encode, @address, @port
39
34
  # end
40
- #
35
+ #
41
36
  # class Connection < EventMachine::Connection #:nodoc:
42
37
  # end
43
38
  # end
@@ -31,51 +31,36 @@ module OSC
31
31
 
32
32
  def self.decode string
33
33
  scanner = StringScanner.new string
34
- msg = self.decode_message scanner
35
- raise DecodeError if not scanner.eos?
36
- return msg
37
- end
38
-
39
- def self.decode_message scanner
40
- pos = scanner.pos
41
- begin
42
- address, tags = (1..2).map do
43
- string = scanner.scan(/[^\000]+\000/)
44
- raise DecodeError, "no address or tags" if string.nil?
45
- scanner.pos += OSC.padding_size(string.bytesize)
46
- string.chomp("\000")
47
- end
34
+ address, tags = (1..2).map do
35
+ string = scanner.scan(/[^\000]+\000/)
36
+ scanner.pos += OSC.padding_size(string.size)
37
+ string.chomp("\000")
38
+ end
48
39
 
49
- args = []
50
- tags.scan(/\w/) do |tag|
51
- case tag
52
- when 'i'
53
- int = scanner.scan(/.{4}/nm).unpack('N').first
54
- args.push( int > (2**31-1) ? int - 2**32 : int )
55
- when 'f'
56
- args.push scanner.scan(/.{4}/nm).unpack('g').first
57
- when 's'
58
- str = scanner.scan(/[^\000]+\000/)
59
- scanner.pos += OSC.padding_size(str.size)
60
- str = str.respond_to?(:force_encoding) ? str.force_encoding('UTF-8') : str
61
- args.push str.chomp("\000")
62
- when 'b'
63
- size = scanner.scan(/.{4}/).unpack('N').first
64
- str = scanner.scan(/.{#{ size }}/nm)
65
- scanner.pos += OSC.padding_size(size + 4)
66
- args.push Blob.new(str)
67
- else
68
- raise DecodeError, "#{ tag } is not a known tag"
69
- end
40
+ args = []
41
+ tags.scan(/\w/) do |tag|
42
+ case tag
43
+ when 'i'
44
+ int = scanner.scan(/.{4}/nm).unpack('N').first
45
+ args.push( int > (2**31-1) ? int - 2**32 : int )
46
+ when 'f'
47
+ args.push scanner.scan(/.{4}/nm).unpack('g').first
48
+ when 's'
49
+ str = scanner.scan(/[^\000]+\000/)
50
+ scanner.pos += OSC.padding_size(str.size)
51
+ args.push str.chomp("\000")
52
+ when 'b'
53
+ size = scanner.scan(/.{4}/).unpack('N').first
54
+ str = scanner.scan(/.{#{ size }}/nm)
55
+ scanner.pos += OSC.padding_size(size + 4)
56
+ args.push Blob.new(str)
57
+ else
58
+ raise DecodeError, "#{ t } is not a known tag"
70
59
  end
71
- new address, *args
72
60
  end
73
- rescue DecodeError => e
74
- scanner.pos = pos
75
- raise e
76
- rescue => e
77
- scanner.pos = pos
78
- raise DecodeError, e
61
+
62
+ new address, *args
79
63
  end
64
+
80
65
  end
81
66
  end
@@ -36,7 +36,7 @@ module OSC
36
36
  when Message
37
37
  dispatch decoded
38
38
  end
39
- rescue => e
39
+ rescue => e
40
40
  warn "Bad data received: #{ e }"
41
41
  end
42
42
 
@@ -54,7 +54,7 @@ module OSC
54
54
  end
55
55
 
56
56
  def dispatch message
57
- @patterns.each do |pat, block|
57
+ @patterns.each do |pat, block|
58
58
  block.call(*message.to_a) if pat === message.address
59
59
  end
60
60
  end
@@ -65,7 +65,7 @@ module OSC
65
65
  end
66
66
 
67
67
  def receive_data data
68
- @server.receive(data)
68
+ @server.receive(data)
69
69
  end
70
70
  end
71
71
  end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  module Osc
3
- VERSION = "0.4.1"
2
+ VERSION = "0.31.0"
4
3
  end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  require "#{ File.dirname __FILE__ }/spec_helper"
3
2
 
4
3
  describe Bundle do
@@ -13,11 +12,11 @@ describe Bundle do
13
12
  it "should rise TypeError if passing passing incorrect type" do
14
13
  lambda { Bundle.new Time.now, 1 }.should raise_error(TypeError)
15
14
  end
16
-
15
+
17
16
  it "should raise TypeError if timetag is not Time" do
18
17
  lambda { Bundle.new 1 }.should raise_error(TypeError)
19
18
  end
20
-
19
+
21
20
  it "should accept nil for timetag" do
22
21
  Bundle.new nil
23
22
  end
@@ -39,15 +38,15 @@ describe Bundle do
39
38
  Bundle.decode(@expected).should == @bundle
40
39
  end
41
40
  end
42
-
41
+
43
42
  describe 'Empty bundle nil timetag' do
44
43
  before do
45
44
  @bundle = Bundle.new
46
- @expected = "#bundle\000\000\000\000\000\000\000\000\001".force_encoding("binary")
45
+ @expected = "#bundle\000\000\000\000\000\000\000\000\001"
47
46
  end
48
47
  it_should_behave_like 'Encodable Bundle'
49
48
  end
50
-
49
+
51
50
  describe 'Empty bundle with timetag' do
52
51
  before do
53
52
  @bundle = Bundle.new Time.at(1251420949.16959)
@@ -55,7 +54,7 @@ describe Bundle do
55
54
  end
56
55
  it_should_behave_like 'Encodable Bundle'
57
56
  end
58
-
57
+
59
58
  describe 'Bundle with timetag and messages' do
60
59
  before do
61
60
  @bundle = Bundle.new Time.at(946702800), Message.new('/bar/foo', 4, 3, 2, 1), Message.new('/foo/bar', 1, 2, 3, 4)
@@ -63,15 +62,15 @@ describe Bundle do
63
62
  end
64
63
  it_should_behave_like 'Encodable Bundle'
65
64
  end
66
-
65
+
67
66
  describe 'Nested bundles' do
68
67
  before do
69
68
  @bundle = Bundle.new( nil, Bundle.new(nil, Message.new('/a')), Message.new('/b') )
70
- @expected = "#bundle\000\000\000\000\000\000\000\000\001\000\000\000\034#bundle\000\000\000\000\000\000\000\000\001\000\000\000\b/a\000\000,\000\000\000\000\000\000\b/b\000\000,\000\000\000".force_encoding("binary")
69
+ @expected = "#bundle\000\000\000\000\000\000\000\000\001\000\000\000\034#bundle\000\000\000\000\000\000\000\000\001\000\000\000\b/a\000\000,\000\000\000\000\000\000\b/b\000\000,\000\000\000"
71
70
  end
72
71
  it_should_behave_like 'Encodable Bundle'
73
72
  end
74
-
73
+
75
74
  describe 'Complex blob' do
76
75
  before do
77
76
  data = [ 83, 67, 103, 102, 0, 0, 0, 1, 0, 1, 4, 104, 111, 108, 97, 0, 2, 67, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 83, 105, 110, 79, 115, 99, 2, 0, 2, 0, 1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 1, 2, 0, 0 ].pack('C*')
@@ -80,7 +79,7 @@ describe Bundle do
80
79
  end
81
80
  it_should_behave_like 'Encodable Bundle'
82
81
  end
83
-
82
+
84
83
  describe 'Complex blob 2' do
85
84
  before do
86
85
  data = [ 83, 67, 103, 102, 0, 0, 0, 1, 0, 1, 2, 97, 109, 0, 7, 0, 0, 0, 0, 63, 0, 0, 0, 63, -128, 0, 0, 64, 0, 0, 0, -62, -58, 0, 0, 64, -96, 0, 0, -64, -128, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 103, 97, 116, 101, 0, 0, 9, 112, 111, 114, 116, 97, 100, 111, 114, 97, 0, 1, 10, 109, 111, 100, 117, 108, 97, 100, 111, 114, 97, 0, 2, 3, 97, 109, 112, 0, 3, 0, 8, 7, 67, 111, 110, 116, 114, 111, 108, 1, 0, 0, 0, 4, 0, 0, 1, 1, 1, 1, 6, 83, 105, 110, 79, 115, 99, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 2, -1, -1, 0, 0, 1, 6, 77, 117, 108, 65, 100, 100, 1, 0, 3, 0, 1, 0, 0, 0, 1, 0, 0, -1, -1, 0, 1, -1, -1, 0, 1, 1, 6, 83, 105, 110, 79, 115, 99, 2, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, -1, -1, 0, 0, 2, 12, 66, 105, 110, 97, 114, 121, 79, 112, 85, 71, 101, 110, 2, 0, 2, 0, 1, 0, 2, 0, 3, 0, 0, 0, 2, 0, 0, 2, 6, 69, 110, 118, 71, 101, 110, 1, 0, 17, 0, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 2, -1, -1, 0, 0, -1, -1, 0, 2, -1, -1, 0, 3, -1, -1, 0, 0, -1, -1, 0, 3, -1, -1, 0, 2, -1, -1, 0, 4, -1, -1, 0, 2, -1, -1, 0, 3, -1, -1, 0, 5, -1, -1, 0, 6, -1, -1, 0, 0, -1, -1, 0, 3, -1, -1, 0, 5, -1, -1, 0, 6, 1, 12, 66, 105, 110, 97, 114, 121, 79, 112, 85, 71, 101, 110, 2, 0, 2, 0, 1, 0, 2, 0, 4, 0, 0, 0, 5, 0, 0, 2, 3, 79, 117, 116, 2, 0, 2, 0, 0, 0, 0, -1, -1, 0, 0, 0, 6, 0, 0, 0, 0 ].pack('C*')
@@ -89,9 +88,9 @@ describe Bundle do
89
88
  end
90
89
  it_should_behave_like 'Encodable Bundle'
91
90
  end
92
-
91
+
93
92
  it 'Should raise OSC::DecodeError with bad encoded bundle' do
94
- bad_data = "#bundle\000\000\000\000\000\000\000\000\001\000\000\000\034#bundle\000\000\000\000\000\001\000\000\000\b/a\000\000,\000\000\000\000\000\000\b/b\000\000,\000\000\000".force_encoding("binary")
93
+ bad_data = "#bundle\000\000\000\000\000\000\000\000\001\000\000\000\034#bundle\000\000\000\000\000\001\000\000\000\b/a\000\000,\000\000\000\000\000\000\b/b\000\000,\000\000\000"
95
94
  lambda { Bundle.decode bad_data }.should raise_error(DecodeError)
96
95
  end
97
96
  end
@@ -1,59 +1,56 @@
1
- # encoding: UTF-8
2
1
  require "#{ File.dirname __FILE__ }/spec_helper"
3
2
 
4
3
  describe Message do
4
+
5
5
  it "should raise TypeError if passing wrong type" do
6
- expect { Message.new('address', Class) }.to raise_error(TypeError)
6
+ lambda { Message.new('address', Class) }.should raise_error(TypeError)
7
7
  end
8
-
8
+
9
9
  it "should raise TypeError if not passing a string for address" do
10
- expect { Message.new(OSC) }.to raise_error(TypeError)
10
+ lambda { Message.new(OSC) }.should raise_error(TypeError)
11
11
  end
12
-
12
+
13
13
  it "should have address" do
14
14
  Message.new('/foo/bar').address.should == '/foo/bar'
15
15
  end
16
-
17
- it "should accept utf8 address" do
18
- Message.new('/foo/bär').address.should == '/foo/bär'
19
- end
20
16
 
21
17
  it "should collect args" do
22
18
  Message.new('/foo/bar', 1, 2, 3, 4).args.size.should == 4
23
19
  end
24
-
20
+
25
21
  it "should accept integer" do
26
22
  Message.new('/foo/bar', 1).args.should == [1]
27
23
  end
28
-
24
+
29
25
  it "should should accept float" do
30
26
  Message.new('/foo/bar', 1.0).args.should == [1.0]
31
27
  end
32
-
28
+
33
29
  it "should accept string" do
34
30
  Message.new('/foo/bar', 'string').args.should == ['string']
35
31
  end
36
-
32
+
37
33
  it "should accept Blob" do
38
34
  Message.new('/foo/bar', Blob.new('blob')).args.should == [Blob.new('blob')]
39
35
  end
40
-
36
+
41
37
  it "should convert to array" do
42
38
  Message.new('/foo/bar', 1, 2, 3, 4).to_a.should == ['/foo/bar', 1, 2, 3, 4]
43
39
  end
44
-
40
+
45
41
  describe 'Custom argument coercion' do
42
+
46
43
  before do
47
44
  TrueClass.send(:include, OSCArgument)
48
45
  TrueClass.send( :define_method, :to_osc_type){ 1 }
49
46
  FalseClass.send(:include, OSCArgument)
50
47
  FalseClass.send( :define_method, :to_osc_type){ 0 }
51
48
  Hash.send(:include, OSCArgument)
52
- Hash.send( :define_method, :to_osc_type) do
49
+ Hash.send( :define_method, :to_osc_type) do
53
50
  self.to_a.collect{ |pair| pair.collect{ |a| OSC.coerce_argument a } }
54
51
  end
55
52
  end
56
-
53
+
57
54
  it "should accept true" do
58
55
  Message.new('/foo/bar', true).args.should == [1]
59
56
  end
@@ -66,50 +63,50 @@ describe Message do
66
63
  Message.new('/foo/bar', {:a => :b}).args.should == ["a", "b"]
67
64
  end
68
65
  end
69
-
66
+
70
67
  describe 'Encode/decode' do
71
68
  shared_examples_for 'Encodable Message' do
72
69
  it "should encode" do
73
70
  @message.encode.should == @expected
74
71
  end
75
-
72
+
76
73
  it "should decode to message" do
77
74
  Message.decode(@expected).should be_a(Message)
78
75
  end
79
-
76
+
80
77
  it "should decode address" do
81
78
  Message.decode(@expected).address.should == @message.address
82
79
  end
83
-
80
+
84
81
  it "should actually decode" do
85
82
  Message.decode(@expected).to_a.inspect.should == @message.to_a.inspect.to_s # Problem with float comparing
86
83
  end
87
84
  end
88
-
85
+
89
86
  describe 'Address' do
90
87
  before do
91
88
  @message = Message.new('/foo/bar/long/very/long/long/long/address')
92
- @expected = "/foo/bar/long/very/long/long/long/address\000\000\000,\000\000\000".force_encoding("binary")
89
+ @expected = "/foo/bar/long/very/long/long/long/address\000\000\000,\000\000\000"
93
90
  end
94
91
  it_should_behave_like 'Encodable Message'
95
92
  end
96
-
93
+
97
94
  describe 'Integer' do
98
95
  before do
99
96
  @message = Message.new('/foo/barz', 2)
100
- @expected = "/foo/barz\000\000\000,i\000\000\000\000\000\002".force_encoding("binary")
97
+ @expected = "/foo/barz\000\000\000,i\000\000\000\000\000\002"
101
98
  end
102
99
  it_should_behave_like 'Encodable Message'
103
100
  end
104
-
101
+
105
102
  describe 'Negative Integer' do
106
103
  before do
107
104
  @message = Message.new('/foo/barz', -2)
108
- @expected = "/foo/barz\000\000\000,i\000\000\377\377\377\376".force_encoding("binary")
105
+ @expected = "/foo/barz\000\000\000,i\000\000\377\377\377\376"
109
106
  end
110
107
  it_should_behave_like 'Encodable Message'
111
108
  end
112
-
109
+
113
110
  describe 'Float' do
114
111
  before do
115
112
  @message = Message.new('/foo/bar', 1.100000023841858)
@@ -117,7 +114,7 @@ describe Message do
117
114
  end
118
115
  it_should_behave_like 'Encodable Message'
119
116
  end
120
-
117
+
121
118
  describe 'Negative Float' do
122
119
  before do
123
120
  @message = Message.new('/foo/bar', -1.100000023841858)
@@ -125,19 +122,11 @@ describe Message do
125
122
  end
126
123
  it_should_behave_like 'Encodable Message'
127
124
  end
128
-
125
+
129
126
  describe 'String' do
130
127
  before do
131
128
  @message = Message.new('/foo/bar', 'a string to encode')
132
- @expected = "/foo/bar\000\000\000\000,s\000\000a string to encode\000\000".force_encoding("binary")
133
- end
134
- it_should_behave_like 'Encodable Message'
135
- end
136
-
137
- describe 'UTF8 String' do
138
- before do
139
- @message = Message.new('/foo/bar', 'a string to äncode')
140
- @expected = "/foo/bar\000\000\000\000,s\000\000a string to äncode\000".force_encoding("binary")
129
+ @expected = "/foo/bar\000\000\000\000,s\000\000a string to encode\000\000"
141
130
  end
142
131
  it_should_behave_like 'Encodable Message'
143
132
  end
@@ -149,35 +138,27 @@ describe Message do
149
138
  end
150
139
  it_should_behave_like 'Encodable Message'
151
140
  end
152
-
141
+
153
142
  describe 'Blob' do
154
143
  before do
155
144
  @message = Message.new('/foo/bar', Blob.new('test blob'))
156
- @expected = "/foo/bar\000\000\000\000,b\000\000\000\000\000\ttest blob\000\000\000".force_encoding("binary")
145
+ @expected = "/foo/bar\000\000\000\000,b\000\000\000\000\000\ttest blob\000\000\000"
157
146
  end
158
147
  it_should_behave_like 'Encodable Message'
159
-
148
+
160
149
  it "should raise if size doesn't correspond and return empty message" do
161
150
  lambda do
162
- Message.decode("/foo/bar\000\000\000\000,b\000\000\000\000\000\020test blob\000\000\000".force_encoding("binary"))
151
+ Message.decode("/foo/bar\000\000\000\000,b\000\000\000\000\000\020test blob\000\000\000")
163
152
  end.should raise_error
164
153
  end
165
154
  end
166
-
155
+
167
156
  describe 'Lots of ints' do
168
157
  before do
169
158
  @message = Message.new('/bar/foo', 4, 3, 2, 1)
170
- @expected = "/bar/foo\000\000\000\000,iiii\000\000\000\000\000\000\004\000\000\000\003\000\000\000\002\000\000\000\001".force_encoding("binary")
159
+ @expected = "/bar/foo\000\000\000\000,iiii\000\000\000\000\000\000\004\000\000\000\003\000\000\000\002\000\000\000\001"
171
160
  end
172
161
  it_should_behave_like 'Encodable Message'
173
162
  end
174
-
175
- describe 'Invalid message' do
176
- it "should raise if invalid tag is used" do
177
- lambda do
178
- Message.decode("/foo/bar\000\000\000\000,k\000\000\000\000\000\020test blob\000\000\000".force_encoding("binary"))
179
- end.should raise_exception(DecodeError)
180
- end
181
- end
182
- end
163
+ end
183
164
  end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  require "#{ File.dirname __FILE__ }/spec_helper"
3
2
 
4
3
  describe Server do
@@ -1,7 +1,7 @@
1
- # encoding: UTF-8
1
+ require 'rubygems'
2
2
  require 'rspec'
3
3
 
4
- $:.unshift( File.join( File.dirname( __FILE__), '..', 'lib' ) )
4
+ $:.unshift( File.join( File.dirname( __FILE__), '..', 'lib' ) )
5
5
 
6
6
  require 'ruby-osc'
7
7
  include OSC
metadata CHANGED
@@ -1,55 +1,62 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-osc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.31.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Macario
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-07-06 00:00:00.000000000 Z
12
+ date: 2012-08-29 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rspec
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: 2.6.0
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: 2.6.0
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: bundler
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '1.0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '1.0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: eventmachine
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: 0.12.8
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: 0.12.8
55
62
  description: Concise OSC Ruby implementation
@@ -76,32 +83,33 @@ files:
76
83
  - spec/message_spec.rb
77
84
  - spec/server_spec.rb
78
85
  - spec/spec_helper.rb
79
- - streamscanner_benchmark.rb
80
86
  homepage: http://makarius.me
81
87
  licenses: []
82
- metadata: {}
83
88
  post_install_message:
84
89
  rdoc_options: []
85
90
  require_paths:
86
91
  - lib
87
92
  required_ruby_version: !ruby/object:Gem::Requirement
93
+ none: false
88
94
  requirements:
89
- - - '>='
95
+ - - ! '>='
90
96
  - !ruby/object:Gem::Version
91
97
  version: '0'
92
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
+ none: false
93
100
  requirements:
94
- - - '>='
101
+ - - ! '>='
95
102
  - !ruby/object:Gem::Version
96
103
  version: '0'
97
104
  requirements: []
98
105
  rubyforge_project: ruby-osc
99
- rubygems_version: 2.0.0
106
+ rubygems_version: 1.8.24
100
107
  signing_key:
101
- specification_version: 4
108
+ specification_version: 3
102
109
  summary: Concise OSC Ruby implementation
103
110
  test_files:
104
111
  - spec/bundle_spec.rb
105
112
  - spec/message_spec.rb
106
113
  - spec/server_spec.rb
107
114
  - spec/spec_helper.rb
115
+ has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: c7a3ed90d79d95eb44be4341b5e0e3cd13b19826
4
- data.tar.gz: 860511677129f64f5de77c761c6adce36accad05
5
- SHA512:
6
- metadata.gz: 5508fc05070baa6616cf7494e7a020c313dbfdf5e870e7db58c45e0d7c80cd3f89b054cec32f5bee0bb78615c232c39e7c38bcd8b2f5a53a09471178a8a1efc6
7
- data.tar.gz: 3373a2777db15a1c6e4fe73ca7bacc0808ba8fba2ad66653bcd2c46b7e0e687a7f4a4146a9129ffc7c28b493bbe28701b7fe1dea054bf6230e67e0afd904e921
@@ -1,37 +0,0 @@
1
- require 'benchmark'
2
-
3
- $:.unshift( File.join( File.dirname( __FILE__), 'lib' ) )
4
-
5
- require 'ruby-osc/streamscanner'
6
-
7
- @ss = OSC::StreamScanner.new
8
-
9
- count = 10_000
10
-
11
- Benchmark.bm(23) do |x|
12
- x.report("add new string") do
13
- count.times do
14
- @ss << "/bar/foo\000\000\000\000,iiii\000\000\000\000\000\000\004\000\000\000\003\000\000\000\002\000\000\000\001".force_encoding("binary")
15
- end
16
- end
17
-
18
- x.report("parse string") do
19
- count.times do
20
- @ss.tryparse
21
- end
22
- end
23
-
24
-
25
- x.report("try parse each message") do
26
- count.times do
27
- OSC::Message.decode("/bar/foo\000\000\000\000,iiii\000\000\000\000\000\000\004\000\000\000\003\000\000\000\002\000\000\000\001".force_encoding("binary"))
28
- end
29
- end
30
-
31
- x.report("parse failure") do
32
- count.times do
33
- @ss.tryparse rescue nil
34
- end
35
- end
36
- end
37
-