Sha256: 5a9998e26650c842b80bb680a7a983edf55780a276aba9dd2126a5ff999f9b42

Contents?: true

Size: 1.15 KB

Versions: 10

Compression:

Stored size: 1.15 KB

Contents

require 'enumerabler'

module EPUB
  module Publication
    class Package
      class Guide
        attr_accessor :package

        def references
          @references ||= []
        end

        def <<(reference)
          reference.guide = self
          references << reference
        end

        %w[cover title-page toc index glossary acknowledgements bibliography colophon copyright-page dedication epigraph foreword loi lot notes preface text].each do |type|
          define_method type do
            var = instance_variable_get "@#{type}"
            return var if var

            var = references.selector {|ref| ref.type == type.to_s}.first
            instance_variable_set "@#{type}", var
          end
        end

        class Reference
          attr_accessor :guide,
                        :type, :title, :href,
                        :iri

          def item
            return @item if @item

            len = iri.fragment.nil? ? 1 : iri.fragment.length + 2
            @item = @guide.package.manifest.items.selector do |item|
              item.href == href[0 .. -len]
            end.first
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
epub-parser-0.1.0 lib/epub/publication/package/guide.rb
epub-parser-0.0.9.4 lib/epub/publication/package/guide.rb
epub-parser-0.0.9.3 lib/epub/publication/package/guide.rb
epub-parser-0.0.9.2 lib/epub/publication/package/guide.rb
epub-parser-0.0.9.1 lib/epub/publication/package/guide.rb
epub-parser-0.0.9 lib/epub/publication/package/guide.rb
epub-parser-0.0.8 lib/epub/publication/package/guide.rb
epub-parser-0.0.7 lib/epub/publication/package/guide.rb
epub-parser-0.0.6.1 lib/epub/publication/package/guide.rb
epub-parser-0.0.6 lib/epub/publication/package/guide.rb