internet_scrabble_club 0.1.1 → 0.2.0

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.ruby-version +1 -1
  4. data/Rakefile +1 -1
  5. data/bin/scraper.rb +12 -0
  6. data/bin/spectator.rb +91 -0
  7. data/internet_scrabble_club.gemspec +3 -4
  8. data/lib/internet_scrabble_club.rb +1 -1
  9. data/lib/internet_scrabble_club/client.rb +34 -30
  10. data/lib/internet_scrabble_club/client/callback_queue.rb +22 -0
  11. data/lib/internet_scrabble_club/client/middleware.rb +7 -4
  12. data/lib/internet_scrabble_club/client/middleware/request/echo_ping.rb +23 -0
  13. data/lib/internet_scrabble_club/client/middleware/request/keep_alive.rb +31 -0
  14. data/lib/internet_scrabble_club/client/middleware/response/emit.rb +20 -0
  15. data/lib/internet_scrabble_club/client/middleware/response/parse.rb +26 -0
  16. data/lib/internet_scrabble_club/client/middleware/response/read.rb +21 -0
  17. data/lib/internet_scrabble_club/client/middleware/response/transform.rb +22 -0
  18. data/lib/internet_scrabble_club/client/response_parsers.rb +17 -0
  19. data/lib/internet_scrabble_club/client/response_parsers/base.rb +78 -0
  20. data/lib/internet_scrabble_club/client/response_parsers/close.rb +14 -0
  21. data/lib/internet_scrabble_club/client/response_parsers/examine.rb +15 -0
  22. data/lib/internet_scrabble_club/client/response_parsers/examine/history.rb +51 -0
  23. data/lib/internet_scrabble_club/client/response_parsers/history.rb +17 -0
  24. data/lib/internet_scrabble_club/client/response_parsers/login.rb +14 -0
  25. data/lib/internet_scrabble_club/client/response_parsers/ping.rb +13 -0
  26. data/lib/internet_scrabble_club/client/response_parsers/ping/reply.rb +12 -0
  27. data/lib/internet_scrabble_club/client/response_parsers/seek.rb +15 -0
  28. data/lib/internet_scrabble_club/client/response_parsers/unseek.rb +14 -0
  29. data/lib/internet_scrabble_club/client/response_parsers/who.rb +13 -0
  30. data/lib/internet_scrabble_club/client/response_parsers/who/list.rb +16 -0
  31. data/lib/internet_scrabble_club/client/response_parsers/who/move.rb +14 -0
  32. data/lib/internet_scrabble_club/client/response_transformers.rb +2 -0
  33. data/lib/internet_scrabble_club/client/response_transformers/base.rb +50 -0
  34. data/lib/internet_scrabble_club/client/response_transformers/examine/history.rb +22 -0
  35. metadata +31 -32
  36. data/lib/internet_scrabble_club/client/extensions/authentication.rb +0 -21
  37. data/lib/internet_scrabble_club/client/extensions/echo_ping.rb +0 -17
  38. data/lib/internet_scrabble_club/client/extensions/keep_alive.rb +0 -16
  39. data/lib/internet_scrabble_club/client/middleware/emit.rb +0 -18
  40. data/lib/internet_scrabble_club/client/middleware/parse.rb +0 -24
  41. data/lib/internet_scrabble_club/client/middleware/read.rb +0 -19
  42. data/lib/internet_scrabble_club/client/middleware/transform.rb +0 -20
  43. data/lib/internet_scrabble_club/message_parsers.rb +0 -17
  44. data/lib/internet_scrabble_club/message_parsers/base.rb +0 -76
  45. data/lib/internet_scrabble_club/message_parsers/close.rb +0 -12
  46. data/lib/internet_scrabble_club/message_parsers/examine.rb +0 -13
  47. data/lib/internet_scrabble_club/message_parsers/examine/history.rb +0 -49
  48. data/lib/internet_scrabble_club/message_parsers/history.rb +0 -15
  49. data/lib/internet_scrabble_club/message_parsers/login.rb +0 -12
  50. data/lib/internet_scrabble_club/message_parsers/ping.rb +0 -11
  51. data/lib/internet_scrabble_club/message_parsers/ping/reply.rb +0 -11
  52. data/lib/internet_scrabble_club/message_parsers/seek.rb +0 -13
  53. data/lib/internet_scrabble_club/message_parsers/unseek.rb +0 -12
  54. data/lib/internet_scrabble_club/message_parsers/who.rb +0 -11
  55. data/lib/internet_scrabble_club/message_parsers/who/list.rb +0 -14
  56. data/lib/internet_scrabble_club/message_parsers/who/move.rb +0 -12
  57. data/lib/internet_scrabble_club/message_transformers.rb +0 -3
  58. data/lib/internet_scrabble_club/message_transformers/base.rb +0 -48
  59. data/lib/internet_scrabble_club/message_transformers/examine/history.rb +0 -32
  60. data/lib/internet_scrabble_club/message_transformers/history.rb +0 -14
  61. data/lib/internet_scrabble_club/message_transformers/who/move.rb +0 -14
  62. data/lib/internet_scrabble_club/multi_queue.rb +0 -20
