fonte 0.0.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.
- data/.gitignore +4 -0
- data/.travis.yml +6 -0
- data/Gemfile +4 -0
- data/README.md +39 -0
- data/Rakefile +1 -0
- data/fonte.gemspec +22 -0
- data/lib/fonte/nodes/date_time_node.rb +14 -0
- data/lib/fonte/nodes/integer_node.rb +9 -0
- data/lib/fonte/nodes/ip_node.rb +9 -0
- data/lib/fonte/nodes/rcon_command_node.rb +13 -0
- data/lib/fonte/nodes/single_word_node.rb +9 -0
- data/lib/fonte/nodes/steam_id_node.rb +29 -0
- data/lib/fonte/nodes/steam_id_universe_node.rb +46 -0
- data/lib/fonte/nodes.rb +11 -0
- data/lib/fonte/parsers/address.treetop +23 -0
- data/lib/fonte/parsers/log.treetop +90 -0
- data/lib/fonte/parsers/number.treetop +40 -0
- data/lib/fonte/parsers/player.treetop +33 -0
- data/lib/fonte/parsers/rcon.treetop +36 -0
- data/lib/fonte/parsers/steam_id.treetop +67 -0
- data/lib/fonte/parsers/temporal.treetop +43 -0
- data/lib/fonte/parsers/word.treetop +33 -0
- data/lib/fonte/parsers.rb +7 -0
- data/lib/fonte/version.rb +3 -0
- data/lib/fonte.rb +8 -0
- data/spec/parsers/address_parser_spec.rb +47 -0
- data/spec/parsers/log_parser_spec.rb +194 -0
- data/spec/parsers/number_parser_spec.rb +80 -0
- data/spec/parsers/player_parser_spec.rb +38 -0
- data/spec/parsers/rcon_parser_spec.rb +21 -0
- data/spec/parsers/steam_id_parser_spec.rb +144 -0
- data/spec/parsers/temporal_parser_spec.rb +31 -0
- data/spec/parsers/word_parser_spec.rb +17 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/support/shared_examples/rcon_command.rb +4 -0
- metadata +118 -0
@@ -0,0 +1,194 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Fonte
|
4
|
+
module Parsers
|
5
|
+
describe LogParser do
|
6
|
+
let(:parser) { described_class.new }
|
7
|
+
|
8
|
+
subject { parser.parse(text) }
|
9
|
+
|
10
|
+
describe "entry" do
|
11
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: Loading map "c4m2_sugarmill_a"' }
|
12
|
+
it { should be }
|
13
|
+
|
14
|
+
describe "time" do
|
15
|
+
subject { parser.parse(text).date_time }
|
16
|
+
it { should be }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "command" do
|
20
|
+
subject { parser.parse(text).command }
|
21
|
+
it { should be }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "commands" do
|
26
|
+
describe "log started command" do
|
27
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: Log file started (file "logs/L127_000_001_001_27015_201112260214_000.log") (game "/home/ubuntu/srcds/left4dead2/left4dead2") (version "4777")' }
|
28
|
+
it { should be }
|
29
|
+
|
30
|
+
let(:command) { parser.parse(text).command }
|
31
|
+
|
32
|
+
describe "log filename" do
|
33
|
+
subject { command.log_filename.value }
|
34
|
+
it { should == "logs/L127_000_001_001_27015_201112260214_000.log" }
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "game path" do
|
38
|
+
subject { command.log_game_path.value }
|
39
|
+
it { should == "/home/ubuntu/srcds/left4dead2/left4dead2" }
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "game version" do
|
43
|
+
subject { command.log_game_version.value }
|
44
|
+
it { should == "4777" }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "cvar start command" do
|
49
|
+
let(:command) { parser.parse(text).command }
|
50
|
+
|
51
|
+
context "when server starts with an upcase 'S'" do
|
52
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: Server cvars start' }
|
53
|
+
it { should be }
|
54
|
+
end
|
55
|
+
|
56
|
+
context "when server starts with an downcase 'S'" do
|
57
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: server cvars start' }
|
58
|
+
it { should be }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "cvar end command" do
|
63
|
+
let(:command) { parser.parse(text).command }
|
64
|
+
|
65
|
+
context "when server starts with an upcase 'S'" do
|
66
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: Server cvars end' }
|
67
|
+
it { should be }
|
68
|
+
end
|
69
|
+
|
70
|
+
context "when server starts with an downcase 'S'" do
|
71
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: server cvars end' }
|
72
|
+
it { should be }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "cvar set command" do
|
77
|
+
let(:command) { parser.parse(text).command }
|
78
|
+
|
79
|
+
context "when server starts with an upcase 'S'" do
|
80
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: Server cvar "var" = "value"' }
|
81
|
+
it { should be }
|
82
|
+
|
83
|
+
describe "the variable" do
|
84
|
+
subject { command }
|
85
|
+
|
86
|
+
its(:value) { should == "value" }
|
87
|
+
its(:name) { should == "var" }
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context "when server starts with an downcase 'S'" do
|
92
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: server cvar "var" = "value"' }
|
93
|
+
it { should be }
|
94
|
+
|
95
|
+
describe "the variable" do
|
96
|
+
subject { command }
|
97
|
+
|
98
|
+
its(:value) { should == "value" }
|
99
|
+
its(:name) { should == "var" }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context "when server starts without the Server cvar entry " do
|
104
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: "var" = "value"' }
|
105
|
+
it { should be }
|
106
|
+
|
107
|
+
describe "the variable" do
|
108
|
+
subject { command }
|
109
|
+
|
110
|
+
its(:value) { should == "value" }
|
111
|
+
its(:name) { should == "var" }
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "map loading command" do
|
117
|
+
let(:text) { 'L 12/26/2011 - 02:14:29: Loading map "c4m2_sugarmill_a"' }
|
118
|
+
it { should be }
|
119
|
+
|
120
|
+
let(:command) { parser.parse(text).command }
|
121
|
+
|
122
|
+
describe "map name" do
|
123
|
+
subject { command.map_name.value }
|
124
|
+
it { should == "c4m2_sugarmill_a" }
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe "map started command" do
|
129
|
+
let(:text) { 'L 12/26/2011 - 02:14:33: Started map "c4m2_sugarmill_a" (CRC "-431283537")' }
|
130
|
+
it { should be }
|
131
|
+
|
132
|
+
let(:command) { parser.parse(text).command }
|
133
|
+
|
134
|
+
describe "map name" do
|
135
|
+
subject { command.map_name.value }
|
136
|
+
it { should == "c4m2_sugarmill_a" }
|
137
|
+
end
|
138
|
+
|
139
|
+
describe "map CRC" do
|
140
|
+
subject { command.map_crc.value }
|
141
|
+
it { should == "-431283537" }
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe "map started command" do
|
146
|
+
let(:text) { 'L 12/26/2011 - 02:14:33: Started map "c4m2_sugarmill_a" (CRC "-431283537")' }
|
147
|
+
it { should be }
|
148
|
+
|
149
|
+
let(:command) { parser.parse(text).command }
|
150
|
+
|
151
|
+
describe "map name" do
|
152
|
+
subject { command.map_name.value }
|
153
|
+
it { should == "c4m2_sugarmill_a" }
|
154
|
+
end
|
155
|
+
|
156
|
+
describe "map CRC" do
|
157
|
+
subject { command.map_crc.value }
|
158
|
+
it { should == "-431283537" }
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "sever name command" do
|
163
|
+
let(:text) { 'L 12/26/2011 - 02:14:33: Server name is "Manapot Server"' }
|
164
|
+
it { should be }
|
165
|
+
|
166
|
+
let(:command) { parser.parse(text).command }
|
167
|
+
|
168
|
+
describe "server name" do
|
169
|
+
subject { command.server_name.value }
|
170
|
+
it { should == "Manapot Server" }
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
describe "sever say command" do
|
175
|
+
let(:text) { 'L 12/26/2011 - 02:14:33: Server say "Hai"' }
|
176
|
+
it { should be }
|
177
|
+
|
178
|
+
let(:command) { parser.parse(text).command }
|
179
|
+
|
180
|
+
describe "server say" do
|
181
|
+
subject { command.server_say.value }
|
182
|
+
it { should == "Hai" }
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
describe "rcon command" do
|
187
|
+
let(:text) { 'L 12/26/2011 - 02:14:33: Rcon: "rcon challenge "password" command" from "192.168.10.1:17015"' }
|
188
|
+
subject { parser.parse(text).command }
|
189
|
+
it_should_behave_like "a rcon command", :password => "password", :origin => "//192.168.10.1:17015"
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Fonte
|
4
|
+
module Parsers
|
5
|
+
describe NumberParser do
|
6
|
+
let(:parser) { described_class.new }
|
7
|
+
|
8
|
+
subject { parser.parse(number).value }
|
9
|
+
|
10
|
+
describe "integer" do
|
11
|
+
context "decimal" do
|
12
|
+
context "positive" do
|
13
|
+
let(:number) { "42" }
|
14
|
+
it { should == 42 }
|
15
|
+
end
|
16
|
+
|
17
|
+
context "negative" do
|
18
|
+
let(:number) { "-3" }
|
19
|
+
it { should == -3 }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "hexadecimal" do
|
24
|
+
context "positive" do
|
25
|
+
let(:number) { "0xff" }
|
26
|
+
it { should == 255 }
|
27
|
+
end
|
28
|
+
|
29
|
+
context "negative" do
|
30
|
+
let(:number) { "-0XFF" }
|
31
|
+
it { should == -255 }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "binary" do
|
36
|
+
context "positive" do
|
37
|
+
let(:number) { "0b110" }
|
38
|
+
it { should == 6 }
|
39
|
+
end
|
40
|
+
|
41
|
+
context "negative" do
|
42
|
+
let(:number) { "-0B110" }
|
43
|
+
it { should == -6 }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "floating point" do
|
49
|
+
describe "standard notation" do
|
50
|
+
context "positive" do
|
51
|
+
let(:number) { "10.3"}
|
52
|
+
it { should == 10.3 }
|
53
|
+
end
|
54
|
+
|
55
|
+
context "negative" do
|
56
|
+
let(:number) { "-43.21" }
|
57
|
+
it { should == -43.21 }
|
58
|
+
end
|
59
|
+
|
60
|
+
context "just decimal points" do
|
61
|
+
let(:number) { ".21" }
|
62
|
+
it { should == 0.21 }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "scientific notation" do
|
67
|
+
context "with positive expoent" do
|
68
|
+
let(:number) { "5e4" }
|
69
|
+
it { should == 50000.0 }
|
70
|
+
end
|
71
|
+
|
72
|
+
context "with negative expoent" do
|
73
|
+
let(:number) { "2.2E-4" }
|
74
|
+
it { should == 0.00022 }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Fonte
|
4
|
+
module Parsers
|
5
|
+
describe PlayerParser do
|
6
|
+
let(:parser) { described_class.new }
|
7
|
+
let(:player) { "Reu<2><STEAM_1:1:24968171><Red>" }
|
8
|
+
|
9
|
+
subject { parser.parse(player) }
|
10
|
+
|
11
|
+
its(:"nickname.value") { should == "Reu" }
|
12
|
+
its(:"uid.value") { should == 2 }
|
13
|
+
its(:"steam_id.value") { should == "STEAM_1:1:24968171" }
|
14
|
+
its(:"team.value") { should == "Red" }
|
15
|
+
|
16
|
+
context "when the player is a bot" do
|
17
|
+
let(:player) { "Nick<42><Bot><Red>" }
|
18
|
+
its(:"steam_id.value") { should be_nil }
|
19
|
+
end
|
20
|
+
|
21
|
+
context "when the player is the console" do
|
22
|
+
let(:player) { "Console<0><Console><Console>" }
|
23
|
+
its(:"steam_id.value") { should be_nil }
|
24
|
+
its(:"team.value") { should be_nil }
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when the team is not present" do
|
28
|
+
let(:player) { "Reu<2><STEAM_1:1:24968171><>" }
|
29
|
+
its(:"team.value") { should be_nil }
|
30
|
+
end
|
31
|
+
|
32
|
+
context "when the team is unissiged" do
|
33
|
+
let(:player) { "Reu<2><STEAM_1:1:24968171><Unassigned>" }
|
34
|
+
its(:"team.value") { should be_nil }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Fonte
|
4
|
+
module Parsers
|
5
|
+
describe RconParser do
|
6
|
+
let(:parser) { described_class.new }
|
7
|
+
|
8
|
+
subject { parser.parse(rcon_command) }
|
9
|
+
|
10
|
+
context "with a successfully rcon challenge" do
|
11
|
+
let(:rcon_command) { 'Rcon: "rcon challenge "password" command" from "192.168.10.1:17015"' }
|
12
|
+
it_should_behave_like "a rcon command", :password => "password", :origin => "//192.168.10.1:17015"
|
13
|
+
end
|
14
|
+
|
15
|
+
context "with a bad rcon challenge" do
|
16
|
+
let(:rcon_command) { 'Bad Rcon: "rcon challenge "password" command" from "192.168.10.1:17015"' }
|
17
|
+
it_should_behave_like "a rcon command", :password => "password", :origin => "//192.168.10.1:17015"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Fonte
|
4
|
+
module Parsers
|
5
|
+
describe SteamIDParser do
|
6
|
+
let(:parser) { described_class.new }
|
7
|
+
|
8
|
+
subject { parser.parse(steam_id) }
|
9
|
+
|
10
|
+
describe "node" do
|
11
|
+
subject { parser.parse(steam_id) }
|
12
|
+
|
13
|
+
context "of a validated user" do
|
14
|
+
let(:steam_id) { "STEAM_1:1:24968171" }
|
15
|
+
its(:value) { should == steam_id }
|
16
|
+
|
17
|
+
it { should be_real_player }
|
18
|
+
it { should_not be_bot }
|
19
|
+
it { should_not be_unknown }
|
20
|
+
it { should_not be_pending }
|
21
|
+
it { should_not be_console }
|
22
|
+
end
|
23
|
+
|
24
|
+
context "of a pending user" do
|
25
|
+
let(:steam_id) { "STEAM_ID_PENDING" }
|
26
|
+
its(:value) { should_not be }
|
27
|
+
|
28
|
+
it { should_not be_real_player }
|
29
|
+
it { should_not be_unknown }
|
30
|
+
it { should_not be_bot }
|
31
|
+
it { should be_pending }
|
32
|
+
it { should_not be_console }
|
33
|
+
end
|
34
|
+
|
35
|
+
context "of a bot" do
|
36
|
+
let(:steam_id) { "Bot" }
|
37
|
+
its(:value) { should_not be }
|
38
|
+
|
39
|
+
it { should_not be_real_player }
|
40
|
+
it { should_not be_unknown }
|
41
|
+
it { should be_bot }
|
42
|
+
it { should_not be_pending }
|
43
|
+
it { should_not be_console }
|
44
|
+
end
|
45
|
+
|
46
|
+
context "of a invalid user" do
|
47
|
+
let(:steam_id) { "UNKNOWN" }
|
48
|
+
its(:value) { should_not be }
|
49
|
+
|
50
|
+
it { should_not be_real_player }
|
51
|
+
it { should be_unknown }
|
52
|
+
it { should_not be_bot }
|
53
|
+
it { should_not be_pending }
|
54
|
+
it { should_not be_console }
|
55
|
+
end
|
56
|
+
|
57
|
+
context "of the console user" do
|
58
|
+
let(:steam_id) { "Console" }
|
59
|
+
its(:value) { should_not be }
|
60
|
+
|
61
|
+
it { should_not be_real_player }
|
62
|
+
it { should_not be_unknown }
|
63
|
+
it { should_not be_bot }
|
64
|
+
it { should_not be_pending }
|
65
|
+
it { should be_console }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "universe" do
|
70
|
+
subject { parser.parse(steam_id).universe }
|
71
|
+
|
72
|
+
context "STEAM_0" do
|
73
|
+
let(:steam_id) { "STEAM_0:1:24968171" }
|
74
|
+
|
75
|
+
it { should be_unspecified }
|
76
|
+
its(:value) { should == "Unspecified" }
|
77
|
+
end
|
78
|
+
|
79
|
+
context "STEAM_1" do
|
80
|
+
let(:steam_id) { "STEAM_1:1:24968171" }
|
81
|
+
|
82
|
+
it { should be_public }
|
83
|
+
its(:value) { should == "Public" }
|
84
|
+
end
|
85
|
+
|
86
|
+
context "STEAM_2" do
|
87
|
+
let(:steam_id) { "STEAM_2:1:24968171" }
|
88
|
+
|
89
|
+
it { should be_beta }
|
90
|
+
its(:value) { should == "Beta" }
|
91
|
+
end
|
92
|
+
|
93
|
+
context "STEAM_3" do
|
94
|
+
let(:steam_id) { "STEAM_3:1:24968171" }
|
95
|
+
|
96
|
+
it { should be_internal }
|
97
|
+
its(:value) { should == "Internal" }
|
98
|
+
end
|
99
|
+
|
100
|
+
context "STEAM_4" do
|
101
|
+
let(:steam_id) { "STEAM_4:1:24968171" }
|
102
|
+
|
103
|
+
it { should be_developer }
|
104
|
+
its(:value) { should == "Dev" }
|
105
|
+
end
|
106
|
+
|
107
|
+
context "STEAM_5" do
|
108
|
+
let(:steam_id) { "STEAM_5:1:24968171" }
|
109
|
+
|
110
|
+
it { should be_rc }
|
111
|
+
its(:value) { should == "RC" }
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe "id_part" do
|
116
|
+
subject { parser.parse(steam_id).id_part }
|
117
|
+
|
118
|
+
context "when 0" do
|
119
|
+
let(:steam_id) { "STEAM_0:0:24968171" }
|
120
|
+
its(:value) { should == 0 }
|
121
|
+
end
|
122
|
+
|
123
|
+
context "when 1" do
|
124
|
+
let(:steam_id) { "STEAM_0:1:24968171" }
|
125
|
+
its(:value) { should == 1 }
|
126
|
+
end
|
127
|
+
|
128
|
+
context "when not 0 nor 1" do
|
129
|
+
let(:steam_id) { "STEAM_0:3:24968171" }
|
130
|
+
|
131
|
+
subject { parser.parse(steam_id) }
|
132
|
+
it { should_not be }
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe "account_number" do
|
137
|
+
subject { parser.parse(steam_id).account_number }
|
138
|
+
|
139
|
+
let(:steam_id) { "STEAM_0:0:24968171" }
|
140
|
+
its(:value) { should == 24968171 }
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Fonte
|
4
|
+
module Parsers
|
5
|
+
describe TemporalParser do
|
6
|
+
let(:parser) { described_class.new }
|
7
|
+
|
8
|
+
subject { parser.parse(date_time) }
|
9
|
+
|
10
|
+
context "with a valid format" do
|
11
|
+
let(:date_time) { "12/26/2011 - 02:14:29" }
|
12
|
+
it { should be }
|
13
|
+
|
14
|
+
subject { parser.parse(date_time).value }
|
15
|
+
|
16
|
+
its(:day) { should == 26 }
|
17
|
+
its(:month) { should == 12 }
|
18
|
+
its(:year) { should == 2011 }
|
19
|
+
its(:hour) { should == 2 }
|
20
|
+
its(:min) { should == 14 }
|
21
|
+
its(:sec) { should == 29 }
|
22
|
+
end
|
23
|
+
|
24
|
+
context "with a invalid format" do
|
25
|
+
let(:date_time) { "12/26/2011 02:14:29" }
|
26
|
+
it { should_not be }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Fonte
|
4
|
+
module Parsers
|
5
|
+
describe WordParser do
|
6
|
+
let(:parser) { described_class.new }
|
7
|
+
|
8
|
+
subject { parser.parse(word) }
|
9
|
+
|
10
|
+
context "with a string surrounded by double quotes" do
|
11
|
+
let(:word) { '"Double quotes yay"' }
|
12
|
+
it { should be }
|
13
|
+
its(:value) { should == "Double quotes yay" }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fonte
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Rodrigo Navarro
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-14 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &2160380860 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2160380860
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: treetop
|
27
|
+
requirement: &2160380280 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2160380280
|
36
|
+
description:
|
37
|
+
email:
|
38
|
+
- rnavarro1@gmail.com
|
39
|
+
executables: []
|
40
|
+
extensions: []
|
41
|
+
extra_rdoc_files: []
|
42
|
+
files:
|
43
|
+
- .gitignore
|
44
|
+
- .travis.yml
|
45
|
+
- Gemfile
|
46
|
+
- README.md
|
47
|
+
- Rakefile
|
48
|
+
- fonte.gemspec
|
49
|
+
- lib/fonte.rb
|
50
|
+
- lib/fonte/nodes.rb
|
51
|
+
- lib/fonte/nodes/date_time_node.rb
|
52
|
+
- lib/fonte/nodes/integer_node.rb
|
53
|
+
- lib/fonte/nodes/ip_node.rb
|
54
|
+
- lib/fonte/nodes/rcon_command_node.rb
|
55
|
+
- lib/fonte/nodes/single_word_node.rb
|
56
|
+
- lib/fonte/nodes/steam_id_node.rb
|
57
|
+
- lib/fonte/nodes/steam_id_universe_node.rb
|
58
|
+
- lib/fonte/parsers.rb
|
59
|
+
- lib/fonte/parsers/address.treetop
|
60
|
+
- lib/fonte/parsers/log.treetop
|
61
|
+
- lib/fonte/parsers/number.treetop
|
62
|
+
- lib/fonte/parsers/player.treetop
|
63
|
+
- lib/fonte/parsers/rcon.treetop
|
64
|
+
- lib/fonte/parsers/steam_id.treetop
|
65
|
+
- lib/fonte/parsers/temporal.treetop
|
66
|
+
- lib/fonte/parsers/word.treetop
|
67
|
+
- lib/fonte/version.rb
|
68
|
+
- spec/parsers/address_parser_spec.rb
|
69
|
+
- spec/parsers/log_parser_spec.rb
|
70
|
+
- spec/parsers/number_parser_spec.rb
|
71
|
+
- spec/parsers/player_parser_spec.rb
|
72
|
+
- spec/parsers/rcon_parser_spec.rb
|
73
|
+
- spec/parsers/steam_id_parser_spec.rb
|
74
|
+
- spec/parsers/temporal_parser_spec.rb
|
75
|
+
- spec/parsers/word_parser_spec.rb
|
76
|
+
- spec/spec_helper.rb
|
77
|
+
- spec/support/shared_examples/rcon_command.rb
|
78
|
+
homepage: https://github.com/reu/fonte
|
79
|
+
licenses: []
|
80
|
+
post_install_message:
|
81
|
+
rdoc_options: []
|
82
|
+
require_paths:
|
83
|
+
- lib
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
hash: 3476406977491015761
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
hash: 3476406977491015761
|
102
|
+
requirements: []
|
103
|
+
rubyforge_project: fonte
|
104
|
+
rubygems_version: 1.8.10
|
105
|
+
signing_key:
|
106
|
+
specification_version: 3
|
107
|
+
summary: Valve Source Engine log parser
|
108
|
+
test_files:
|
109
|
+
- spec/parsers/address_parser_spec.rb
|
110
|
+
- spec/parsers/log_parser_spec.rb
|
111
|
+
- spec/parsers/number_parser_spec.rb
|
112
|
+
- spec/parsers/player_parser_spec.rb
|
113
|
+
- spec/parsers/rcon_parser_spec.rb
|
114
|
+
- spec/parsers/steam_id_parser_spec.rb
|
115
|
+
- spec/parsers/temporal_parser_spec.rb
|
116
|
+
- spec/parsers/word_parser_spec.rb
|
117
|
+
- spec/spec_helper.rb
|
118
|
+
- spec/support/shared_examples/rcon_command.rb
|