• Bug fix for EPUB::CFI::Location#<=>
  • Change default physical container adapter from EPUB::OCF::PhysicalContainer::ZipRuby to EPUB::OCF::PhysicalContainer::ArchiveZip
  • Add EPUB::CFI::Step#element? and #character_data?
  • Change attribute name: EPUB::CFI::Step#step -> EPUB::CFI::Step#value, EPUB::CFI::CharacterOffset#offset -> EPUB::CFI::CharacterOffset#value
  • Show modified on epubinfo command


  • Change the name of physical container adapter for file system: :File -> :UnpackedDirectory
  • Add EPUB::Publication::Package::Manifest::Item#full_path
  • Make #href= acceptable String
  • Implement EPUB::CFI and EPUB::Parser::CFI
  • Remove nokogumbo from dependencies. It ommits head and body elements
  • Remove Cucumber and Cucumber features
  • Add EPUB::Publication::Package::Metadata#modified and EPUB::Book::Features#modified
  • Add EPUB::Book::Features#release_identifier


  • [BUGFIX]Item#entry_name returns normalized IRI


  • Remove deprecated EPUB::Constants::MediaType::UnsupportedError. Use UnsupportedMediatType instead.
  • Make it possible to use archive-zip gem to extract contents from EPUB package via EPUB::OCF::PhysicalContainer::ArchiveZip
  • Add warning about default physical container adapter change
  • Make it possible to extract contents from the web via EPUB::OCF::PhysicalContainer::UnpackedURI. See ExtractContentsFromWeb for details.


  • Introduce abstraction layer for OCF physical container
  • Add EPUB::OCF::PhysicalContainer::File and make it possible to parse file system directory as an EPUB file. See UnpackedArchive for details.
  • Remove EPUB::Parser::OCF::CONTAINER_FILE and other constants


  • Introduce Nokogumbo for XHTML Content Documents
  • Stop support for Ruby 1.9
  • Remove EPUB.included method. Now including EPUB module empowers nothing of EPUB features. Include EPUB::Book::Features instead.
  • Add EPUB::Searcher::XHTML::Seamless and make it default searcher
  • Add EPUB::Publication::Package::Manifest#each_nav
  • Stop to use enumerabler gem


  • Explicity #close each zip member file that has been opened via #fopen(Thanks, xunker!)

  • Don't set encoding when content is not text


  • [Experimental]Add EPUB::Searcher module. See Searcher for details
  • Detect and set character encoding in EPUB::Publication::Package::Item#read


  • Remove EPUB.parse method
  • Remove EPUB::Publication::Package::Metadata#to_hash
  • Add EPUB::Publication::Package::Metadata::Identifier for ad-hoc scheme attribute and #isbn? method
  • Remove MethodDecorators::Deprecated
  • Make EPUB::Parser::OCF::CONTAINER_FILE and other constants deprecated
  • Make EPUB::Publication::Package::Metadata::Link#rel a Set
  • Add exception class EPUB::Constants::MediaType::UnsupportedMediaType
  • Make EPUB::Constants::MediaType::UnsupportedError deprecated. Use UnsupportedMediatType instead
  • Add EPUB::Publication::Package::Item#cover_image?
  • Add EPUB::Book::Features module and move methods of EPUB module to it(Thanks, takahashim!)
  • Make including EPUB deprecated
  • Parse hidden attribute of nav elements
  • [Experimental]Add EPUB::ContentDocument::Navigation::Item#traverse


  • Add ContentDocument::XHTML#title
  • Add Manifest::Item#xhtml?
  • Add --words and --chars options to epubinfo command which count words and charactors of XHTMLs in EPUB file
  • API change: OCF::Container::Rootfile#full_path became Addressable::URI object rather than String. EPUB#rootfile_path still returns String
  • Add ContentDocument::XHTML#rexml which returns document as REXML::Document object
  • Add ContentDocument::XHTML#nokogiri which returns document as Nokogiri::XML::Document object
  • Inspect more readbly


  • Fixed-Layout Documents support
  • Define ContentDocument::XHTML#top_level?
  • Define Spine::Itemref#page_spread and #page_spread=
  • Define some utility methods around Manifest::Item and Spine::Itemref
    • Manifest::Item#itemref
    • Spine::Itemref#item=


  • Add EPUB::Parser::Utils module
  • Add a command-line tool epub-open
  • Add support for XHTML Navigation Document
  • Make EPUB::Publication::Package::Metadata#to_hash obsolete. Use #to_h instead
  • Add utility methods EPUB#description, EPUB#date and EPUB#unique_identifier


  • Fix a bug that Item#read couldn't read file when href is percent-encoded(Thanks, gambhiro!)


  • Parse [email protected] and attach it as Package#prefix
  • Manifest::Item#iri was removed. It have existed for files in unzipped epub books but now EPUB Parser retrieves files from zip archive directly. #href now returns Addressable::URI object.
  • Metadata::Link#iri: ditto.
  • Guide::Reference#iri: ditto.