orator 0.4.5 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjJhYmNiNDk3YmMzNTU3ZTk2ZGNjYzgzNGE5YTNhOGQ1NDhhMGZkYw==
4
+ YjgxMWQyODVkNmU4OTZlYTlkNzVhMzM2MWMwYjM1NjZjNmMxN2M0Nw==
5
5
  data.tar.gz: !binary |-
6
- ZDNiZDY0YTQyYWRlY2UwOWVkZGI1MDAzMGIzMjlmMWE1OWQ3YzZiNQ==
6
+ NjgxMWE5NWEyYjlhZGM1YWIyYjI5MGZlMDAzZGQ0MzE5NzE1MGVmMA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NTAzM2MyM2I5YWIzODM3YzkzODEzODRhY2QzYWRiNThhZmVkZmFjNThiMWEz
10
- Yzc4YzU4ZDBhZDk2ZTNlMDUwMTVhNDk4NzI3ZjIzMWNhYTk4ZDU1MDY4ODBj
11
- ODE3MDQzMzAyZmM4MmQzZjUwODE0ZjVlNjZhN2M4NzZjN2FkYzQ=
9
+ MTg5MTYzM2JmOTg2YmFiN2IzMjQ4OGQ0ZDVhOWE1MzU3MjQ5ODk5MzUwN2Uz
10
+ MzFlNThmNDJlYzNiMDBlYjYwN2VhZjI4OGY0M2QzNzRmNTQ4MzZmYzY2ODI3
11
+ NDljMDM0Zjc2MGQ1NzU3ZWNmNjRkMWU4ZmI3NWRhZmI5ZDNiOTk=
12
12
  data.tar.gz: !binary |-
13
- ZmFmYjU1NjM0M2E5MDA0ODhlYjBiOTJmODk2ZDg1MjFmYzljNmFjOTE1ZmM5
14
- MjhmYmMwYmY1OWRhZmQ4OWYyYzY5Yzk1MjIzMjE0ZDEzODZkN2Q1YmRiY2Q4
15
- YTc0YWIyOWJhN2UzNGYyOWYxZjYyNWUyNDQ3NmE1YTM2MzlhODQ=
13
+ NTgyOGViMDY2ZDcxN2RkOThkZjI5MDMxZmMyZjdkNWQ0ODVkNjE4N2RhYTIx
14
+ ZjllMjA1YzgzOGI1OWJkMjVkZWE3OThkNzEyNzliNmIwODgwYzRhZWY4Mzgx
15
+ NGE4YWFkMzlhMzUwYzJjZmNmNGU5NzkxYWQ1ZmI3ZmM1OGMwZTM=
data/lib/orator.rb CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  require 'oj'
4
4
  require 'set'
5
- require 'ostruct'
6
5
  require 'em-websocket'
7
6
 
8
7
  require 'orator/base'
9
8
  require 'orator/server'
10
9
  require 'orator/client'
11
10
  require 'orator/version'
11
+ require 'orator/open_struct'
12
12
  require 'orator/event_handler'
13
13
  require 'orator/middle_ground'
14
14
 
@@ -11,7 +11,7 @@ module Orator
11
11
  # Initialize the class.
12
12
  def initialize(client)
13
13
  @client = client
14
- @struct = OpenStruct.new
14
+ @struct = ::Orator::OpenStruct.new
15
15
  end
16
16
 
17
17
  # This sends a message to the client.
@@ -26,6 +26,8 @@ module Orator
26
26
  #
27
27
  # @param event [String, Symbol] the event for the message.
28
28
  # @param data [Hash] the data for the message.
29
+ #
30
+ # @return [Hash]
29
31
  def message(event, data)
30
32
  new_data = { "event" => event.to_s }
31
33
 
