Sha256: bb40ea72aaea7348ddc23e86941092e348faa396159679b2e74bb138e21237ef

Contents?: true

Size: 1.02 KB

Versions: 6

Compression:

Stored size: 1.02 KB

Contents

require 'optparse'
require 'epub/parser'

options = {:format => :line}
opt = OptionParser.new do |opt|
  opt.banner = <<EOB
Show metadata of an EPUB file

Usage: epubinfo [options] EPUBFILE

EOB
  opt.version = EPUB::Parser::VERSION
  opt.on '-f', '--format=FORMAT', [:line, :json, :yaml], 'format of output(line, json or yaml), defaults to line(for console)' do |format|
    options[:format] = format
  end
end
opt.parse!(ARGV)

file = ARGV.shift
unless file
  $stdout.puts "error: you must supply an EPUB file name"
  $stdout.puts opt.help
  abort
end

book = EPUB::Parser.parse file
data = {'Title' => [book.title]}
data.merge!(book.package.metadata.to_hash)
data['Unique identifier'] = [book.package.metadata.unique_identifier]
data['EPUB Version'] = [book.package.version]
if options[:format] == :line
  key_width = data.keys.map {|k| k.length}.max + 3
  data.each_pair do |k, v|
    puts (k.to_s.capitalize + ':').ljust(key_width) + v.join(', ')
  end
else
  require options[:format].to_s
  puts data.__send__("to_#{options[:format]}")
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
epub-parser-0.1.0 bin/epubinfo
epub-parser-0.0.9.4 bin/epubinfo
epub-parser-0.0.9.3 bin/epubinfo
epub-parser-0.0.9.2 bin/epubinfo
epub-parser-0.0.9.1 bin/epubinfo
epub-parser-0.0.9 bin/epubinfo