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 ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
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
@@ -0,0 +1,3 @@
1
+ module Memetalk
2
+ VERSION = "0.0.1"
3
+ end
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
@@ -0,0 +1,2 @@
1
+ require 'rspec'
2
+ require 'memetalk'
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