internet_scrabble_club 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.ruby-version +1 -1
- data/Rakefile +1 -1
- data/bin/scraper.rb +12 -0
- data/bin/spectator.rb +91 -0
- data/internet_scrabble_club.gemspec +3 -4
- data/lib/internet_scrabble_club.rb +1 -1
- data/lib/internet_scrabble_club/client.rb +34 -30
- data/lib/internet_scrabble_club/client/callback_queue.rb +22 -0
- data/lib/internet_scrabble_club/client/middleware.rb +7 -4
- data/lib/internet_scrabble_club/client/middleware/request/echo_ping.rb +23 -0
- data/lib/internet_scrabble_club/client/middleware/request/keep_alive.rb +31 -0
- data/lib/internet_scrabble_club/client/middleware/response/emit.rb +20 -0
- data/lib/internet_scrabble_club/client/middleware/response/parse.rb +26 -0
- data/lib/internet_scrabble_club/client/middleware/response/read.rb +21 -0
- data/lib/internet_scrabble_club/client/middleware/response/transform.rb +22 -0
- data/lib/internet_scrabble_club/client/response_parsers.rb +17 -0
- data/lib/internet_scrabble_club/client/response_parsers/base.rb +78 -0
- data/lib/internet_scrabble_club/client/response_parsers/close.rb +14 -0
- data/lib/internet_scrabble_club/client/response_parsers/examine.rb +15 -0
- data/lib/internet_scrabble_club/client/response_parsers/examine/history.rb +51 -0
- data/lib/internet_scrabble_club/client/response_parsers/history.rb +17 -0
- data/lib/internet_scrabble_club/client/response_parsers/login.rb +14 -0
- data/lib/internet_scrabble_club/client/response_parsers/ping.rb +13 -0
- data/lib/internet_scrabble_club/client/response_parsers/ping/reply.rb +12 -0
- data/lib/internet_scrabble_club/client/response_parsers/seek.rb +15 -0
- data/lib/internet_scrabble_club/client/response_parsers/unseek.rb +14 -0
- data/lib/internet_scrabble_club/client/response_parsers/who.rb +13 -0
- data/lib/internet_scrabble_club/client/response_parsers/who/list.rb +16 -0
- data/lib/internet_scrabble_club/client/response_parsers/who/move.rb +14 -0
- data/lib/internet_scrabble_club/client/response_transformers.rb +2 -0
- data/lib/internet_scrabble_club/client/response_transformers/base.rb +50 -0
- data/lib/internet_scrabble_club/client/response_transformers/examine/history.rb +22 -0
- metadata +31 -32
- data/lib/internet_scrabble_club/client/extensions/authentication.rb +0 -21
- data/lib/internet_scrabble_club/client/extensions/echo_ping.rb +0 -17
- data/lib/internet_scrabble_club/client/extensions/keep_alive.rb +0 -16
- data/lib/internet_scrabble_club/client/middleware/emit.rb +0 -18
- data/lib/internet_scrabble_club/client/middleware/parse.rb +0 -24
- data/lib/internet_scrabble_club/client/middleware/read.rb +0 -19
- data/lib/internet_scrabble_club/client/middleware/transform.rb +0 -20
- data/lib/internet_scrabble_club/message_parsers.rb +0 -17
- data/lib/internet_scrabble_club/message_parsers/base.rb +0 -76
- data/lib/internet_scrabble_club/message_parsers/close.rb +0 -12
- data/lib/internet_scrabble_club/message_parsers/examine.rb +0 -13
- data/lib/internet_scrabble_club/message_parsers/examine/history.rb +0 -49
- data/lib/internet_scrabble_club/message_parsers/history.rb +0 -15
- data/lib/internet_scrabble_club/message_parsers/login.rb +0 -12
- data/lib/internet_scrabble_club/message_parsers/ping.rb +0 -11
- data/lib/internet_scrabble_club/message_parsers/ping/reply.rb +0 -11
- data/lib/internet_scrabble_club/message_parsers/seek.rb +0 -13
- data/lib/internet_scrabble_club/message_parsers/unseek.rb +0 -12
- data/lib/internet_scrabble_club/message_parsers/who.rb +0 -11
- data/lib/internet_scrabble_club/message_parsers/who/list.rb +0 -14
- data/lib/internet_scrabble_club/message_parsers/who/move.rb +0 -12
- data/lib/internet_scrabble_club/message_transformers.rb +0 -3
- data/lib/internet_scrabble_club/message_transformers/base.rb +0 -48
- data/lib/internet_scrabble_club/message_transformers/examine/history.rb +0 -32
- data/lib/internet_scrabble_club/message_transformers/history.rb +0 -14
- data/lib/internet_scrabble_club/message_transformers/who/move.rb +0 -14
- data/lib/internet_scrabble_club/multi_queue.rb +0 -20
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'response_parsers/close'
|
2
|
+
|
3
|
+
require_relative 'response_parsers/examine'
|
4
|
+
require_relative 'response_parsers/examine/history'
|
5
|
+
|
6
|
+
require_relative 'response_parsers/who'
|
7
|
+
require_relative 'response_parsers/who/list'
|
8
|
+
require_relative 'response_parsers/who/move'
|
9
|
+
|
10
|
+
require_relative 'response_parsers/history'
|
11
|
+
require_relative 'response_parsers/login'
|
12
|
+
|
13
|
+
require_relative 'response_parsers/ping'
|
14
|
+
require_relative 'response_parsers/ping/reply'
|
15
|
+
|
16
|
+
require_relative 'response_parsers/seek'
|
17
|
+
require_relative 'response_parsers/unseek'
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'parslet'
|
2
|
+
require 'descendants_tracker'
|
3
|
+
|
4
|
+
module InternetScrabbleClub
|
5
|
+
class Client
|
6
|
+
module ResponseParsers
|
7
|
+
|
8
|
+
class Base < Parslet::Parser
|
9
|
+
extend DescendantsTracker
|
10
|
+
|
11
|
+
root(:response)
|
12
|
+
|
13
|
+
rule(:response) { descendant_parsers.reduce(:|) or (digit >> space >>
|
14
|
+
( command_with_sub_command_and_arguments |
|
15
|
+
command_with_arguments | command_with_sub_command)) }
|
16
|
+
|
17
|
+
rule(:command_with_arguments) { command.as(:command) >> space >>
|
18
|
+
arguments.as(:arguments) }
|
19
|
+
|
20
|
+
rule(:command_with_sub_command_and_arguments) { command_with_sub_command >>
|
21
|
+
space >> arguments.as(:arguments) }
|
22
|
+
|
23
|
+
rule(:command_with_sub_command) { command.as(:command) >>
|
24
|
+
space >> sub_command.as(:sub_command) }
|
25
|
+
|
26
|
+
rule(:command) { nothing }
|
27
|
+
rule(:sub_command) { nothing }
|
28
|
+
rule(:arguments) { nothing }
|
29
|
+
|
30
|
+
rule(:nothing) { str('') }
|
31
|
+
|
32
|
+
rule(:space) { str(' ') }
|
33
|
+
rule(:space?) { space.maybe }
|
34
|
+
|
35
|
+
rule(:newline) { match('\n') }
|
36
|
+
rule(:newline?) { newline.maybe }
|
37
|
+
|
38
|
+
rule(:colon) { str(':') }
|
39
|
+
rule(:semicolon) { str(';') }
|
40
|
+
rule(:minus) { str('-') }
|
41
|
+
|
42
|
+
rule(:digit) { match['0-9'] }
|
43
|
+
rule(:alpha) { match['A-Za-z'] }
|
44
|
+
|
45
|
+
rule(:int) { _int.as(:int) }
|
46
|
+
rule(:_int) { minus.maybe >> digit.repeat(1) }
|
47
|
+
|
48
|
+
rule(:dashes) { str('---').as(:dashes) }
|
49
|
+
rule(:null) { str('null').as(:null) }
|
50
|
+
|
51
|
+
rule(:word) { (digit | alpha).repeat(1).as(:word) }
|
52
|
+
rule(:sentence) { (match['^.'].repeat(1) >> str('.')).as(:sentence) }
|
53
|
+
rule(:text) { any.repeat(1).as(:text) }
|
54
|
+
|
55
|
+
rule(:tiles) { (alpha | str('?')).repeat(1).as(:tiles) }
|
56
|
+
rule(:rack) { dashes | tiles }
|
57
|
+
|
58
|
+
rule(:month_day) { digit.repeat(1, 2) }
|
59
|
+
rule(:short_month) { match['A-Z'] >> match['a-z'].repeat(2, 2) }
|
60
|
+
rule(:short_year) { digit >> digit }
|
61
|
+
rule(:date) { (delimited [month_day, short_month, short_year], colon).as(:date) }
|
62
|
+
|
63
|
+
rule(:dictionary) { str('TWL') | str('SOWPODS') | str('ODS') | str('LOC') |
|
64
|
+
str('SWL') | str('PARO') | str('MULTI') }
|
65
|
+
|
66
|
+
def delimited(sequence, seperator = space)
|
67
|
+
seperators = Array.new(sequence.length - 1) { seperator }
|
68
|
+
sequence.zip(seperators).flatten(1).compact.inject(:>>)
|
69
|
+
end
|
70
|
+
|
71
|
+
private def descendant_parsers
|
72
|
+
@descendant_parsers ||= self.class.descendants.map(&:new)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module InternetScrabbleClub
|
4
|
+
class Client
|
5
|
+
module ResponseParsers
|
6
|
+
|
7
|
+
class Examine < Base
|
8
|
+
rule(:command) { str('EXAMINE') }
|
9
|
+
rule(:command_with_sub_command_and_arguments) { command_with_sub_command >>
|
10
|
+
space? >> newline >> arguments.as(:arguments) }
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require_relative '../examine'
|
2
|
+
|
3
|
+
module InternetScrabbleClub
|
4
|
+
class Client
|
5
|
+
module ResponseParsers
|
6
|
+
|
7
|
+
class Examine::History < Examine
|
8
|
+
rule(:sub_command) { str('HISTORY') }
|
9
|
+
|
10
|
+
rule(:arguments) { delimited([stats, settings,
|
11
|
+
(player_info.as(:info) >> newline_with_whitespace >> plays.as(:plays)
|
12
|
+
).as(:first_player), str('STOP'),
|
13
|
+
(player_info.as(:info) >> newline_with_whitespace >> plays.as(:plays)
|
14
|
+
).as(:second_player), str('STOP')
|
15
|
+
], newline_with_whitespace) >> newline_with_whitespace }
|
16
|
+
|
17
|
+
rule(:newline_with_whitespace) { space.repeat >> newline >> space.repeat }
|
18
|
+
|
19
|
+
rule(:stats) { _int >> space >> date.as(:date) }
|
20
|
+
rule(:settings) { delimited [int.as(:dictionary_code), _int, _int, _int] }
|
21
|
+
|
22
|
+
rule(:player_info) { delimited [word.as(:nickname), int.as(:rating),
|
23
|
+
rack.as(:initial_rack), (int | null).as(:final_score)] }
|
24
|
+
|
25
|
+
rule(:plays) { ((move | change | pass) >> space?).repeat }
|
26
|
+
|
27
|
+
rule(:move) { delimited [str('MOVE').as(:word).as(:type), position.as(:position),
|
28
|
+
tiles.as(:word), int.as(:score), _int, _int, rack.as(:rack), _int] }
|
29
|
+
|
30
|
+
rule(:change) { delimited [str('CHANGE').as(:word).as(:type), rack.as(:rack),
|
31
|
+
_int, _int, (dashes | int).as(:swap_count)] }
|
32
|
+
|
33
|
+
rule(:pass) { delimited [str('PAS').as(:word).as(:type), _int, _int, (dashes |
|
34
|
+
suggestion).as(:suggestion)] }
|
35
|
+
|
36
|
+
rule(:suggestion) { delimited [position.as(:position), word.as(:word),
|
37
|
+
int.as(:score)], underscore }
|
38
|
+
|
39
|
+
rule(:underscore) { match('_') }
|
40
|
+
rule(:underscored_word) { word >> underscore >> word }
|
41
|
+
|
42
|
+
rule(:position) { horizontal_position.as(:horizontal) |
|
43
|
+
vertical_position.as(:vertical) }
|
44
|
+
|
45
|
+
rule(:horizontal_position) { alpha.as(:word).as(:column) >> int.as(:row) }
|
46
|
+
rule(:vertical_position) { int.as(:row) >> alpha.as(:word).as(:column) }
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module InternetScrabbleClub
|
4
|
+
class Client
|
5
|
+
module ResponseParsers
|
6
|
+
|
7
|
+
class History < Base
|
8
|
+
rule(:command) { str('HISTORY') }
|
9
|
+
rule(:arguments) { word.as(:subject) >> space >> entries.as(:entries) }
|
10
|
+
rule(:entries) { (entry.as(:entry) >> space?).repeat(1) }
|
11
|
+
rule(:entry) { delimited [digit.as(:index), players, dictionary, _int, date.as(:date)] }
|
12
|
+
rule(:players) { delimited [_int, word.as(:first_player), _int, word.as(:second_player)] }
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module InternetScrabbleClub
|
4
|
+
class Client
|
5
|
+
module ResponseParsers
|
6
|
+
|
7
|
+
class Seek < Base
|
8
|
+
rule(:command) { str('SEEK') }
|
9
|
+
rule(:arguments) { delimited [int.as(:rating), word.as(:nickname), settings] }
|
10
|
+
rule(:settings) { delimited([_int] * 7) }
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative '../who'
|
2
|
+
|
3
|
+
module InternetScrabbleClub
|
4
|
+
class Client
|
5
|
+
module ResponseParsers
|
6
|
+
|
7
|
+
class Who::List < Who
|
8
|
+
rule(:sub_command) { str('LIST') }
|
9
|
+
rule(:arguments) { int.as(:count) >> space >> space >> users.as(:users) }
|
10
|
+
rule(:users) { (user.as(:user) >> space?).repeat(1) }
|
11
|
+
rule(:user) { delimited [int.as(:rating), word.as(:nickname), any.as(:status), digit, digit] }
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative '../who'
|
2
|
+
|
3
|
+
module InternetScrabbleClub
|
4
|
+
class Client
|
5
|
+
module ResponseParsers
|
6
|
+
|
7
|
+
class Who::Move< Who
|
8
|
+
rule(:sub_command) { str('MOVE') }
|
9
|
+
rule(:arguments) { delimited [_int, word.as(:nickname), alpha, _int, _int] }
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'parslet'
|
3
|
+
require 'descendants_tracker'
|
4
|
+
|
5
|
+
module InternetScrabbleClub
|
6
|
+
class Client
|
7
|
+
class ResponseTransformers
|
8
|
+
|
9
|
+
class Base < Parslet::Transform
|
10
|
+
extend DescendantsTracker
|
11
|
+
|
12
|
+
rule(command: simple(:cmd), arguments: subtree(:args)) do
|
13
|
+
args.merge(command: cmd.to_s)
|
14
|
+
end
|
15
|
+
|
16
|
+
rule(command: simple(:cmd), sub_command: simple(:sub_cmd)) do
|
17
|
+
{ command: cmd.to_s, sub_command: sub_cmd.to_s }
|
18
|
+
end
|
19
|
+
|
20
|
+
rule(command: simple(:cmd), sub_command: simple(:sub_cmd), arguments: subtree(:args)) do
|
21
|
+
args.merge(command: cmd.to_s, sub_command: sub_cmd.to_s)
|
22
|
+
end
|
23
|
+
|
24
|
+
rule(int: simple(:int)) { Integer(int) }
|
25
|
+
|
26
|
+
rule(word: simple(:word)) { word.to_s }
|
27
|
+
rule(sentence: simple(:sentence)) { sentence.to_s }
|
28
|
+
rule(text: simple(:text)) { text.to_s }
|
29
|
+
|
30
|
+
rule(date: simple(:date)) { Date.parse(date.to_s) }
|
31
|
+
|
32
|
+
rule(null: simple(:null)) { 0 }
|
33
|
+
rule(tiles: simple(:tiles)) { tiles.to_s }
|
34
|
+
|
35
|
+
rule(dashes: simple(:dashes)) { nil }
|
36
|
+
|
37
|
+
def apply(tree, context = nil)
|
38
|
+
descendent_transformers.reduce(super) do |tree, transformer|
|
39
|
+
transformer.apply(tree, context)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def descendent_transformers
|
44
|
+
@descendent_transformers ||= self.class.descendants.map(&:new)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
require_relative '../base'
|
3
|
+
|
4
|
+
module InternetScrabbleClub
|
5
|
+
class Client
|
6
|
+
class ResponseTransformers
|
7
|
+
module Examine
|
8
|
+
|
9
|
+
class History < Base
|
10
|
+
rule(horizontal: { column: simple(:column), row: simple(:row) }) do
|
11
|
+
{direction: :horizontal, column: column, row: row}
|
12
|
+
end
|
13
|
+
|
14
|
+
rule(vertical: { column: simple(:column), row: simple(:row) }) do
|
15
|
+
{direction: :vertical, column: column, row: row}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: internet_scrabble_club
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Brus
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-11-25 00:00:00 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -94,8 +94,9 @@ dependencies:
|
|
94
94
|
description: "Interact with the Internet Scrabble Club server. "
|
95
95
|
email:
|
96
96
|
- thomas.brus@me.com
|
97
|
-
executables:
|
98
|
-
|
97
|
+
executables:
|
98
|
+
- scraper.rb
|
99
|
+
- spectator.rb
|
99
100
|
extensions: []
|
100
101
|
|
101
102
|
extra_rdoc_files: []
|
@@ -107,37 +108,36 @@ files:
|
|
107
108
|
- LICENSE.txt
|
108
109
|
- README.md
|
109
110
|
- Rakefile
|
111
|
+
- bin/scraper.rb
|
112
|
+
- bin/spectator.rb
|
110
113
|
- internet_scrabble_club.gemspec
|
111
114
|
- lib/internet_scrabble_club.rb
|
112
115
|
- lib/internet_scrabble_club/client.rb
|
113
|
-
- lib/internet_scrabble_club/client/
|
114
|
-
- lib/internet_scrabble_club/client/extensions/echo_ping.rb
|
115
|
-
- lib/internet_scrabble_club/client/extensions/keep_alive.rb
|
116
|
+
- lib/internet_scrabble_club/client/callback_queue.rb
|
116
117
|
- lib/internet_scrabble_club/client/middleware.rb
|
117
|
-
- lib/internet_scrabble_club/client/middleware/
|
118
|
-
- lib/internet_scrabble_club/client/middleware/
|
119
|
-
- lib/internet_scrabble_club/client/middleware/
|
120
|
-
- lib/internet_scrabble_club/client/middleware/
|
121
|
-
- lib/internet_scrabble_club/
|
122
|
-
- lib/internet_scrabble_club/
|
123
|
-
- lib/internet_scrabble_club/
|
124
|
-
- lib/internet_scrabble_club/
|
125
|
-
- lib/internet_scrabble_club/
|
126
|
-
- lib/internet_scrabble_club/
|
127
|
-
- lib/internet_scrabble_club/
|
128
|
-
- lib/internet_scrabble_club/
|
129
|
-
- lib/internet_scrabble_club/
|
130
|
-
- lib/internet_scrabble_club/
|
131
|
-
- lib/internet_scrabble_club/
|
132
|
-
- lib/internet_scrabble_club/
|
133
|
-
- lib/internet_scrabble_club/
|
134
|
-
- lib/internet_scrabble_club/
|
135
|
-
- lib/internet_scrabble_club/
|
136
|
-
- lib/internet_scrabble_club/
|
137
|
-
- lib/internet_scrabble_club/
|
138
|
-
- lib/internet_scrabble_club/
|
139
|
-
- lib/internet_scrabble_club/
|
140
|
-
- lib/internet_scrabble_club/multi_queue.rb
|
118
|
+
- lib/internet_scrabble_club/client/middleware/request/echo_ping.rb
|
119
|
+
- lib/internet_scrabble_club/client/middleware/request/keep_alive.rb
|
120
|
+
- lib/internet_scrabble_club/client/middleware/response/emit.rb
|
121
|
+
- lib/internet_scrabble_club/client/middleware/response/parse.rb
|
122
|
+
- lib/internet_scrabble_club/client/middleware/response/read.rb
|
123
|
+
- lib/internet_scrabble_club/client/middleware/response/transform.rb
|
124
|
+
- lib/internet_scrabble_club/client/response_parsers.rb
|
125
|
+
- lib/internet_scrabble_club/client/response_parsers/base.rb
|
126
|
+
- lib/internet_scrabble_club/client/response_parsers/close.rb
|
127
|
+
- lib/internet_scrabble_club/client/response_parsers/examine.rb
|
128
|
+
- lib/internet_scrabble_club/client/response_parsers/examine/history.rb
|
129
|
+
- lib/internet_scrabble_club/client/response_parsers/history.rb
|
130
|
+
- lib/internet_scrabble_club/client/response_parsers/login.rb
|
131
|
+
- lib/internet_scrabble_club/client/response_parsers/ping.rb
|
132
|
+
- lib/internet_scrabble_club/client/response_parsers/ping/reply.rb
|
133
|
+
- lib/internet_scrabble_club/client/response_parsers/seek.rb
|
134
|
+
- lib/internet_scrabble_club/client/response_parsers/unseek.rb
|
135
|
+
- lib/internet_scrabble_club/client/response_parsers/who.rb
|
136
|
+
- lib/internet_scrabble_club/client/response_parsers/who/list.rb
|
137
|
+
- lib/internet_scrabble_club/client/response_parsers/who/move.rb
|
138
|
+
- lib/internet_scrabble_club/client/response_transformers.rb
|
139
|
+
- lib/internet_scrabble_club/client/response_transformers/base.rb
|
140
|
+
- lib/internet_scrabble_club/client/response_transformers/examine/history.rb
|
141
141
|
homepage: https://github.com/thomasbrus/internet-scrabble-club
|
142
142
|
licenses:
|
143
143
|
- MIT
|
@@ -166,4 +166,3 @@ specification_version: 4
|
|
166
166
|
summary: Fetches scrabble games from the Internet Scrabble Club.
|
167
167
|
test_files: []
|
168
168
|
|
169
|
-
has_rdoc:
|