class EPUBMaker::Content

EPUBMaker::Content represents a content data for EPUBMaker. EPUBMaker#contents takes an array of Content.

Attributes

chaptype[RW]

Chapter type (pre/post/part/nil(body))

file[RW]

File path (will accept #<anchor> suffix also)

id[RW]

ID

level[RW]

Header level (from 1)

media[RW]

MIME type

notoc[RW]

Show in TOC? nil:No.

properties[RW]

Properties (EPUB3)

title[RW]

Title

Public Class Methods

initialize(file, id, media, title, level, notoc) click to toggle source
initialize(hash)
Construct Content object by passing a sequence of parameters or hash.
Keys of +hash+ relate with each parameters.
+file+ (or +hash+["file"]) is required. Others are optional.
# File lib/epubmaker/content.rb, line 39
def initialize(fileorhash, id=nil, media=nil, title=nil, level=nil, notoc=nil, properties=nil, chaptype=nil)
  if fileorhash.instance_of?(Hash)
    @id = fileorhash["id"]
    @file = fileorhash["file"]
    @media = fileorhash["media"]
    @title = fileorhash["title"]
    @level = fileorhash["level"]
    @notoc = fileorhash["notoc"]
    @properties = fileorhash["properties"] || []
    @chaptype = fileorhash["chaptype"]
  else
    @file = fileorhash
    @id = id
    @media = media
    @title = title
    @level = level
    @notoc = notoc
    @properties = properties || []
    @chaptype = chaptype
  end
  complement
end

Public Instance Methods

==(other) click to toggle source
# File lib/epubmaker/content.rb, line 62
def ==(other)
  if self.class != other.class
    return false
  end
  [self.id, self.file, self.media, self.title, self.level, self.notoc, self.chaptype, self.properties] ==
    [other.id, other.file, other.media, other.title, other.level, other.notoc, other.chaptype, other.properties]
end

Private Instance Methods

complement() click to toggle source

Complement other parameters by using file parameter.

# File lib/epubmaker/content.rb, line 73
def complement
  @id = @file.gsub(/[\\/\. ]/, '-') if @id.nil?
  @id = "rv-#{@id}" if @id =~ /\A[^a-z]/
  @media = @file.sub(/.+\./, '').downcase if !@file.nil? && @media.nil?

  @media = "application/xhtml+xml" if @media == "xhtml" || @media == "xml" || @media == "html"
  @media = "text/css" if @media == "css"
  @media = "image/jpeg" if @media == "jpg" || @media == "jpeg" || @media == "image/jpg"
  @media = "image/png" if @media == "png"
  @media = "image/gif" if @media == "gif"
  @media = "image/svg+xml" if @media == "svg" || @media == "image/svg"
  @media = "application/vnd.ms-opentype" if @media == "ttf" || @media == "otf"
  @media = "application/font-woff" if @media == "woff"

  if @id.nil? || @file.nil? || @media.nil?
    raise "Type error: #{id}, #{file}, #{media}, #{title}, #{notoc}"
  end
end