meem 0.0.2 → 1.0.0
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/README.md +1 -1
- data/lib/meem/templates.rb +40 -0
- data/lib/meem/version.rb +1 -1
- data/lib/meem.rb +28 -49
- metadata +4 -3
data/README.md
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
require "pathname"
|
2
|
+
require "open-uri"
|
3
|
+
|
4
|
+
module Meem::Templates
|
5
|
+
PATHS = [
|
6
|
+
Pathname.new("#{ENV['HOME']}/.meem/"),
|
7
|
+
Pathname.new("#{DIRECTORY}/../templates/")
|
8
|
+
]
|
9
|
+
|
10
|
+
# List templates.
|
11
|
+
#
|
12
|
+
# Returns an Array of Pathname instances.
|
13
|
+
def self.list
|
14
|
+
PATHS.map do |path|
|
15
|
+
path.children.select { |child| child.extname == ".jpg" }
|
16
|
+
end.flatten
|
17
|
+
end
|
18
|
+
|
19
|
+
# Find a given template.
|
20
|
+
#
|
21
|
+
# template - A String describing a template.
|
22
|
+
#
|
23
|
+
# Return a Pathname instance.
|
24
|
+
def self.find template
|
25
|
+
list.find { |file| file.basename.to_s =~ /#{template}/ }
|
26
|
+
end
|
27
|
+
|
28
|
+
# Load a template from file or the internet.
|
29
|
+
#
|
30
|
+
# template - A String describing a template.
|
31
|
+
#
|
32
|
+
# Returns a File.
|
33
|
+
def self.load template
|
34
|
+
if template[/^http:\/\//]
|
35
|
+
return open template
|
36
|
+
else
|
37
|
+
find template
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/meem/version.rb
CHANGED
data/lib/meem.rb
CHANGED
@@ -1,31 +1,30 @@
|
|
1
|
+
DIRECTORY = File.expand_path File.dirname __FILE__
|
2
|
+
|
1
3
|
require "meem/version"
|
4
|
+
require "meem/templates"
|
2
5
|
require "optparse"
|
3
6
|
require "ostruct"
|
4
7
|
require "meme_captain"
|
5
|
-
require "open-uri"
|
6
|
-
require "pathname"
|
7
|
-
|
8
|
-
DIRECTORY = File.expand_path File.dirname __FILE__
|
9
8
|
|
10
9
|
module Meem
|
11
|
-
PATHS = [
|
12
|
-
"#{ENV['HOME']}/.meem/",
|
13
|
-
"#{DIRECTORY}/../templates/"
|
14
|
-
]
|
15
|
-
|
16
10
|
def self.run arguments
|
17
11
|
options = parse arguments
|
18
12
|
|
19
|
-
|
20
|
-
|
13
|
+
template = Templates.load options.meme
|
14
|
+
|
15
|
+
if template
|
16
|
+
image = generate template, options.top, options.bottom
|
21
17
|
|
22
|
-
|
23
|
-
|
18
|
+
if STDOUT.tty?
|
19
|
+
path = "/tmp/meme.jpg"
|
24
20
|
|
25
|
-
|
26
|
-
|
21
|
+
image.write path
|
22
|
+
puts path
|
23
|
+
else
|
24
|
+
puts image.to_blob
|
25
|
+
end
|
27
26
|
else
|
28
|
-
|
27
|
+
error "meme not found"
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
@@ -41,11 +40,14 @@ module Meem
|
|
41
40
|
|
42
41
|
OptionParser.new do |opts|
|
43
42
|
opts.program_name = "meem"
|
44
|
-
opts.banner = "usage: meem <meme>
|
43
|
+
opts.banner = "usage: meem <meme> [options]"
|
45
44
|
opts.version = Meem::VERSION
|
46
45
|
|
47
46
|
opts.on "-l", "--list", "List memes" do
|
48
|
-
list
|
47
|
+
Templates.list.each do |file|
|
48
|
+
puts file.basename.to_s[/(.*)\.jpg/, 1]
|
49
|
+
end
|
50
|
+
|
49
51
|
exit
|
50
52
|
end
|
51
53
|
|
@@ -71,19 +73,17 @@ module Meem
|
|
71
73
|
options
|
72
74
|
end
|
73
75
|
|
74
|
-
|
75
|
-
def self.list
|
76
|
-
PATHS.each do |path|
|
77
|
-
Dir.glob "#{path}/*.jpg" do |file|
|
78
|
-
file = Pathname.new file
|
76
|
+
private
|
79
77
|
|
80
|
-
|
81
|
-
|
82
|
-
|
78
|
+
# Generate a meme.
|
79
|
+
#
|
80
|
+
# template - A File describing a template.
|
81
|
+
# top - A String describing the top caption.
|
82
|
+
# bottom - A String describing the bottom caption.
|
83
|
+
def self.generate template, top, bottom
|
84
|
+
MemeCaptain.meme_top_bottom template, top, bottom, font: "#{DIRECTORY}/../fonts/impact.ttf"
|
83
85
|
end
|
84
86
|
|
85
|
-
private
|
86
|
-
|
87
87
|
# Print a message and exit.
|
88
88
|
#
|
89
89
|
# message - A String describing the message.
|
@@ -92,25 +92,4 @@ module Meem
|
|
92
92
|
puts "meem: #{message}"
|
93
93
|
exit code
|
94
94
|
end
|
95
|
-
|
96
|
-
# Load a meme.
|
97
|
-
#
|
98
|
-
# meme - A String describing a meme.
|
99
|
-
#
|
100
|
-
# Returns a File.
|
101
|
-
def self.fetch meme
|
102
|
-
if meme[/^http:\/\//]
|
103
|
-
return open meme
|
104
|
-
else
|
105
|
-
PATHS.each do |path|
|
106
|
-
image = path + "#{meme}.jpg"
|
107
|
-
|
108
|
-
if File.exists? image
|
109
|
-
return open image
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
error "meme not found"
|
114
|
-
end
|
115
|
-
end
|
116
95
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- bin/meem
|
92
92
|
- fonts/impact.ttf
|
93
93
|
- lib/meem.rb
|
94
|
+
- lib/meem/templates.rb
|
94
95
|
- lib/meem/version.rb
|
95
96
|
- meem.gemspec
|
96
97
|
- spec/meem_spec.rb
|
@@ -123,7 +124,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
124
|
version: '0'
|
124
125
|
segments:
|
125
126
|
- 0
|
126
|
-
hash:
|
127
|
+
hash: -3622821011475249863
|
127
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
129
|
none: false
|
129
130
|
requirements:
|
@@ -132,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
133
|
version: '0'
|
133
134
|
segments:
|
134
135
|
- 0
|
135
|
-
hash:
|
136
|
+
hash: -3622821011475249863
|
136
137
|
requirements: []
|
137
138
|
rubyforge_project:
|
138
139
|
rubygems_version: 1.8.23
|