orator 0.4.5 → 0.5.1

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.
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