tam_tam 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,63 @@
1
+ require "spec_helper"
2
+
3
+ describe TamTam::MessageSet do
4
+ let(:messages_data) do
5
+ [
6
+ { sender: "wongo", text: "hey there", time: Time.now - 10000 },
7
+ { sender: "bongo", text: "hi, how was your day?", time: Time.now - 1000 },
8
+ { sender: "wongo", text: "great! yours?", time: Time.now },
9
+ ]
10
+ end
11
+
12
+ subject do
13
+ described_class.new(messages_data)
14
+ end
15
+
16
+ describe "#to_s" do
17
+ it "shows the object ID as hexadecimal and the message count" do
18
+ expect(subject.to_s).to match(
19
+ %r{#<TamTam::MessageSet:0x[0-9a-f]+ size=3>}
20
+ )
21
+ end
22
+ end
23
+
24
+ describe "#including" do
25
+ it "returns only messages including the string" do
26
+ messages = described_class.new([messages_data[0]])
27
+ expect(subject.including("hey")).to eq(messages)
28
+ end
29
+ end
30
+
31
+ describe "#matching" do
32
+ it "returns only messages matching a regexp" do
33
+ messages = described_class.new(messages_data[0, 2])
34
+ expect(subject.matching(/h(?:ey|i)/)).to eq(messages)
35
+ end
36
+ end
37
+
38
+ describe "#sent_by" do
39
+ it "returns only messages sent by the specified sender" do
40
+ wongos_messages = described_class.new(
41
+ messages_data.reject { |m| m[:sender] != "wongo" }
42
+ )
43
+ expect(subject.sent_by("wongo")).to eq(wongos_messages)
44
+ end
45
+ end
46
+
47
+ describe "#by_count" do
48
+ it "returns a hash of message text by number of occurrences" do
49
+ messages_data << messages_data[0]
50
+ expect(subject.by_count).to eq(
51
+ "hey there" => 2,
52
+ "hi, how was your day?" => 1,
53
+ "great! yours?" => 1
54
+ )
55
+ end
56
+ end
57
+
58
+ describe "#each" do
59
+ it "yields each message to the block" do
60
+ expect(subject.map(&:sender)).to eql(["wongo", "bongo", "wongo"])
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,37 @@
1
+ require "spec_helper"
2
+
3
+ describe TamTam::Message do
4
+ let(:data) do
5
+ {
6
+ sender: "bongo",
7
+ text: "sup, brah",
8
+ time: Time.new(2011, 12, 25)
9
+ }
10
+ end
11
+
12
+ subject { described_class.new(data) }
13
+
14
+ describe "#sender" do
15
+ it "returns the sender of the message" do
16
+ expect(subject.sender).to eq("bongo")
17
+ end
18
+ end
19
+
20
+ describe "#text" do
21
+ it "returns the text of the message" do
22
+ expect(subject.text).to eq("sup, brah")
23
+ end
24
+ end
25
+
26
+ describe "#time" do
27
+ it "returns the time of the message" do
28
+ expect(subject.time).to eq(Time.new(2011, 12, 25))
29
+ end
30
+ end
31
+
32
+ describe "#==" do
33
+ it "compares two messages" do
34
+ expect(subject).to eq(subject.dup)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ describe TamTam do
4
+ describe ".new" do
5
+ it "returns a new adapter as specified" do
6
+ logs = described_class.new(adapter: :test)
7
+ expect(logs.adapter).to be_a(described_class::Adapters::Test)
8
+ end
9
+
10
+ it "returns a new Adium adapter by default" do
11
+ expect(described_class.new.adapter).to be_a(
12
+ described_class::Adapters::Adium
13
+ )
14
+ end
15
+
16
+ it "returns a the first registered adapter if Adium is not registered" do
17
+ begin
18
+ described_class.unregister_adapter(:adium)
19
+ expect(described_class.new.adapter).to be_a(
20
+ described_class::Adapters::Test
21
+ )
22
+ ensure
23
+ described_class.register_adapter(:adium, TamTam::Adapters::Adium)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "tam_tam/version"
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "tam_tam"
8
+ gem.version = TamTam::VERSION
9
+ gem.authors = ["Jimmy Cuadra"]
10
+ gem.email = ["jimmy@jimmycuadra.com"]
11
+ gem.description = %q{Parse, filter, and analyze logs from online chat clients.}
12
+ gem.summary = %q{Parse, filter, and analyze logs from online chat clients.}
13
+ gem.homepage = "https://github.com/jimmycuadra/tam_tam"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_runtime_dependency("chronic")
21
+ gem.add_runtime_dependency("nokogiri")
22
+ gem.add_development_dependency("rake")
23
+ gem.add_development_dependency("rspec")
24
+ gem.add_development_dependency("debugger")
25
+ gem.add_development_dependency("debugger-pry")
26
+ gem.add_development_dependency("pry")
27
+ gem.add_development_dependency("cane")
28
+ gem.add_development_dependency("simplecov")
29
+ end
metadata ADDED
@@ -0,0 +1,237 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tam_tam
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jimmy Cuadra
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: chronic
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: debugger
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: debugger-pry
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: pry
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: cane
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: simplecov
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ description: Parse, filter, and analyze logs from online chat clients.
159
+ email:
160
+ - jimmy@jimmycuadra.com
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - .gitignore
166
+ - .rspec
167
+ - .travis.yml
168
+ - Gemfile
169
+ - LICENSE.txt
170
+ - README.md
171
+ - Rakefile
172
+ - lib/tam_tam.rb
173
+ - lib/tam_tam/adapter.rb
174
+ - lib/tam_tam/adapters/adium.rb
175
+ - lib/tam_tam/core.rb
176
+ - lib/tam_tam/log_set.rb
177
+ - lib/tam_tam/message.rb
178
+ - lib/tam_tam/message_set.rb
179
+ - lib/tam_tam/version.rb
180
+ - spec/fixtures/adium/AIM.bongo/bongita/bongita (2011-07-23T14.55.47-0700).chatlog/bongita
181
+ (2011-07-23T14.55.47-0700).xml
182
+ - spec/fixtures/adium/AIM.bongo/bongita/bongita (2011-07-24T15.10.02-0700).chatlog/bongita
183
+ (2011-07-24T15.10.02-0700).xml
184
+ - spec/fixtures/adium/GTalk.bongo@gmail.com/rumples@gmail.com/rumples@gmail.com (2012-01-13T11.27.54-0800).chatlog/rumples@gmail.com
185
+ (2012-01-13T11.27.54-0800).xml
186
+ - spec/spec_helper.rb
187
+ - spec/tam_tam/adapter_spec.rb
188
+ - spec/tam_tam/adapters/adium_spec.rb
189
+ - spec/tam_tam/log_set_spec.rb
190
+ - spec/tam_tam/message_set_spec.rb
191
+ - spec/tam_tam/message_spec.rb
192
+ - spec/tam_tam_spec.rb
193
+ - tam_tam.gemspec
194
+ homepage: https://github.com/jimmycuadra/tam_tam
195
+ licenses: []
196
+ post_install_message:
197
+ rdoc_options: []
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ segments:
207
+ - 0
208
+ hash: 1763363699347365902
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ! '>='
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ segments:
216
+ - 0
217
+ hash: 1763363699347365902
218
+ requirements: []
219
+ rubyforge_project:
220
+ rubygems_version: 1.8.23
221
+ signing_key:
222
+ specification_version: 3
223
+ summary: Parse, filter, and analyze logs from online chat clients.
224
+ test_files:
225
+ - spec/fixtures/adium/AIM.bongo/bongita/bongita (2011-07-23T14.55.47-0700).chatlog/bongita
226
+ (2011-07-23T14.55.47-0700).xml
227
+ - spec/fixtures/adium/AIM.bongo/bongita/bongita (2011-07-24T15.10.02-0700).chatlog/bongita
228
+ (2011-07-24T15.10.02-0700).xml
229
+ - spec/fixtures/adium/GTalk.bongo@gmail.com/rumples@gmail.com/rumples@gmail.com (2012-01-13T11.27.54-0800).chatlog/rumples@gmail.com
230
+ (2012-01-13T11.27.54-0800).xml
231
+ - spec/spec_helper.rb
232
+ - spec/tam_tam/adapter_spec.rb
233
+ - spec/tam_tam/adapters/adium_spec.rb
234
+ - spec/tam_tam/log_set_spec.rb
235
+ - spec/tam_tam/message_set_spec.rb
236
+ - spec/tam_tam/message_spec.rb
237
+ - spec/tam_tam_spec.rb