@@ -1,3 +0,0 @@
1
- require_relative 'message_transformers/examine/history'
2
- require_relative 'message_transformers/who/move'
3
- require_relative 'message_transformers/history'
@@ -1,48 +0,0 @@
1
- require 'date'
2
- require 'parslet'
3
- require 'descendants_tracker'
4
-
5
- module InternetScrabbleClub
6
- class MessageTransformers
7
-
8
- class Base < Parslet::Transform
9
- extend DescendantsTracker
10
-
11
- rule(command: simple(:cmd), arguments: subtree(:args)) do
12
- OpenStruct.new(args.to_h.merge(command: cmd.to_s))
13
- end
14
-
15
- rule(command: simple(:cmd), sub_command: simple(:sub_cmd)) do
16
- OpenStruct.new(command: cmd.to_s, sub_command: sub_cmd.to_s)
17
- end
18
-
19
- rule(command: simple(:cmd), sub_command: simple(:sub_cmd), arguments: subtree(:args)) do
20
- OpenStruct.new(args.to_h.merge(command: cmd.to_s, sub_command: sub_cmd.to_s))
21
- end
22
-
23
- rule(int: simple(:int)) { Integer(int) }
24
-
25
- rule(word: simple(:word)) { word.to_s }
26
- rule(sentence: simple(:sentence)) { sentence.to_s }
27
- rule(text: simple(:text)) { text.to_s }
28
-
29
- rule(date: simple(:date)) { Date.parse(date.to_s) }
30
-
31
- rule(null: simple(:null)) { 0 }
32
- rule(tiles: simple(:tiles)) { tiles.to_s }
33
-
34
- rule(dashes: simple(:dashes)) { nil }
35
-
36
- def apply(tree, context = nil)
37
- descendent_transformers.reduce(super) do |tree, transformer|
38
- transformer.apply(tree, context)
39
- end
40
- end
41
-
42
- def descendent_transformers
43
- @descendent_transformers ||= self.class.descendants.map(&:new)
44
- end
45
- end
46
-
47
- end
48
- end
@@ -1,32 +0,0 @@
1
- require 'ostruct'
2
- require_relative '../base'
3
-
4
- module InternetScrabbleClub
5
- class MessageTransformers
6
- module Examine
7
-
8
- class History < Base
9
- rule(date: simple(:date), dictionary_code: simple(:dictionary_code),
10
- first_player: subtree(:first_player), second_player: subtree(:second_player)
11
- ) do
12
- { date: date, dictionary_code: dictionary_code,
13
- first_player: first_player, second_player: second_player
14
- }
15
- end
16
-
17
- rule(setup: subtree(:setup), plays: subtree(:plays)) do
18
- OpenStruct.new(setup: setup, plays: plays.map { |play| OpenStruct.new(play) })
19
- end
20
-
21
- rule(horizontal: { column: simple(:column), row: simple(:row) }) do
22
- {direction: :horizontal, column: column, row: row}
23
- end
24
-
25
- rule(vertical: { column: simple(:column), row: simple(:row) }) do
26
- {direction: :vertical, column: column, row: row}
27
- end
28
- end
29
-
30
- end
31
- end
32
- end
@@ -1,14 +0,0 @@
1
- require 'ostruct'
2
- require_relative 'base'
3
-
4
- module InternetScrabbleClub
5
- class MessageTransformers
6
-
7
- class History < Base
8
- rule(entry: subtree(:entry)) do
9
- OpenStruct.new(entry)
10
- end
11
- end
12
-
13
- end
14
- end
@@ -1,14 +0,0 @@
1
- require 'ostruct'
2
- require_relative '../base'
3
-
4
- module InternetScrabbleClub
5
- class MessageTransformers
6
- module Who
7
-
8
- class Move < Base
9
- rule(nickname: simple(:nickname)) { OpenStruct.new(nickname: nickname) }
10
- end
11
-
12
- end
13
- end
14
- end
@@ -1,20 +0,0 @@
1
- module InternetScrabbleClub
2
-
3
- class MultiQueue
4
- def initialize
5
- @queues = Hash.new { Array.new }
6
- end
7
-
8
- def enqueue(name, item)
9
- @queues[name] += [item]
10
- end
11
-
12
- def dequeue(name, default = nil)
13
- return @queues[name].shift if @queues[name].any?
14
- return yield(name) if block_given?
15
- return default unless default.nil?
16
- fail ArgumentError, "Cannot dequeue item from empty queue"
17
- end
18
- end
19
-
20
- end