memetalk 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 +3 -0
- data/.rspec +2 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +36 -0
- data/Rakefile +15 -0
- data/Readme.md +43 -0
- data/bin/memetalk +34 -0
- data/lib/memetalk/version.rb +3 -0
- data/lib/memetalk.rb +44 -0
- data/memetalk.gemspec +26 -0
- data/spec/memetalk_spec.rb +71 -0
- data/spec/spec_helper.rb +2 -0
- metadata +115 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
memetalk (0.0.1)
|
5
|
+
memegenerator
|
6
|
+
talker
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: http://rubygems.org/
|
10
|
+
specs:
|
11
|
+
diff-lcs (1.1.2)
|
12
|
+
eventmachine (0.12.10)
|
13
|
+
memegenerator (1.1.0)
|
14
|
+
nokogiri (~> 1.4)
|
15
|
+
nokogiri (1.4.4)
|
16
|
+
rspec (2.5.0)
|
17
|
+
rspec-core (~> 2.5.0)
|
18
|
+
rspec-expectations (~> 2.5.0)
|
19
|
+
rspec-mocks (~> 2.5.0)
|
20
|
+
rspec-core (2.5.1)
|
21
|
+
rspec-expectations (2.5.0)
|
22
|
+
diff-lcs (~> 1.1.2)
|
23
|
+
rspec-mocks (2.5.0)
|
24
|
+
talker (0.0.4)
|
25
|
+
eventmachine
|
26
|
+
yajl-ruby
|
27
|
+
yajl-ruby (0.8.0)
|
28
|
+
|
29
|
+
PLATFORMS
|
30
|
+
ruby
|
31
|
+
|
32
|
+
DEPENDENCIES
|
33
|
+
memegenerator
|
34
|
+
memetalk!
|
35
|
+
rspec
|
36
|
+
talker
|
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
6
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
7
|
+
end
|
8
|
+
|
9
|
+
task default: :spec
|
10
|
+
|
11
|
+
desc 'hey'
|
12
|
+
task :publish do
|
13
|
+
require 'memetalk'
|
14
|
+
Memetalk.publish 'link'
|
15
|
+
end
|
data/Readme.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
#Memetalk
|
2
|
+
|
3
|
+
A simple gem that combines the power of [a fork](http://github.com/txus/memegenerator) of Dr Brain's [meme generator](http://github.com/drbrain/meme)
|
4
|
+
and the power of communication of [Talkerapp](http://talkerapp.com).
|
5
|
+
|
6
|
+
##Install
|
7
|
+
|
8
|
+
gem install memetalk
|
9
|
+
|
10
|
+
You have to set your Talker credentials in a file named `~/.memetalkrc`:
|
11
|
+
|
12
|
+
talker:
|
13
|
+
token: 'MY_TOKEN' (you can get your token in Talkerapp's Settings)
|
14
|
+
room: 1487 (your room ID)
|
15
|
+
|
16
|
+
##Usage
|
17
|
+
|
18
|
+
To list the available meme generators, just type `memetalk --help`. The syntax
|
19
|
+
goes like this:
|
20
|
+
|
21
|
+
memetalk GENERATOR "LINE1" "OPTIONAL LINE 2"
|
22
|
+
|
23
|
+
When you have chosen a proper generator for the message you want to communicate
|
24
|
+
to your fellow colleagues, do the following:
|
25
|
+
|
26
|
+
memetalk Y_U_NO "TESTS" "WHY U NO GREEN"
|
27
|
+
|
28
|
+
And look at your Talker room!
|
29
|
+
|
30
|
+
##Contribute!
|
31
|
+
|
32
|
+
* Fork the project.
|
33
|
+
* Make your feature addition or bug fix.
|
34
|
+
* Add specs for it. This is important so I don't break it in a future
|
35
|
+
version unintentionally.
|
36
|
+
* Commit, do not mess with rakefile, version, or history.
|
37
|
+
If you want to have your own version, that is fine but bump version
|
38
|
+
in a commit by itself I can ignore when I pull.
|
39
|
+
* Send me a pull request. Bonus points for topic branches.
|
40
|
+
|
41
|
+
## Copyright
|
42
|
+
|
43
|
+
Copyright (c) 2011 Josep M. Bach. See LICENSE for details.
|
data/bin/memetalk
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << 'lib'
|
3
|
+
require 'bundler'
|
4
|
+
Bundler.require
|
5
|
+
require 'memetalk'
|
6
|
+
|
7
|
+
if ARGV.any? { |a| a == '--help' || a == '-h' }
|
8
|
+
puts
|
9
|
+
puts 'Memetalk. Brought to you by Codegram'
|
10
|
+
puts '------------------------------------'
|
11
|
+
puts 'Generates and publishes memes to a Talkerapp room (see talkerapp.com).'
|
12
|
+
puts
|
13
|
+
puts 'You should have a ~/.memetalkrc with the following data:'
|
14
|
+
puts
|
15
|
+
puts "\ttalker:"
|
16
|
+
puts "\t token: 'MY_API_TOKEN' (go to Settings in your Talker account to get yours)"
|
17
|
+
puts "\t room: YOUR_ROOM_ID (the number id of your room, for example 3874)\n"
|
18
|
+
puts
|
19
|
+
puts 'USAGE:'
|
20
|
+
puts "\t\tmemetalk GENERATOR LINE1 [LINE2]\n"
|
21
|
+
puts "\tExample:"
|
22
|
+
puts "\t\tmemetalk Y_U_NO \"TEST\" \"WHY U NO GREEN\"\n"
|
23
|
+
puts
|
24
|
+
puts "...and your meme will be posted to your Talker room!\n"
|
25
|
+
puts
|
26
|
+
puts 'Available generators are:'
|
27
|
+
Memetalk.list.each do |m|
|
28
|
+
puts "\t#{m}"
|
29
|
+
end
|
30
|
+
puts
|
31
|
+
exit(0)
|
32
|
+
end
|
33
|
+
|
34
|
+
Memetalk.run ARGV
|
data/lib/memetalk.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'talker/client'
|
3
|
+
require 'meme'
|
4
|
+
require 'eventmachine'
|
5
|
+
|
6
|
+
module Memetalk
|
7
|
+
|
8
|
+
class << self
|
9
|
+
|
10
|
+
def list
|
11
|
+
Meme::GENERATORS.keys
|
12
|
+
end
|
13
|
+
|
14
|
+
def run argv = ARGV
|
15
|
+
publish Meme.run(argv) + '.jpg'
|
16
|
+
end
|
17
|
+
|
18
|
+
def publish link
|
19
|
+
EM.run do
|
20
|
+
Talker::Client.connect(room: room, token: token) do |client|
|
21
|
+
client.on_connected do
|
22
|
+
client.send_message link
|
23
|
+
client.close
|
24
|
+
end
|
25
|
+
client.on_close do
|
26
|
+
EM.stop
|
27
|
+
end
|
28
|
+
client.on_error do |error|
|
29
|
+
$stdout.print error
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def token
|
38
|
+
@@token ||= YAML.load(File.read(File.join(File.expand_path('~'), '.memetalkrc')))["talker"]["token"]
|
39
|
+
end
|
40
|
+
def room
|
41
|
+
@@room ||= YAML.load(File.read(File.join(File.expand_path('~'), '.memetalkrc')))["talker"]["room"]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/memetalk.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "memetalk/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "memetalk"
|
7
|
+
s.version = Memetalk::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Josep M. Bach"]
|
10
|
+
s.email = ["josep.m.bach@gmail.com"]
|
11
|
+
s.homepage = "http://github.com/txus/memetalk"
|
12
|
+
s.summary = %q{Send auto-generated memes to Talkerapp rooms!}
|
13
|
+
s.description = %q{Send auto-generated memes to Talkerapp rooms!}
|
14
|
+
|
15
|
+
s.rubyforge_project = "memetalk"
|
16
|
+
|
17
|
+
s.add_runtime_dependency 'talker'
|
18
|
+
s.add_runtime_dependency 'memegenerator'
|
19
|
+
|
20
|
+
s.add_development_dependency 'rspec'
|
21
|
+
|
22
|
+
s.files = `git ls-files`.split("\n")
|
23
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
24
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
25
|
+
s.require_paths = ["lib"]
|
26
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'eventmachine'
|
3
|
+
require 'meme'
|
4
|
+
|
5
|
+
|
6
|
+
describe Memetalk do
|
7
|
+
describe '.list' do
|
8
|
+
it 'returns the available meme list' do
|
9
|
+
Meme::GENERATORS.stub(:keys).and_return ['Y_U_NO', 'PHILOSORAPTOR']
|
10
|
+
Memetalk.list.should == ['Y_U_NO', 'PHILOSORAPTOR']
|
11
|
+
end
|
12
|
+
end
|
13
|
+
describe '.run' do
|
14
|
+
it 'delegates meme creation to Meme Generator and publishes it' do
|
15
|
+
link = 'http://google.com'
|
16
|
+
Meme.should_receive(:run).with(['Y_U_NO', 'TEST', 'WHY U NO GREEN']).and_return link
|
17
|
+
Memetalk.should_receive(:publish).with (link + '.jpg')
|
18
|
+
Memetalk.run(['Y_U_NO', 'TEST', 'WHY U NO GREEN'])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
describe '.publish' do
|
22
|
+
it 'publishes a link to talker' do
|
23
|
+
room = double :room
|
24
|
+
token = double :token
|
25
|
+
client = double :client
|
26
|
+
error = double :error
|
27
|
+
link = double :link
|
28
|
+
|
29
|
+
EM.should_receive(:run).and_yield
|
30
|
+
|
31
|
+
Memetalk.stub(:token).and_return token
|
32
|
+
Memetalk.stub(:room).and_return room
|
33
|
+
Talker::Client.should_receive(:connect).with(room: room, token: token).and_yield client
|
34
|
+
|
35
|
+
# on connected callback
|
36
|
+
client.should_receive(:on_connected).and_yield
|
37
|
+
client.should_receive(:send_message).with link
|
38
|
+
client.should_receive(:close)
|
39
|
+
|
40
|
+
# on close callback
|
41
|
+
client.should_receive(:on_close).and_yield
|
42
|
+
EM.should_receive(:stop)
|
43
|
+
|
44
|
+
# on error callback
|
45
|
+
client.should_receive(:on_error).and_yield error
|
46
|
+
$stdout.should_receive(:print).with error
|
47
|
+
|
48
|
+
Memetalk.publish link
|
49
|
+
end
|
50
|
+
end
|
51
|
+
describe '.token' do
|
52
|
+
it 'returns the token from ~/.memetalkrc' do
|
53
|
+
File.should_receive(:read).and_return """
|
54
|
+
talker:
|
55
|
+
token: 'a1e23f4567'
|
56
|
+
"""
|
57
|
+
Memetalk.send(:token).should == 'a1e23f4567'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '.room' do
|
62
|
+
it 'returns the room from ~/.memetalkrc' do
|
63
|
+
File.should_receive(:read).and_return """
|
64
|
+
talker:
|
65
|
+
room: 1398
|
66
|
+
"""
|
67
|
+
Memetalk.send(:room).should == 1398
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: memetalk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Josep M. Bach
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-02-09 00:00:00 +01:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: talker
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: memegenerator
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
version: "0"
|
57
|
+
type: :development
|
58
|
+
version_requirements: *id003
|
59
|
+
description: Send auto-generated memes to Talkerapp rooms!
|
60
|
+
email:
|
61
|
+
- josep.m.bach@gmail.com
|
62
|
+
executables:
|
63
|
+
- memetalk
|
64
|
+
extensions: []
|
65
|
+
|
66
|
+
extra_rdoc_files: []
|
67
|
+
|
68
|
+
files:
|
69
|
+
- .gitignore
|
70
|
+
- .rspec
|
71
|
+
- Gemfile
|
72
|
+
- Gemfile.lock
|
73
|
+
- Rakefile
|
74
|
+
- Readme.md
|
75
|
+
- bin/memetalk
|
76
|
+
- lib/memetalk.rb
|
77
|
+
- lib/memetalk/version.rb
|
78
|
+
- memetalk.gemspec
|
79
|
+
- spec/memetalk_spec.rb
|
80
|
+
- spec/spec_helper.rb
|
81
|
+
has_rdoc: true
|
82
|
+
homepage: http://github.com/txus/memetalk
|
83
|
+
licenses: []
|
84
|
+
|
85
|
+
post_install_message:
|
86
|
+
rdoc_options: []
|
87
|
+
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
version: "0"
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
segments:
|
104
|
+
- 0
|
105
|
+
version: "0"
|
106
|
+
requirements: []
|
107
|
+
|
108
|
+
rubyforge_project: memetalk
|
109
|
+
rubygems_version: 1.3.7
|
110
|
+
signing_key:
|
111
|
+
specification_version: 3
|
112
|
+
summary: Send auto-generated memes to Talkerapp rooms!
|
113
|
+
test_files:
|
114
|
+
- spec/memetalk_spec.rb
|
115
|
+
- spec/spec_helper.rb
|