module Meem

Constants

VERSION

Public Class Methods

parse(arguments) click to toggle source

Parse options.

arguments - An Array of arguments.

Returns options.

# File lib/meem.rb, line 36
def self.parse arguments
  arguments = ["--help"] if arguments.empty?

  options      = OpenStruct.new
  options.meme = arguments.first

  OptionParser.new do |opts|
    opts.program_name = "meem"
    opts.banner = "usage: meem <meme> [options]"
    opts.version = Meem::VERSION

    opts.on "-l", "--list", "List memes" do
      Templates.list.each do |file|
        puts file.basename.to_s[/(.*)\.jpg/, 1]
      end

      exit
    end

    opts.on "-t", "--top TEXT", "Set top text" do |value|
      options.top = value
    end

    opts.on "-b", "--bottom TEXT", "Set bottom text" do |value|
      options.bottom = value
    end
    
    opts.on "-h", "--help", "Show this message" do
      puts opts
      exit
    end

    opts.on "-v", "--version", "Show version" do
      puts Meem::VERSION
      exit
    end
  end.parse! arguments

  options
end
run(arguments) click to toggle source
# File lib/meem.rb, line 10
def self.run arguments
  options = parse arguments

  template = Templates.load options.meme

  if template
    image = generate template, options.top, options.bottom

    if STDOUT.tty?
      path = "/tmp/meme.jpg"

      image.write path
      puts path
    else
      puts image.to_blob
    end
  else
    error "meme not found"
  end
end

Private Class Methods

error(message, code = 1) click to toggle source

Print a message and exit.

message - A String describing the message. code - An Integer describing the error code.

# File lib/meem.rb, line 92
def self.error message, code = 1
  puts "meem: #{message}"
  exit code
end
generate(template, top, bottom) click to toggle source

Generate a meme.

template - A File describing a template. top - A String describing the top caption. bottom - A String describing the bottom caption.

# File lib/meem.rb, line 84
def self.generate template, top, bottom
  MemeCaptain.meme_top_bottom template, top, bottom, font: "#{DIRECTORY}/../fonts/impact.ttf"
end