le_meme 0.0.7 → 0.0.8
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.
- checksums.yaml +4 -4
- data/bin/meme +26 -5
- data/lib/le_meme.rb +15 -9
- data/lib/le_meme/version.rb +1 -1
- data/spec/le_meme_spec.rb +8 -0
- metadata +2 -3
- data/open +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d259d15403afedfcf9afff3d29004ea4d778f180
|
4
|
+
data.tar.gz: 509820a6f6e562852d82e0494ad3e4e2f81be81e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a432b9ba98e2390e5409a1dd327a4d6ee3b9d059c3b76b2b0185e71e4833e16841a394e175efc9b8509d668abd9a1473d0ed2176b7b84be3b562e0b2a3c202a6
|
7
|
+
data.tar.gz: 82c70074224e66c354f074d1786747c1d820756371c7dd403337136a994ddaede68f2a83094f64d2821614eb185a7bf4bff806099530e01684968e66449e017c
|
data/bin/meme
CHANGED
@@ -4,8 +4,7 @@ require 'le_meme'
|
|
4
4
|
require 'slop'
|
5
5
|
|
6
6
|
memegen = LeMeme.new
|
7
|
-
|
8
|
-
opts = Slop.parse!(strict: true, help: true) do
|
7
|
+
opts = Slop.new(strict: true, help: true) do
|
9
8
|
banner <<-HEREDOC
|
10
9
|
Usage: meme [options] [top-text] [bottom-text]
|
11
10
|
|
@@ -20,6 +19,7 @@ HEREDOC
|
|
20
19
|
on 'p', 'path=', 'path to an image to use for the meme'
|
21
20
|
on 'w', 'watermark=', 'text to watermark the image'
|
22
21
|
on 'o', 'outpath=', 'path to save the final meme to'
|
22
|
+
on 'O', 'open', "Open the file in your system's default image viewer"
|
23
23
|
|
24
24
|
on 'templates', 'list all the meme templates' do
|
25
25
|
puts memegen.memes.keys.join("\n")
|
@@ -30,15 +30,36 @@ HEREDOC
|
|
30
30
|
exit
|
31
31
|
end
|
32
32
|
end
|
33
|
+
if ARGV.empty?
|
34
|
+
$stdout.puts opts if $stdout.tty?
|
35
|
+
exit(0)
|
36
|
+
end
|
33
37
|
|
38
|
+
opts.parse!
|
34
39
|
|
35
40
|
top = opts[:top] || ARGV[0]
|
36
41
|
bottom = opts[:bottom] || ARGV[1]
|
37
42
|
|
43
|
+
|
38
44
|
if opts[:path]
|
39
|
-
|
45
|
+
output = memegen.meme(path: opts[:path], top: top, bottom: bottom, watermark: opts[:watermark], outpath: opts[:outpath])
|
46
|
+
else
|
47
|
+
name = opts[:meme].strip if opts[:meme]
|
48
|
+
output = memegen.fast_meme(name: name, top: top, bottom: bottom, watermark: opts[:watermark], outpath: opts[:outpath])
|
49
|
+
end
|
50
|
+
|
51
|
+
if opts[:open]
|
52
|
+
case RbConfig::CONFIG['host_os']
|
53
|
+
when /mswin|mingw|cygwin/
|
54
|
+
`start #{output}`
|
55
|
+
when /darwin/
|
56
|
+
`open -F #{output}`
|
57
|
+
when /linux|bsd/
|
58
|
+
`xdg-open #{output}`
|
59
|
+
else
|
60
|
+
$stderr.puts "Sorry, don't know how to open on your system! (#{RbConfig::Config['host_os']})"
|
61
|
+
end
|
40
62
|
else
|
41
|
-
|
42
|
-
$stdout.puts memegen.fast_meme(name: name.strip, top: top, bottom: bottom, watermark: opts[:watermark], outpath: opts[:outpath])
|
63
|
+
$stdout.puts output
|
43
64
|
end
|
44
65
|
exit
|
data/lib/le_meme.rb
CHANGED
@@ -29,9 +29,10 @@ class LeMeme
|
|
29
29
|
# @param top [String] The text you want to appear on the top of the meme.
|
30
30
|
# @param bottom [String] The text you want to appear on the bottom of the meme.
|
31
31
|
# @param watermark [String] The watermark text. If nil it is omitted
|
32
|
-
# @param outpath [String] Where do you want to put the generated meme. Defaults to /tmp/
|
33
|
-
# @
|
34
|
-
|
32
|
+
# @param outpath [String] Where do you want to put the generated meme. Defaults to /tmp/meme-<timestamp>.<extension>
|
33
|
+
# @param nowrite [Boolean] Returns the meme as a blob (string) instead of writing to disk.
|
34
|
+
# @return [String] Either the generated meme object (if nowrite) or a path to the meme
|
35
|
+
def generate(path:, top: nil, bottom: nil, watermark: nil, outpath: nil, nowrite: false)
|
35
36
|
top = (top || '').upcase
|
36
37
|
bottom = (bottom || '').upcase
|
37
38
|
|
@@ -57,8 +58,12 @@ class LeMeme
|
|
57
58
|
end
|
58
59
|
|
59
60
|
output_path = outpath || "/tmp/meme-#{Time.now.to_i}#{path.extname}"
|
60
|
-
|
61
|
-
|
61
|
+
if nowrite
|
62
|
+
canvas.to_blob
|
63
|
+
else
|
64
|
+
canvas.write(output_path)
|
65
|
+
output_path
|
66
|
+
end
|
62
67
|
end
|
63
68
|
alias_method :meme, :generate
|
64
69
|
|
@@ -69,9 +74,10 @@ class LeMeme
|
|
69
74
|
# @param top [String] The text you want to appear on the top of the meme.
|
70
75
|
# @param bottom [String] The text you want to appear on the bottom of the meme.
|
71
76
|
# @param watermark [String] The watermark text. If nil it is omitted
|
72
|
-
# @param outpath [String] Where do you want to put the generated meme. Defaults to /tmp/
|
73
|
-
# @
|
74
|
-
|
77
|
+
# @param outpath [String] Where do you want to put the generated meme. Defaults to /tmp/meme-<timestamp>.<extension>
|
78
|
+
# @param nowrite [Boolean] Returns the meme as a blob (string) instead of writing to disk.
|
79
|
+
# @return [String] Either the generated meme object (if nowrite) or a path to the meme
|
80
|
+
def fast_meme(name: nil, top: nil, bottom: nil, watermark: nil, outpath: nil, nowrite: false)
|
75
81
|
if name.nil?
|
76
82
|
path = @memes[@memes.keys.sample]
|
77
83
|
elsif @memes[name].nil?
|
@@ -79,7 +85,7 @@ class LeMeme
|
|
79
85
|
else
|
80
86
|
path = @memes[name]
|
81
87
|
end
|
82
|
-
generate(path: path, top: top, bottom: bottom, watermark: watermark, outpath: outpath)
|
88
|
+
generate(path: path, top: top, bottom: bottom, watermark: watermark, outpath: outpath, nowrite: nowrite)
|
83
89
|
end
|
84
90
|
alias_method :m, :fast_meme
|
85
91
|
|
data/lib/le_meme/version.rb
CHANGED
data/spec/le_meme_spec.rb
CHANGED
@@ -14,6 +14,7 @@ describe LeMeme do
|
|
14
14
|
x = ['text', nil] * 3
|
15
15
|
x.permutation(3).to_a.uniq.each do |top, bottom, watermark|
|
16
16
|
it "should generate a meme with top: '#{top}', bottom: '#{bottom}', and watermark: '#{watermark}'" do
|
17
|
+
expect_any_instance_of(Magick::ImageList).to receive(:write).and_return("/tmp/meme-#{Time.now.to_i}.jpg")
|
17
18
|
expect(meme.generate(path: image, top: top, bottom: bottom, watermark: watermark)).to match(%r{/tmp/meme-\d+.jpg})
|
18
19
|
end
|
19
20
|
end
|
@@ -24,6 +25,12 @@ describe LeMeme do
|
|
24
25
|
expect(meme.generate(path: image, top: 'top', bottom: 'bottom', outpath: 'test.jpg')).to eq('test.jpg')
|
25
26
|
end
|
26
27
|
end
|
28
|
+
context 'with nowrite set to true' do
|
29
|
+
it 'should output the meme as a blob string' do
|
30
|
+
mymeme = meme.generate(path: image, nowrite: true)
|
31
|
+
expect(mymeme.size).to eq(43618)
|
32
|
+
end
|
33
|
+
end
|
27
34
|
end
|
28
35
|
|
29
36
|
describe '#meme' do
|
@@ -47,6 +54,7 @@ describe LeMeme do
|
|
47
54
|
|
48
55
|
context 'without a specified template' do
|
49
56
|
it 'should generate a meme' do
|
57
|
+
expect_any_instance_of(Magick::ImageList).to receive(:write).and_return("/tmp/meme-#{Time.now.to_i}.jpg")
|
50
58
|
expect(meme.fast_meme).to match(%r{/tmp/meme-\d+.jpg})
|
51
59
|
end
|
52
60
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: le_meme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Sandberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -208,7 +208,6 @@ files:
|
|
208
208
|
- memes/wonka.jpg
|
209
209
|
- memes/yee.jpg
|
210
210
|
- memes/yuno.jpg
|
211
|
-
- open
|
212
211
|
- spec/le_meme_spec.rb
|
213
212
|
- spec/spec_helper.rb
|
214
213
|
homepage: http://github.com/paradox460/le_meme
|