le_meme 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +90 -0
  6. data/Rakefile +2 -0
  7. data/bin/meme +38 -0
  8. data/fonts/Impact.ttf +0 -0
  9. data/le_meme.gemspec +28 -0
  10. data/lib/le_meme/version.rb +3 -0
  11. data/lib/le_meme.rb +175 -0
  12. data/memes/10guy.jpg +0 -0
  13. data/memes/aaduck.jpg +0 -0
  14. data/memes/aliens.jpg +0 -0
  15. data/memes/allthethings.jpg +0 -0
  16. data/memes/ariel.jpg +0 -0
  17. data/memes/bad.jpg +0 -0
  18. data/memes/bcat.jpg +0 -0
  19. data/memes/blb.jpg +0 -0
  20. data/memes/bpuffin.jpg +0 -0
  21. data/memes/brace.jpg +0 -0
  22. data/memes/bravebear.jpg +0 -0
  23. data/memes/bsm.jpg +0 -0
  24. data/memes/bush.jpg +0 -0
  25. data/memes/butthurt.jpg +0 -0
  26. data/memes/bwolf.jpg +0 -0
  27. data/memes/cash.jpg +0 -0
  28. data/memes/catte.jpg +0 -0
  29. data/memes/comrade.jpg +0 -0
  30. data/memes/costanza.jpg +0 -0
  31. data/memes/cpthind.jpg +0 -0
  32. data/memes/dank.jpg +0 -0
  33. data/memes/doge.jpg +0 -0
  34. data/memes/everywhere.jpg +0 -0
  35. data/memes/fedora.jpg +0 -0
  36. data/memes/feels.jpg +0 -0
  37. data/memes/fem.jpg +0 -0
  38. data/memes/fry.jpg +0 -0
  39. data/memes/fwp.jpg +0 -0
  40. data/memes/gator.jpg +0 -0
  41. data/memes/gears.jpg +0 -0
  42. data/memes/ggg.jpg +0 -0
  43. data/memes/goat.jpg +0 -0
  44. data/memes/god.jpg +0 -0
  45. data/memes/grandma.jpg +0 -0
  46. data/memes/grumpycat.jpg +0 -0
  47. data/memes/hartmann.jpg +0 -0
  48. data/memes/hitler.jpg +0 -0
  49. data/memes/hogscalder.jpg +0 -0
  50. data/memes/impossibru.jpg +0 -0
  51. data/memes/interesting.jpg +0 -0
  52. data/memes/iwolf.jpg +0 -0
  53. data/memes/jducreux.jpg +0 -0
  54. data/memes/jimmies.jpg +0 -0
  55. data/memes/jobs.jpg +0 -0
  56. data/memes/johnny.jpg +0 -0
  57. data/memes/keanu.jpg +0 -0
  58. data/memes/limes.jpg +0 -0
  59. data/memes/maymay.jpg +0 -0
  60. data/memes/mayonnaise.jpg +0 -0
  61. data/memes/menswarehouse.jpg +0 -0
  62. data/memes/money.jpg +0 -0
  63. data/memes/mordor.jpg +0 -0
  64. data/memes/morpheus.jpg +0 -0
  65. data/memes/neckbear.jpg +0 -0
  66. data/memes/oag.jpg +0 -0
  67. data/memes/obama.jpg +0 -0
  68. data/memes/ogre.jpg +0 -0
  69. data/memes/onlyone.jpg +0 -0
  70. data/memes/philo.jpg +0 -0
  71. data/memes/picard.jpg +0 -0
  72. data/memes/picard2.jpg +0 -0
  73. data/memes/rent.jpg +0 -0
  74. data/memes/s3kid.jpg +0 -0
  75. data/memes/santa.jpg +0 -0
  76. data/memes/sap.jpg +0 -0
  77. data/memes/seal.jpg +0 -0
  78. data/memes/sexyfry.jpg +0 -0
  79. data/memes/sfr.jpg +0 -0
  80. data/memes/shotweb.jpg +0 -0
  81. data/memes/shrek.jpg +0 -0
  82. data/memes/skid.jpg +0 -0
  83. data/memes/skid2.jpg +0 -0
  84. data/memes/smg.jpg +0 -0
  85. data/memes/smugbob.jpg +0 -0
  86. data/memes/spoderman.jpg +0 -0
  87. data/memes/steve.jpg +0 -0
  88. data/memes/ugly.jpg +0 -0
  89. data/memes/unclesam.jpg +0 -0
  90. data/memes/wonka.jpg +0 -0
  91. data/memes/yee.jpg +0 -0
  92. data/memes/yuno.jpg +0 -0
  93. data/open +1 -0
  94. metadata +223 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a37048d79db1bc49c2f90a2325bf1c696f103013