@@ -0,0 +1,77 @@
1
+ module Orator
2
+
3
+ # This provides openstruct-like access to a hash behind the scenes. This
4
+ # class does not dynamically define methods on itself.
5
+ #
6
+ # @!attribute [r] table
7
+ # The table that the class uses behind the scenes.
8
+ #
9
+ # @return [Hash]
10
+ class OpenStruct
11
+
12
+ # Initialize.
13
+ #
14
+ # @param hash [Hash] the hash to intialize with.
15
+ def initialize(hash = {})
16
+ @table = hash.dup
17
+ end
18
+
19
+ # This provides access to the table without raising an error.
20
+ #
21
+ # @param key [Object] the key of the element we're looking for.
22
+ # @return [Object, nil]
23
+ def [](key)
24
+ @table[key.to_s]
25
+ end
26
+
27
+ # This provides access to the table without raising an error.
28
+ #
29
+ # @param key [Object] the key of the element we're going to set.
30
+ # @param value [Object] the element we're going to set the key to.
31
+ def []=(key, value)
32
+ @table[key.to_s] = value
33
+ end
34
+
35
+ # This returns the table that we're using.
36
+ #
37
+ # @private
38
+ def table
39
+ @table.dup
40
+ end
41
+
42
+ # This handles the magic of this class. If the method doesn't end in `=`,
43
+ # it checks to see if the element exists in the table; if not, it calls
44
+ # `super`. Otherwise, it sets the value and carries on. It ignores blocks
45
+ # given to it. If too many arguments are passed, it calls `super`.
46
+ #
47
+ # @param method [Symbol] the method to look up.
48
+ # @param args [Array<Object>]
49
+ # @return [Object]
50
+ def method_missing(method, *args)
51
+ method = method.to_s
52
+ raise ArgumentError if args.length > 1
53
+
54
+ if method =~ /\=\z/
55
+ self[method[0..-2]] = args[0]
56
+ else
57
+ raise ArgumentError if args.length > 0
58
+ super unless @table.key?(method)
59
+ self[method]
60
+ end
61
+ end
62
+
63
+ # This checks to see if we can respond to the method. This is used in
64
+ # {#respond_to?} to let other objects know we do respond to that method, as
65
+ # well as ruby internally for the {#method} method.
66
+ def respond_to_missing?(method, include_private = false)
67
+ method = method.to_s
68
+
69
+ if method =~ /\=\z/
70
+ true
71
+ else
72
+ @table.key?(method)
73
+ end
74
+ end
75
+
76
+ end
77
+ end
@@ -1,5 +1,5 @@
1
1
  module Orator
2
2
 
3
3
  # Version of Orator.
4
- VERSION = '0.4.5'
4
+ VERSION = '0.5.1'
5
5
  end
@@ -6,12 +6,12 @@ window.WEB_SOCKET_SWF_LOCATION = "/assets/WebSocketMain.swf"
6
6
 
7
7
  Orator.setup = (address, routes = ()->)->
8
8
  libs = Orator.Libraries
9
- out = { libs: libs }
9
+ out = { libs: libs, server: null }
10
10
 
11
- event_handler = new libs.EventHandler({})
11
+ event_handler = new libs.EventHandler(out)
12
12
  console.log(event_handler)
13
- out.socket = new WebSocket(address)
14
- out.server = event_handler.context.server = new libs.MiddleGround(socket)
13
+ socket = new WebSocket(address)
14
+ out.server = new libs.MiddleGround(socket)
15
15
  routes.apply(event_handler, event_handler)
16
16
 
17
17
  socket.onopen = (args...)->
@@ -19,7 +19,7 @@ class Orator.Libraries.ChatLogger
19
19
  # the default options and set as the class's options.
20
20
  ###
21
21
  constructor: (options)->
22
- @options = $.extend(true, {}, Orator.Libraries.ChatLoger.DEFAULT_OPTIONS, options)
22
+ @options = $.extend(true, {}, Orator.Libraries.ChatLogger.DEFAULT_OPTIONS, options)
23
23
  @format_maps = @options.format_maps || {}
24
24
 
25
25
  format_maps: {}
@@ -79,10 +79,12 @@ class Orator.Libraries.ChatLogger
79
79
  # @see _format for more information on formatting.
80
80
  ###
81
81
  to: (element)->
82
- @options.formatted_body = _format(@_get_body(), @options.data)
82
+ @options.formatted_body = @_format(@_get_body(), @options.data)
83
83
  @options.from = @options.sender || @options.data.name || "(unknown)"
84
84
  @options.classes = @_define_classes()
85
- _format(@cl_opts.format, @options)
85
+ out = @_format(@cl_opts.format, @options)
86
+
87
+ element.append(out)
86
88
 
87
89
  ###
88
90
  # Defines the classes to be used by the element.
@@ -160,7 +162,7 @@ class Orator.Libraries.ChatLogger
160
162
  # from ESCAPE_CHARS.
161
163
  ###
162
164
  _escape: (data)->
163
- (data || "").replace @ESCAPE_REGEX, (s)->
165
+ (data || "").replace @ESCAPE_REGEX, (s)=>
164
166
  @ESCAPE_CHARS[s]
165
167
 
166
168
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Rodi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-08 00:00:00.000000000 Z
11
+ date: 2013-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-websocket
@@ -80,6 +80,7 @@ files:
80
80
  - lib/orator/server.rb
81
81
  - lib/orator/cli.rb
82
82
  - lib/orator/client.rb
83
+ - lib/orator/open_struct.rb
83
84
  - lib/orator/engine.rb
84
85
  - lib/orator/base.rb
85
86
  - lib/orator/event_handler.rb