= CHANGELOG == 0.4.8 * Add Rubyzip adapter == 0.4.7 * [BUG FIX]Fix a bug that epubinfo doesn't handle navigation properly == 0.4.6 * [BUG FIX]Prevent epubinfo tool raise exception when no nav elements * Tiny modifcation on Zip archive manipulation * Remove version specification from Nokogiri to migrate to Ruby 3.1 == 0.4.5 * [BUG FIX]Handle the case EPUB path is a Pathname == 0.4.4 * [BUG FIX]Fix navigation type check bug * Add feature to show navigations to `epubinfo` command-line tool == 0.4.3 * Encode file name passed from file system on Unix == 0.4.2 * [BUG FIX]Fix a bug that epub-cover refers out of scope variable * [BUG FIX]Fix a bug that `epubinfo` command with `--words` or `--chars` option causes load error if there is not Nokogiri in environment * [BUG FIX]Fix a bug that REXML::Element#content ignores descendant nodes == 0.4.1 * Add Oga backend for XML document == 0.4.0 * [REFACTORING]Make submodules for `XMLDocument::Refinements` * [BUG FIX]Make epub:type a Set == 0.3.9 * [BUG FIX]Set {EPUB::Metadata::DCMES#lang} properly from xml:lang attribute * Change default XML backend from REXML to Nokogiri == 0.3.8 * [REFACTORING]Add {EPUB::Parser::NokogiriAttributeWithPrefix} and use `Nokogiri::XML::Node#attribute_with_prefix` instead of `EPUB::Parser::Utils#extract_attribute` * Set default value for detect_encoding argument for {EPUB::Publication::Package::Manifest::Item#read} to false * Make XML library switchable between REXML and Nokogiri * Make REXML a default XML backend == 0.3.7 * Strip leading and trailing white spaces from identifiers. See http://www.idpf.org/epub/31/spec/epub-packages.html#sec-opf-dcidentifier for details. * Change home page and documentation from rubydoc.info to GitLab Pages * Parse `package/metadata/meta@name` and `@content` to allow EPUB 2 meta info * Add {EPUB::Metadata#cover_image Metadata#cover_image} * Make {EPUB::Book::Features#cover_image Book::Features#cover_image} return EPUB 2 cover image if EPUB 3's not available * Add `epub-cover` command-line tool. See {file:docs/EpubCover.adoc} for details. == 0.3.6 * [BUG FIX]Ignore fragment when find item by relative IRI * Enable https://github.com/ko1/pretty_backtrace[PrettyBacktrace] only when specified by env var for testing performance == 0.3.5 * [BUG FIX]Fix a bug that {EPUB::ContentDocument::Navigation::Item#item} is `nil` when `href` includes double dots(`..`)(Thanks https://gitlab.com/aelkiss[aelkiss]!) == 0.3.4 * Add {EPUB::Publication::Package#full_path} and {EPUB::Publication::Package#rootfile} * [BUG FIX]Fix a bug that {EPUB::ContentDocument::Navigation::Item#item} doesn't return correct {EPUB::Publication::Package::Manifest::Item Item}(Thanks https://gitlab.com/aelkiss[aelkiss]!) == 0.3.3 * [BUG FIX]Use UnpackedURI adapter for URI * [BREAKING CHANGE]Remove deprecated second argument from `EPUB::Parser::Publication#initialize` * Add `detect_encoding` keyword argument to `Publication::Package::Manifest::Item#read` and `ContentDocument::XHTML#read` == 0.3.2 * Use epub-cfi gem for EPUB CFI == 0.3.1 * Load epub/parser.rb in epub/parser/cfi.rb to allow to use Parser::CFI independently * Make `CFI` comparable. Now can call `CFI#==` * Include `Publication::Package::Spine::Itemref` in `Searcher.search_element`'s result == 0.3.0 * Wrong release. I'm sorry. == 0.2.9 * Fix a bug that `Searcher.search_element` returns wrong CFI * Add `Searcher.search_by_cfi` == 0.2.8 * Change Searcher API: #search -> #search_text * Add Searcher.search_element == 0.2.7 * Add `EPUB::Metadata#children` to keep all child emements to count them on CFI search * Allow class including `EPUB` to intialize with extra arguments(Thanks, https://github.com/skukx[skukx]!) == 0.2.6 * Add `EPUB::Publication::Package::Metadata#package_identifier` as alias of `#release_identifier`, which is defined in EPUB Publication 3.0 spec * [BUG FIX]Metadata#modified returns modified with no refiners * Make second argument for `EPUB::Parser::Publication.new` deprecated * Add META-INF/metadata.xml support defined in [EPUB Multiple-Rendition Publications 1.0][multi-rendition] * Add `EPUB::Book::Features#packages` and `#default_rendition` * [BUG FIX]Don't raise error when using `Zipruby` container adapter [multi-rendition]: http://www.idpf.org/epub/renditions/multiple/ == 0.2.5 * [BUG FIX]Don't load Zip/Ruby if unneccessary * Raise error when PhysicalContainer::ArchiveZip fails find entry * Remove unused files in schemas directory * Add `EPUB::CFI::PhysicalContainer.find_adapter` == 0.2.4 * 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 == 0.2.3 * 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 https://github.com/rubys/nokogumbo/[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` == 0.2.2 * [BUGFIX]Item#entry_name returns normalized IRI == 0.2.1 * Remove deprecated `EPUB::Constants::MediaType::UnsupportedError`. Use `UnsupportedMediatType` instead. * Make it possible to use https://github.com/javanthropus/archive-zip[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 {file:ExtractContentsFromWeb.markdown} for details. == 0.2.0 * 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 {file:docs/UnpackedArchive.markdown} for details. * Remove `EPUB::Parser::OCF::CONTAINER_FILE` and other constants == 0.1.9 * Introduce https://github.com/rubys/nokogumbo/[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 == 0.1.8 * Explicity #close each zip member file that has been opened via #fopen(Thanks, https://github.com/xunker[xunker]!) == 0.1.7.1 * Don't set encoding when content is not text == 0.1.7 * [Experimental]Add `EPUB::Searcher` module. See {file:Searcher.markdown} for details * Detect and set character encoding in `EPUB::Publication::Package::Item#read` == 0.1.6 * 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, https://github.com/takahashim[takahashim]!) * Make including `EPUB` deprecated * Parse `hidden` attribute of `nav` elements * [Experimental]Add `EPUB::ContentDocument::Navigation::Item#traverse` == 0.1.5 * 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 == 0.1.4 * http://www.idpf.org/epub/fxl/[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=` == 0.1.3 * 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` == 0.1.2 * Fix a bug that `Item#read` couldn't read file when `href` is percent-encoded(Thanks, https://github.com/gambhiro[gambhiro]!) == 0.1.1 * Parse package@prefix 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.