4
+ data.tar.gz: 990910b83fb8ca6025eafd3c15666d059d09e2e8
5
+ SHA512:
6
+ metadata.gz: b610b1a33a8b072658fb95cf9f7f9503271933cfebfe2762aa5c2bff1920a77afed3670b9bc237f6e8336b4d1d33b6eee391907709ed80721d06e5314f56f5d4
7
+ data.tar.gz: 5ed9b698eeb24c2ccd31db10952012a6a9bd0a42a264e574d6fd48f446fc72a4fec800b5b77c2489fd31df75b3d55d59d83296d2768a3ac522038b037ade0bfd
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ vendor
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in lememe.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Jeff Sandberg
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,90 @@
1
+ # Le Meme
2
+
3
+ A tool for making dank memes!
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'le_meme'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install lememe
20
+
21
+ ## Usage
22
+
23
+ ### I WANT A MEME NOW!
24
+ Use the command-line tool, `meme`:
25
+
26
+ ```sh
27
+ meme 'i want a' 'dank meme'
28
+ ```
29
+ <image goes here>
30
+
31
+ ### I want to see the command line options
32
+ You can do most meme-ish things from the command-line. It has interactive help at `meme -h`.
33
+ Should be straightforward enough for even the dankest memer.
34
+
35
+ ### I want to make memes in my ruby application
36
+ Easy enough!
37
+
38
+ ```ruby
39
+ require 'le_meme'
40
+
41
+ meme = LeMeme.new
42
+
43
+ meme.m(top: 'dank memes!', bottom: 'bottom text')
44
+ ```
45
+
46
+ See the [docs]() for all the shrektastic details
47
+
48
+ ## Contributing
49
+
50
+ 1. Fork it ( https://github.com/paradox460/lememe/fork )
51
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
52
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
53
+ 4. Push to the branch (`git push origin my-new-feature`)
54
+ 5. Create a new Pull Request
55
+
56
+ ## WHY?
57
+ Because the world needs more dank memes!
58
+
59
+ Actually, because I wanted to take some time and clean up the core of [memebot](http://github.com/paradox460/memebot), and figured making the essential meme generation a gem was the best way to do it. Now I can spam my coworkers with memes in hipchat as well.
60
+
61
+ ## TODO
62
+ - [ ] Test suite
63
+ - [ ] Accept non-tmp dir meme generation paths
64
+
65
+ ## License
66
+
67
+ ```
68
+ Copyright (c) 2015 Jeff Sandberg
69
+
70
+ MIT License
71
+
72
+ Permission is hereby granted, free of charge, to any person obtaining
73
+ a copy of this software and associated documentation files (the
74
+ "Software"), to deal in the Software without restriction, including
75
+ without limitation the rights to use, copy, modify, merge, publish,
76
+ distribute, sublicense, and/or sell copies of the Software, and to
77
+ permit persons to whom the Software is furnished to do so, subject to
78
+ the following conditions:
79
+
80
+ The above copyright notice and this permission notice shall be
81
+ included in all copies or substantial portions of the Software.
82
+
83
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
84
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
85
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
86
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
87
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
88
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
89
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
90
+ ```
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/bin/meme ADDED
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'le_meme'
4
+ require 'pry'
5
+
6
+ memegen = LeMeme.new
7
+
8
+ opts = Slop.parse!(strict: true, help: true) do
9
+ banner <<-HEREDOC
10
+ Usage: meme [options] [top-text] [bottom-text]
11
+
12
+ Top and bottom may be set by the last 2 unprefixed arguments, or by their respective flags.
13
+ If you don't specify a meme, either via image path or by template, we'll pick one for you.
14
+ HEREDOC
15
+ separator '---'
16
+
17
+ on 't', 'top=', 'top text'
18
+ on 'b', 'bottom=', 'bottom text.'
19
+ on 'm', 'meme=', 'meme template you want to use, see --templates'
20
+ on 'p', 'path=', 'path to an image to use for the meme'
21
+ on 'w', 'watermark=', 'text to watermark the image'
22
+
23
+ on 'templates', 'list all the meme templates' do
24
+ puts memegen.memes.keys.join("\n")
25
+ exit
26
+ end
27
+ on 'v', 'version', 'display the current version' do
28
+ $stdout.puts LeMeme::VERSION
29
+ exit
30
+ end
31
+ end
32
+
33
+
34
+ top = opts[:top] || ARGV[0]
35
+ bottom = opts[:bottom] || ARGV[1]
36
+
37
+ $stdout.puts memegen.fast_meme(name: opts[:meme], top: top, bottom: bottom, watermark: opts[:watermark])
38
+ exit
data/fonts/Impact.ttf ADDED
Binary file
data/le_meme.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'le_meme/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "le_meme"
8
+ spec.version = LeMeme::VERSION
9
+ spec.authors = ["Jeff Sandberg"]
10
+ spec.email = ["paradox460@gmail.com"]
11
+ spec.summary = %q{Dank memes, in gem form}
12
+ spec.description = %q{A gem that generates memes. Can be used as a library or command-line executable.}
13
+ spec.homepage = "http://github.com/paradox460/lememe"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "pry", "~> 0.10"
24
+
25
+ spec.add_runtime_dependency 'rmagick', '~> 2.13'
26
+ spec.add_runtime_dependency 'word_wrapper', '~> 0.5.0'
27
+ spec.add_runtime_dependency 'slop', '~> 3.6'
28
+ end
@@ -0,0 +1,3 @@
1
+ class LeMeme
2
+ VERSION = "0.0.1"
3
+ end
data/lib/le_meme.rb ADDED
@@ -0,0 +1,175 @@
1
+ require 'le_meme/version'
2
+ require 'rmagick'
3
+ require 'word_wrapper'
4
+
5
+ # Create some dank memes
6
+ #
7
+ # @author Jeff Sandberg <paradox460@gmail.com>
8
+ class LeMeme
9
+ VALID_IMAGE_EXTENSIONS = /\.(jp[e]?g|png|gif)$/i
10
+
11
+ attr_reader :memes
12
+
13
+ # Create a new instance of LeMeme, for generating memes.
14
+ #
15
+ # @param [Array] Directories of images you want the gem to know about. Scrapes images in said directory
16
+ # @return [String] description of returned object
17
+ def initialize(*dirs)
18
+ @memes = {}
19
+ load_directory!
20
+ dirs.each do |dir|
21
+ load_directory!(dir)
22
+ end
23
+ end
24
+
25
+ # Create a meme with the given text
26
+ #
27
+ # @param path [String] The path to the image file you want to annotate.
28
+ # @param top [String] The text you want to appear on the top of the meme.
29
+ # @param bottom [String] The text you want to appear on the bottom of the meme.
30
+ # @param watermark [String] The watermark text. If nil it is omitted
31
+ # @return [String] Path to the generated meme
32
+ def generate(path:, top: nil, bottom: nil, watermark: nil)
33
+ top = (top || '').upcase
34
+ bottom = (bottom || '').upcase
35
+
36
+ path = Pathname.new(path).realpath
37
+
38
+ canvas = Magick::ImageList.new(path)
39
+
40
+ caption_meme(top, Magick::NorthGravity, canvas) unless top.empty?
41
+ caption_meme(bottom, Magick::SouthGravity, canvas) unless bottom.empty?
42
+
43
+ # Draw the watermark
44
+ unless watermark.nil?
45
+ watermark_draw = Magick::Draw.new
46
+ watermark_draw.annotate(canvas, 0, 0, 0, 0, " #{watermark}") do
47
+ self.font = 'Helvetica'
48
+ self.fill = 'white'
49
+ self.text_antialias(false)
50
+ self.font_weight = 100
51
+ self.gravity = Magick::SouthEastGravity
52
+ self.pointsize = 10
53
+ self.undercolor = 'hsla(0,0,0,.5)'
54
+ end
55
+ end
56
+
57
+ output_path = "/tmp/meme-#{Time.now.to_i}#{path.extname}"
58
+ canvas.write(output_path)
59
+ output_path
60
+ end
61
+ alias_method :meme, :generate
62
+
63
+ # Create a meme, using the pre-loaded templates.
64
+ # If no template is specified, randomly picks one
65
+ #
66
+ # @param name [String] Name of the template to use. See #memes
67
+ # @param top [String] The text you want to appear on the top of the meme.
68
+ # @param bottom [String] The text you want to appear on the bottom of the meme.
69
+ # @param watermark [String] The watermark text. If nil it is omitted
70
+ # @return [String] Path to the generated meme
71
+ def fast_meme(name: nil, top: nil, bottom: nil, watermark: nil)
72
+ if name.nil?
73
+ path = @memes[@memes.keys.sample]
74
+ elsif @memes[name].nil?
75
+ fail ArgumentError, "#{name} is not a pre-loaded meme"
76
+ else
77
+ path = @memes[name]
78
+ end
79
+ generate(path: path, top: top, bottom: bottom, watermark: watermark)
80
+ end
81
+ alias_method :m, :fast_meme
82
+
83
+ private
84
+
85
+ # Load all images in a directory as memes.
86
+ # Last loaded directory overrides first, if there are name conflicts.
87
+ #
88
+ # @param directory [String] Directory to scrape.
89
+ def load_directory!(directory = nil)
90
+ directory = directory.nil? ? "#{File.join(File.dirname(File.expand_path(__FILE__)), '../memes')}/*.jpg" : "#{directory}/*"
91
+ paths = Dir.glob(directory).select do |path|
92
+ path =~ VALID_IMAGE_EXTENSIONS
93
+ end
94
+ @memes.merge!(paths.reduce({}) do |images, path|
95
+ path = Pathname.new(path).realpath
96
+ name = path.split.last.sub(VALID_IMAGE_EXTENSIONS, '').to_s
97
+ images.merge(name => path)
98
+ end)
99
+ end
100
+
101
+ # Caption a canvas
102
+ #
103
+ # @param text [String] The text to put on as a caption
104
+ # @param gravity [Grav] RMagick Gravity Constant
105
+ # @param canvas [Magick::ImageList] ImageList/Canvas to compose the text onto
106
+ # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
107
+ def caption_meme(text, gravity, canvas)
108
+ text.gsub!('\\', '\\\\\\')
109
+
110
+ # 28 is the biggest pointsize memes dont look like shit on
111
+ min_pointsize = 28
112
+ max_pointsize = 128
113
+ current_pointsize = min_pointsize
114
+ current_stroke = current_pointsize / 30.0
115
+
116
+ max_width = canvas.columns - 20
117
+ max_height = (canvas.rows / 2) - 20
118
+
119
+ draw = Magick::Draw.new
120
+ draw.font = File.join(File.dirname(File.expand_path(__FILE__)), '..', 'fonts', 'Impact.ttf')
121
+ draw.font_weight = Magick::BoldWeight
122
+ metrics = nil
123
+
124
+ # Non-ragged word-wrap
125
+ text = word_wrap(text)
126
+
127
+ # Calculate out the largest pointsize that will fit
128
+ loop do
129
+ draw.pointsize = current_pointsize
130
+ last_metrics = metrics
131
+ metrics = draw.get_multiline_type_metrics(text)
132
+
133
+ if metrics.width + current_stroke > max_width ||
134
+ metrics.height + current_stroke > max_height ||
135
+ current_pointsize > max_pointsize
136
+ if current_pointsize > min_pointsize
137
+ current_pointsize -= 1
138
+ current_stroke = current_pointsize / 30.0
139
+ metrics = last_metrics
140
+ end
141
+ break
142
+ else
143
+ current_pointsize += 1
144
+ current_stroke = current_pointsize / 30.0
145
+ end
146
+ end
147
+ # rubocop:disable Style/RedundantSelf
148
+ draw.annotate(canvas, canvas.columns, canvas.rows - 10, 0, 0, text) do
149
+ self.interline_spacing = -(current_pointsize / 5)
150
+ self.stroke_antialias(true)
151
+ self.stroke = 'black'
152
+ self.fill = 'white'
153
+ self.gravity = gravity
154
+ self.stroke_width = current_stroke
155
+ self.pointsize = current_pointsize
156
+ end
157
+ # rubocop:enable Style/RedundantSelf
158
+ end
159
+ # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
160
+
161
+ # Wrap the text to fit on a meme
162
+ # This basically uses the wordwrapper library, and then does some calculations to split super-long strings
163
+ #
164
+ # @param text [String] The text string to word-wrap.
165
+ # @param col [Fixnum] The number of "columns" to wrap at
166
+ # @return [String] The text, with the
167
+ def word_wrap(text, col: 24)
168
+ text.strip.gsub(/\n\r/, '\s')
169
+ text = WordWrapper::MinimumRaggedness.new(col, text).wrap
170
+ text = text.split("\n").map do |line|
171
+ line.length > col ? line.gsub(/(.{1,#{col}})( +|$\n?)|(.{1,#{col}})/, "\\1\\3\n").strip : line
172
+ end * "\n"
173
+ text.strip
174
+ end
175
+ end
data/memes/10guy.jpg ADDED
Binary file
data/memes/aaduck.jpg ADDED
Binary file
data/memes/aliens.jpg ADDED
Binary file
Binary file
data/memes/ariel.jpg ADDED
Binary file
data/memes/bad.jpg ADDED
Binary file
data/memes/bcat.jpg ADDED
Binary file
data/memes/blb.jpg ADDED
Binary file
data/memes/bpuffin.jpg ADDED
Binary file
data/memes/brace.jpg ADDED
Binary file
Binary file
data/memes/bsm.jpg ADDED
Binary file
data/memes/bush.jpg ADDED
Binary file
Binary file
data/memes/bwolf.jpg ADDED
Binary file
data/memes/cash.jpg ADDED
Binary file
data/memes/catte.jpg ADDED
Binary file
data/memes/comrade.jpg ADDED
Binary file
Binary file
data/memes/cpthind.jpg ADDED
Binary file
data/memes/dank.jpg ADDED
Binary file
data/memes/doge.jpg ADDED
Binary file
Binary file
data/memes/fedora.jpg ADDED
Binary file
data/memes/feels.jpg ADDED
Binary file
data/memes/fem.jpg ADDED
Binary file
data/memes/fry.jpg ADDED
Binary file
data/memes/fwp.jpg ADDED
Binary file
data/memes/gator.jpg ADDED
Binary file
data/memes/gears.jpg ADDED
Binary file
data/memes/ggg.jpg ADDED
Binary file
data/memes/goat.jpg ADDED
Binary file
data/memes/god.jpg ADDED
Binary file
data/memes/grandma.jpg ADDED
Binary file
Binary file
Binary file
data/memes/hitler.jpg ADDED
Binary file
Binary file
Binary file
Binary file
data/memes/iwolf.jpg ADDED
Binary file
Binary file
data/memes/jimmies.jpg ADDED
Binary file
data/memes/jobs.jpg ADDED
Binary file
data/memes/johnny.jpg ADDED
Binary file
data/memes/keanu.jpg ADDED
Binary file
data/memes/limes.jpg ADDED
Binary file
data/memes/maymay.jpg ADDED
Binary file
Binary file
Binary file
data/memes/money.jpg ADDED
Binary file
data/memes/mordor.jpg ADDED
Binary file
Binary file
Binary file
data/memes/oag.jpg ADDED
Binary file
data/memes/obama.jpg ADDED
Binary file
data/memes/ogre.jpg ADDED
Binary file
data/memes/onlyone.jpg ADDED
Binary file
data/memes/philo.jpg ADDED
Binary file
data/memes/picard.jpg ADDED
Binary file
data/memes/picard2.jpg ADDED
Binary file
data/memes/rent.jpg ADDED
Binary file
data/memes/s3kid.jpg ADDED
Binary file
data/memes/santa.jpg ADDED
Binary file
data/memes/sap.jpg ADDED
Binary file
data/memes/seal.jpg ADDED
Binary file
data/memes/sexyfry.jpg ADDED
Binary file
data/memes/sfr.jpg ADDED
Binary file
data/memes/shotweb.jpg ADDED
Binary file
data/memes/shrek.jpg ADDED
Binary file
data/memes/skid.jpg ADDED
Binary file
data/memes/skid2.jpg ADDED
Binary file
data/memes/smg.jpg ADDED
Binary file
data/memes/smugbob.jpg ADDED
Binary file
Binary file
data/memes/steve.jpg ADDED
Binary file
data/memes/ugly.jpg ADDED
Binary file
Binary file
data/memes/wonka.jpg ADDED
Binary file
data/memes/yee.jpg ADDED
Binary file
data/memes/yuno.jpg ADDED
Binary file
data/open ADDED
@@ -0,0 +1 @@
1
+ /tmp/meme-1421208560.jpg
metadata ADDED
@@ -0,0 +1,223 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: le_meme
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jeff Sandberg
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rmagick
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.13'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.13'
69
+ - !ruby/object:Gem::Dependency
70
+ name: word_wrapper
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.5.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.5.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: slop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.6'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.6'
97
+ description: A gem that generates memes. Can be used as a library or command-line
98
+ executable.
99
+ email:
100
+ - paradox460@gmail.com
101
+ executables:
102
+ - meme
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - Gemfile
108
+ - LICENSE.txt
109
+ - README.md
110
+ - Rakefile
111
+ - bin/meme
112
+ - fonts/Impact.ttf
113
+ - le_meme.gemspec
114
+ - lib/le_meme.rb
115
+ - lib/le_meme/version.rb
116
+ - memes/10guy.jpg
117
+ - memes/aaduck.jpg
118
+ - memes/aliens.jpg
119
+ - memes/allthethings.jpg
120
+ - memes/ariel.jpg
121
+ - memes/bad.jpg
122
+ - memes/bcat.jpg
123
+ - memes/blb.jpg
124
+ - memes/bpuffin.jpg
125
+ - memes/brace.jpg
126
+ - memes/bravebear.jpg
127
+ - memes/bsm.jpg
128
+ - memes/bush.jpg
129
+ - memes/butthurt.jpg
130
+ - memes/bwolf.jpg
131
+ - memes/cash.jpg
132
+ - memes/catte.jpg
133
+ - memes/comrade.jpg
134
+ - memes/costanza.jpg
135
+ - memes/cpthind.jpg
136
+ - memes/dank.jpg
137
+ - memes/doge.jpg
138
+ - memes/everywhere.jpg
139
+ - memes/fedora.jpg
140
+ - memes/feels.jpg
141
+ - memes/fem.jpg
142
+ - memes/fry.jpg
143
+ - memes/fwp.jpg
144
+ - memes/gator.jpg
145
+ - memes/gears.jpg
146
+ - memes/ggg.jpg
147
+ - memes/goat.jpg
148
+ - memes/god.jpg
149
+ - memes/grandma.jpg
150
+ - memes/grumpycat.jpg
151
+ - memes/hartmann.jpg
152
+ - memes/hitler.jpg
153
+ - memes/hogscalder.jpg
154
+ - memes/impossibru.jpg
155
+ - memes/interesting.jpg
156
+ - memes/iwolf.jpg
157
+ - memes/jducreux.jpg
158
+ - memes/jimmies.jpg
159
+ - memes/jobs.jpg
160
+ - memes/johnny.jpg
161
+ - memes/keanu.jpg
162
+ - memes/limes.jpg
163
+ - memes/maymay.jpg
164
+ - memes/mayonnaise.jpg
165
+ - memes/menswarehouse.jpg
166
+ - memes/money.jpg
167
+ - memes/mordor.jpg
168
+ - memes/morpheus.jpg
169
+ - memes/neckbear.jpg
170
+ - memes/oag.jpg
171
+ - memes/obama.jpg
172
+ - memes/ogre.jpg
173
+ - memes/onlyone.jpg
174
+ - memes/philo.jpg
175
+ - memes/picard.jpg
176
+ - memes/picard2.jpg
177
+ - memes/rent.jpg
178
+ - memes/s3kid.jpg
179
+ - memes/santa.jpg
180
+ - memes/sap.jpg
181
+ - memes/seal.jpg
182
+ - memes/sexyfry.jpg
183
+ - memes/sfr.jpg
184
+ - memes/shotweb.jpg
185
+ - memes/shrek.jpg
186
+ - memes/skid.jpg
187
+ - memes/skid2.jpg
188
+ - memes/smg.jpg
189
+ - memes/smugbob.jpg
190
+ - memes/spoderman.jpg
191
+ - memes/steve.jpg
192
+ - memes/ugly.jpg
193
+ - memes/unclesam.jpg
194
+ - memes/wonka.jpg
195
+ - memes/yee.jpg
196
+ - memes/yuno.jpg
197
+ - open
198
+ homepage: http://github.com/paradox460/lememe
199
+ licenses:
200
+ - MIT
201
+ metadata: {}
202
+ post_install_message:
203
+ rdoc_options: []
204
+ require_paths:
205
+ - lib
206
+ required_ruby_version: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ required_rubygems_version: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ requirements: []
217
+ rubyforge_project:
218
+ rubygems_version: 2.4.5
219
+ signing_key:
220
+ specification_version: 4
221
+ summary: Dank memes, in gem form
222
+ test_files: []
223
+ has_rdoc: