epuber 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +46 -0
- data/bin/epuber +10 -0
- data/epuber.gemspec +51 -0
- data/lib/epuber.rb +14 -0
- data/lib/epuber/book.rb +267 -0
- data/lib/epuber/book/contributor.rb +90 -0
- data/lib/epuber/book/file_request.rb +68 -0
- data/lib/epuber/book/target.rb +284 -0
- data/lib/epuber/book/toc_item.rb +130 -0
- data/lib/epuber/checker.rb +19 -0
- data/lib/epuber/checker/text_checker.rb +129 -0
- data/lib/epuber/checker_transformer_base.rb +71 -0
- data/lib/epuber/command.rb +65 -0
- data/lib/epuber/command/compile.rb +142 -0
- data/lib/epuber/command/init.rb +145 -0
- data/lib/epuber/command/server.rb +59 -0
- data/lib/epuber/compiler.rb +255 -0
- data/lib/epuber/compiler/compilation_context.rb +86 -0
- data/lib/epuber/compiler/file_finders/abstract.rb +270 -0
- data/lib/epuber/compiler/file_finders/imaginary.rb +167 -0
- data/lib/epuber/compiler/file_finders/normal.rb +22 -0
- data/lib/epuber/compiler/file_resolver.rb +316 -0
- data/lib/epuber/compiler/file_types/abstract_file.rb +119 -0
- data/lib/epuber/compiler/file_types/bade_file.rb +39 -0
- data/lib/epuber/compiler/file_types/container_xml_file.rb +26 -0
- data/lib/epuber/compiler/file_types/generated_file.rb +29 -0
- data/lib/epuber/compiler/file_types/ibooks_display_options_file.rb +31 -0
- data/lib/epuber/compiler/file_types/image_file.rb +42 -0
- data/lib/epuber/compiler/file_types/mime_type_file.rb +20 -0
- data/lib/epuber/compiler/file_types/nav_file.rb +42 -0
- data/lib/epuber/compiler/file_types/opf_file.rb +27 -0
- data/lib/epuber/compiler/file_types/source_file.rb +52 -0
- data/lib/epuber/compiler/file_types/static_file.rb +18 -0
- data/lib/epuber/compiler/file_types/stylus_file.rb +20 -0
- data/lib/epuber/compiler/file_types/xhtml_file.rb +102 -0
- data/lib/epuber/compiler/generator.rb +67 -0
- data/lib/epuber/compiler/meta_inf_generator.rb +41 -0
- data/lib/epuber/compiler/nav_generator.rb +201 -0
- data/lib/epuber/compiler/opf_generator.rb +284 -0
- data/lib/epuber/compiler/xhtml_processor.rb +254 -0
- data/lib/epuber/config.rb +133 -0
- data/lib/epuber/dsl/attribute.rb +248 -0
- data/lib/epuber/dsl/attribute_support.rb +130 -0
- data/lib/epuber/dsl/object.rb +145 -0
- data/lib/epuber/dsl/tree_object.rb +101 -0
- data/lib/epuber/helper.rb +19 -0
- data/lib/epuber/lockfile.rb +55 -0
- data/lib/epuber/plugin.rb +108 -0
- data/lib/epuber/ruby_extensions/match_data.rb +40 -0
- data/lib/epuber/ruby_extensions/thread.rb +13 -0
- data/lib/epuber/server.rb +614 -0
- data/lib/epuber/server/auto_refresh/auto_refresh.coffee +97 -0
- data/lib/epuber/server/auto_refresh/connector.coffee +125 -0
- data/lib/epuber/server/auto_refresh/protocol.coffee +41 -0
- data/lib/epuber/server/auto_refresh/reloader.coffee +261 -0
- data/lib/epuber/server/base.styl +3 -0
- data/lib/epuber/server/basic.styl +211 -0
- data/lib/epuber/server/book_content.styl +39 -0
- data/lib/epuber/server/default_cover.png +0 -0
- data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Bold.ttf +0 -0
- data/lib/epuber/server/fonts/AvenirNext/AvenirNext-BoldItalic.ttf +0 -0
- data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Italic.ttf +0 -0
- data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Regular.ttf +0 -0
- data/lib/epuber/server/handlers.rb +67 -0
- data/lib/epuber/server/keyboard_control.coffee +6 -0
- data/lib/epuber/server/pages/book.bade +75 -0
- data/lib/epuber/server/pages/common.bade +59 -0
- data/lib/epuber/server/pages/files.bade +17 -0
- data/lib/epuber/server/pages/toc.bade +29 -0
- data/lib/epuber/server/support.coffee +10 -0
- data/lib/epuber/templates/template.bookspec +143 -0
- data/lib/epuber/third_party/bower.rb +22 -0
- data/lib/epuber/third_party/bower/bower.json +10 -0
- data/lib/epuber/third_party/bower/bower_components/cookies-js/bower.json +10 -0
- data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.d.ts +33 -0
- data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.js +173 -0
- data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.min.js +6 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/MIT-LICENSE.txt +21 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/bower.json +28 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.js +9210 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.map +1 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax.js +786 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/jsonp.js +89 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/load.js +75 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseJSON.js +13 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseXML.js +28 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/script.js +64 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/nonce.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/rquery.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/xhr.js +136 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes.js +11 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/attr.js +141 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/classes.js +158 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/prop.js +94 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/support.js +35 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/val.js +161 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/callbacks.js +205 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core.js +502 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/access.js +60 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/init.js +123 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/parseHTML.js +39 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/ready.js +97 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css.js +450 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/addGetHookIf.js +22 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/curCSS.js +57 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/defaultDisplay.js +70 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/support.js +96 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/swap.js +28 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/cssExpand.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/getStyles.js +12 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/isHidden.js +13 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rmargin.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data.js +178 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/Data.js +181 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/accepts.js +20 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/data_priv.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/data_user.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/deferred.js +149 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/deprecated.js +13 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/dimensions.js +50 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects.js +648 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/Tween.js +114 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/animatedSelector.js +13 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event.js +868 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/ajax.js +13 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/alias.js +39 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/event/support.js +9 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/amd.js +24 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/global.js +32 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/intro.js +44 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/jquery.js +37 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation.js +580 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/support.js +32 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/offset.js +207 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/outro.js +1 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/queue.js +142 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/queue/delay.js +22 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-native.js +172 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-sizzle.js +14 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/selector.js +1 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/serialize.js +111 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.js +2067 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing.js +199 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/findFilter.js +100 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/arr.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/class2type.js +4 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/concat.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/hasOwn.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/indexOf.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/pnum.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/push.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/rnotwhite.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/slice.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/strundefined.js +3 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/support.js +4 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/var/toString.js +5 -0
- data/lib/epuber/third_party/bower/bower_components/jquery/src/wrap.js +79 -0
- data/lib/epuber/third_party/bower/bower_components/keymaster/MIT-LICENSE +20 -0
- data/lib/epuber/third_party/bower/bower_components/keymaster/Makefile +4 -0
- data/lib/epuber/third_party/bower/bower_components/keymaster/README.markdown +212 -0
- data/lib/epuber/third_party/bower/bower_components/keymaster/bower.json +27 -0
- data/lib/epuber/third_party/bower/bower_components/keymaster/keymaster.js +296 -0
- data/lib/epuber/third_party/bower/bower_components/keymaster/package.json +11 -0
- data/lib/epuber/third_party/bower/bower_components/keymaster/test.html +93 -0
- data/lib/epuber/third_party/bower/bower_components/spin.js/LICENSE.txt +21 -0
- data/lib/epuber/third_party/bower/bower_components/spin.js/README.md +21 -0
- data/lib/epuber/third_party/bower/bower_components/spin.js/bower.json +18 -0
- data/lib/epuber/third_party/bower/bower_components/spin.js/jquery.spin.js +80 -0
- data/lib/epuber/third_party/bower/bower_components/spin.js/spin.js +337 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/LICENSE.txt +21 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/README.md +534 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/bower.json +16 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/contributing.md +19 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/IPv6.js +188 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/SecondLevelDomains.js +241 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentQuery.js +104 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentURI.js +97 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.js +2115 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.min.js +86 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/URITemplate.js +499 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.js +235 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.min.js +7 -0
- data/lib/epuber/third_party/bower/bower_components/uri.js/src/punycode.js +508 -0
- data/lib/epuber/transformer.rb +19 -0
- data/lib/epuber/transformer/text_transformer.rb +60 -0
- data/lib/epuber/user_interface.rb +186 -0
- data/lib/epuber/vendor/globals_context.rb +26 -0
- data/lib/epuber/vendor/hash_binding.rb +26 -0
- data/lib/epuber/vendor/nokogiri_extensions.rb +30 -0
- data/lib/epuber/vendor/ruby_templater.rb +71 -0
- data/lib/epuber/vendor/size.rb +20 -0
- data/lib/epuber/vendor/version.rb +83 -0
- data/lib/epuber/version.rb +4 -0
- metadata +556 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
import "common"
|
3
|
+
|
4
|
+
+page(title: 'Files', header_id: 'files')
|
5
|
+
#content.toc_content
|
6
|
+
- file_resolver.manifest_files.each do |file|
|
7
|
+
p.file
|
8
|
+
- href = "/files/#{file.pkg_destination_path}"
|
9
|
+
- unless file.try(:file_request).nil?
|
10
|
+
a.source_pattern(href: href)= file.file_request.source_pattern
|
11
|
+
= ' '
|
12
|
+
span.arrow =>
|
13
|
+
= ' '
|
14
|
+
- end
|
15
|
+
|
16
|
+
a.source_path(href: href)= file.pkg_destination_path
|
17
|
+
- end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
import "common"
|
3
|
+
|
4
|
+
mixin iterate_toc(toc_item)
|
5
|
+
- if toc_item.sub_items.count > 0
|
6
|
+
ul.spine
|
7
|
+
- toc_item.sub_items.each do |item|
|
8
|
+
- unless item.title.nil?
|
9
|
+
li
|
10
|
+
- item_href = "/book/#{pretty_path_toc_item(item)}"
|
11
|
+
- unless item.title.nil?
|
12
|
+
span.title: a.title(href: item_href)= item.title
|
13
|
+
- end
|
14
|
+
- unless item.options.empty?
|
15
|
+
= ' '
|
16
|
+
- end
|
17
|
+
- item.options.each do |opt|
|
18
|
+
- next if opt.nil?
|
19
|
+
= ' '
|
20
|
+
span.option= opt.inspect
|
21
|
+
- end
|
22
|
+
+iterate_toc(item)
|
23
|
+
- end
|
24
|
+
- end
|
25
|
+
- end
|
26
|
+
|
27
|
+
+page(title: 'TOC', header_id: 'toc')
|
28
|
+
#content.toc_content
|
29
|
+
+iterate_toc(target.root_toc)
|
@@ -0,0 +1,143 @@
|
|
1
|
+
# This is template for .bookspec
|
2
|
+
|
3
|
+
Epuber::Book.new do |book|
|
4
|
+
|
5
|
+
# Name of the book, REQUIRED
|
6
|
+
#
|
7
|
+
book.title = ''
|
8
|
+
|
9
|
+
# Subtitle of book, OPTIONAL
|
10
|
+
#
|
11
|
+
# book.subtitle = ''
|
12
|
+
|
13
|
+
# List of authors, REQUIRED
|
14
|
+
#
|
15
|
+
# Can be composed from hash or simple string
|
16
|
+
#
|
17
|
+
# Examples:
|
18
|
+
# book.authors = [
|
19
|
+
# 'Jason Fried' #=> 'Jason' is first name and 'Fried' is last name
|
20
|
+
# 'David Heinemeier Hansson' #=> 'David' is first name and 'Heinemeier Hansson' as last name
|
21
|
+
# (if there is more names only the first is taken as first, others are last name)
|
22
|
+
# ]
|
23
|
+
# book.author = 'Jason Fried' # if there is only one author, you can write like this
|
24
|
+
#
|
25
|
+
# book.authors = []
|
26
|
+
|
27
|
+
# Language of the book, OPTIONAL
|
28
|
+
#
|
29
|
+
# book.language = 'cs'
|
30
|
+
|
31
|
+
# Book ISBN, REQUIRED
|
32
|
+
# Is used as identifier
|
33
|
+
#
|
34
|
+
book.isbn = 'XXX-XX-XXXXX-XX-X'
|
35
|
+
|
36
|
+
# ISBN of printed version, OPTIONAL
|
37
|
+
#
|
38
|
+
# Will be used for generating metadata for iBooks
|
39
|
+
#
|
40
|
+
# book.print_isbn = '978-80-87270-98-0'
|
41
|
+
|
42
|
+
# Published date, OPTIONAL
|
43
|
+
#
|
44
|
+
# You can also use Ruby Date class (see examples here: http://www.ruby-doc.org/stdlib-2.1.1/libdoc/date/rdoc/Date.html)
|
45
|
+
#
|
46
|
+
# book.published = '2014-06-10'
|
47
|
+
|
48
|
+
# Publisher name, OPTIONAL
|
49
|
+
#
|
50
|
+
# book.publisher = 'Epuber Inc.'
|
51
|
+
|
52
|
+
# Version of book, REQUIRED for iBooks and epub 3.O
|
53
|
+
#
|
54
|
+
# This is used only for iBooks version
|
55
|
+
#
|
56
|
+
book.version = '0.0.1'
|
57
|
+
|
58
|
+
# Build version, RECOMMENDED
|
59
|
+
#
|
60
|
+
# Is used in result epub file name, see book#output_base_name
|
61
|
+
#
|
62
|
+
book.build_version = '1'
|
63
|
+
|
64
|
+
# Result epub file name, OPTIONAL
|
65
|
+
#
|
66
|
+
# Result epub file name is composed from: \#{book.output_base_name || basename(book.file_path)}\#{book.build_version}-\#{target.name}
|
67
|
+
#
|
68
|
+
# book.output_base_name = 'book'
|
69
|
+
|
70
|
+
# Flag for iBooks, OPTIONAL
|
71
|
+
#
|
72
|
+
# This tell iBooks to use your fonts instead of system fonts only
|
73
|
+
#
|
74
|
+
# book.custom_fonts = true
|
75
|
+
|
76
|
+
# Flag for iBooks and other epub3 readers, OPTIONAL
|
77
|
+
#
|
78
|
+
# Book has fixed layout
|
79
|
+
#
|
80
|
+
# book.fixed_layout = true
|
81
|
+
|
82
|
+
|
83
|
+
# Path to cover image, OPTIONAL
|
84
|
+
#
|
85
|
+
# The path don't have to be full, the file will be found with string used as pattern
|
86
|
+
#
|
87
|
+
# book.cover_image = 'cover'
|
88
|
+
|
89
|
+
# If you want to create more then one epub, with specific version of epub and more custom info, OPTIONAL
|
90
|
+
#
|
91
|
+
# book.target :ibooks do |ibooks|
|
92
|
+
# ibooks.epub_version = 3.0
|
93
|
+
# end
|
94
|
+
|
95
|
+
# List of targets is unlimited, so lets create another one
|
96
|
+
#
|
97
|
+
# book.target :wooky do |wooky|
|
98
|
+
# wooky.epub_version = 2.0
|
99
|
+
#
|
100
|
+
# # you can also change isbn for specific target
|
101
|
+
# wooky.isbn = '978-80-87270-98-3'
|
102
|
+
#
|
103
|
+
# # add constant to target, will be available in text files with CONST['key'] or with TARGET.constants['key']
|
104
|
+
# wooky.add_const 'key', 'value'
|
105
|
+
# end
|
106
|
+
|
107
|
+
# Add some files, for example css styles
|
108
|
+
book.add_default_style 'styles/#{book_id}.styl'
|
109
|
+
|
110
|
+
# Add other files like images, fonts
|
111
|
+
book.add_files '*.{otf,ttf}'
|
112
|
+
|
113
|
+
|
114
|
+
# Definition of TOC, with some informations like landmarks, linearity
|
115
|
+
#
|
116
|
+
book.toc do |toc, target|
|
117
|
+
# add file with name: cover (searching is same as cover image), with landmarks cover and start page
|
118
|
+
#
|
119
|
+
# toc.file 'cover', :landmark_cover, :landmark_start_page
|
120
|
+
# toc.file 'vakat'
|
121
|
+
|
122
|
+
# toc.file 'copyright', :landmark_copyright
|
123
|
+
|
124
|
+
# toc.file 'toc', :landmark_toc if target.name != :ibooks
|
125
|
+
|
126
|
+
# you can also nest the structure and specify title
|
127
|
+
#
|
128
|
+
# toc.file 's01', 'Section 1' do |sub|
|
129
|
+
# sub.file 's01ch01', 'Chapter 1'
|
130
|
+
# sub.file 's01ch02', 'Chapter 2'
|
131
|
+
# sub.file 's01ch03', 'Chapter 3'
|
132
|
+
# end
|
133
|
+
|
134
|
+
# toc.file 'appendix'
|
135
|
+
|
136
|
+
# to create file which is not linear to rest of book
|
137
|
+
#
|
138
|
+
# toc.file 'footnotes', linear: false
|
139
|
+
end
|
140
|
+
|
141
|
+
# load file simple_checkers.rb as plugin
|
142
|
+
# book.use 'simple_checkers.rb'
|
143
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Epuber
|
2
|
+
module ThirdParty
|
3
|
+
class Bower
|
4
|
+
class << self
|
5
|
+
JS_COMPONENTS = {
|
6
|
+
jquery: 'jquery/dist/',
|
7
|
+
cookies: 'cookies-js/dist/',
|
8
|
+
uri: 'uri.js/src/',
|
9
|
+
spin: 'spin.js/',
|
10
|
+
keymaster: 'keymaster/',
|
11
|
+
}
|
12
|
+
|
13
|
+
def path_to_js(component)
|
14
|
+
path = JS_COMPONENTS[component]
|
15
|
+
raise "Not found component #{component}" if path.nil?
|
16
|
+
|
17
|
+
File.expand_path("bower/bower_components/#{path}", File.dirname(__FILE__))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/*
|
2
|
+
* Cookies.js TypeScript Declaration File
|
3
|
+
* https://github.com/ScottHamper/Cookies
|
4
|
+
*
|
5
|
+
* This is free and unencumbered software released into the public domain.
|
6
|
+
*/
|
7
|
+
interface CookieOptions {
|
8
|
+
path?: string;
|
9
|
+
domain?: string;
|
10
|
+
expires?: any;
|
11
|
+
secure?: boolean;
|
12
|
+
}
|
13
|
+
|
14
|
+
interface CookiesStatic {
|
15
|
+
(key:string, value?:any, options?:CookieOptions): any;
|
16
|
+
|
17
|
+
get(key:string): string;
|
18
|
+
set(key:string, value:any, options?:CookieOptions): CookiesStatic;
|
19
|
+
expire(key:string, options?:CookieOptions): CookiesStatic;
|
20
|
+
|
21
|
+
defaults: CookieOptions;
|
22
|
+
enabled: boolean;
|
23
|
+
}
|
24
|
+
|
25
|
+
declare var Cookies:CookiesStatic;
|
26
|
+
|
27
|
+
declare module "cookies" {
|
28
|
+
export = Cookies;
|
29
|
+
}
|
30
|
+
|
31
|
+
declare module "cookies-js" {
|
32
|
+
export = Cookies;
|
33
|
+
}
|
@@ -0,0 +1,173 @@
|
|
1
|
+
/*
|
2
|
+
* Cookies.js - 1.2.2
|
3
|
+
* https://github.com/ScottHamper/Cookies
|
4
|
+
*
|
5
|
+
* This is free and unencumbered software released into the public domain.
|
6
|
+
*/
|
7
|
+
(function (global, undefined) {
|
8
|
+
'use strict';
|
9
|
+
|
10
|
+
var factory = function (window) {
|
11
|
+
if (typeof window.document !== 'object') {
|
12
|
+
throw new Error('Cookies.js requires a `window` with a `document` object');
|
13
|
+
}
|
14
|
+
|
15
|
+
var Cookies = function (key, value, options) {
|
16
|
+
return arguments.length === 1 ?
|
17
|
+
Cookies.get(key) : Cookies.set(key, value, options);
|
18
|
+
};
|
19
|
+
|
20
|
+
// Allows for setter injection in unit tests
|
21
|
+
Cookies._document = window.document;
|
22
|
+
|
23
|
+
// Used to ensure cookie keys do not collide with
|
24
|
+
// built-in `Object` properties
|
25
|
+
Cookies._cacheKeyPrefix = 'cookey.'; // Hurr hurr, :)
|
26
|
+
|
27
|
+
Cookies._maxExpireDate = new Date('Fri, 31 Dec 9999 23:59:59 UTC');
|
28
|
+
|
29
|
+
Cookies.defaults = {
|
30
|
+
path: '/',
|
31
|
+
secure: false
|
32
|
+
};
|
33
|
+
|
34
|
+
Cookies.get = function (key) {
|
35
|
+
if (Cookies._cachedDocumentCookie !== Cookies._document.cookie) {
|
36
|
+
Cookies._renewCache();
|
37
|
+
}
|
38
|
+
|
39
|
+
var value = Cookies._cache[Cookies._cacheKeyPrefix + key];
|
40
|
+
|
41
|
+
return value === undefined ? undefined : decodeURIComponent(value);
|
42
|
+
};
|
43
|
+
|
44
|
+
Cookies.set = function (key, value, options) {
|
45
|
+
options = Cookies._getExtendedOptions(options);
|
46
|
+
options.expires = Cookies._getExpiresDate(value === undefined ? -1 : options.expires);
|
47
|
+
|
48
|
+
Cookies._document.cookie = Cookies._generateCookieString(key, value, options);
|
49
|
+
|
50
|
+
return Cookies;
|
51
|
+
};
|
52
|
+
|
53
|
+
Cookies.expire = function (key, options) {
|
54
|
+
return Cookies.set(key, undefined, options);
|
55
|
+
};
|
56
|
+
|
57
|
+
Cookies._getExtendedOptions = function (options) {
|
58
|
+
return {
|
59
|
+
path: options && options.path || Cookies.defaults.path,
|
60
|
+
domain: options && options.domain || Cookies.defaults.domain,
|
61
|
+
expires: options && options.expires || Cookies.defaults.expires,
|
62
|
+
secure: options && options.secure !== undefined ? options.secure : Cookies.defaults.secure
|
63
|
+
};
|
64
|
+
};
|
65
|
+
|
66
|
+
Cookies._isValidDate = function (date) {
|
67
|
+
return Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());
|
68
|
+
};
|
69
|
+
|
70
|
+
Cookies._getExpiresDate = function (expires, now) {
|
71
|
+
now = now || new Date();
|
72
|
+
|
73
|
+
if (typeof expires === 'number') {
|
74
|
+
expires = expires === Infinity ?
|
75
|
+
Cookies._maxExpireDate : new Date(now.getTime() + expires * 1000);
|
76
|
+
} else if (typeof expires === 'string') {
|
77
|
+
expires = new Date(expires);
|
78
|
+
}
|
79
|
+
|
80
|
+
if (expires && !Cookies._isValidDate(expires)) {
|
81
|
+
throw new Error('`expires` parameter cannot be converted to a valid Date instance');
|
82
|
+
}
|
83
|
+
|
84
|
+
return expires;
|
85
|
+
};
|
86
|
+
|
87
|
+
Cookies._generateCookieString = function (key, value, options) {
|
88
|
+
key = key.replace(/[^#$&+\^`|]/g, encodeURIComponent);
|
89
|
+
key = key.replace(/\(/g, '%28').replace(/\)/g, '%29');
|
90
|
+
value = (value + '').replace(/[^!#$&-+\--:<-\[\]-~]/g, encodeURIComponent);
|
91
|
+
options = options || {};
|
92
|
+
|
93
|
+
var cookieString = key + '=' + value;
|
94
|
+
cookieString += options.path ? ';path=' + options.path : '';
|
95
|
+
cookieString += options.domain ? ';domain=' + options.domain : '';
|
96
|
+
cookieString += options.expires ? ';expires=' + options.expires.toUTCString() : '';
|
97
|
+
cookieString += options.secure ? ';secure' : '';
|
98
|
+
|
99
|
+
return cookieString;
|
100
|
+
};
|
101
|
+
|
102
|
+
Cookies._getCacheFromString = function (documentCookie) {
|
103
|
+
var cookieCache = {};
|
104
|
+
var cookiesArray = documentCookie ? documentCookie.split('; ') : [];
|
105
|
+
|
106
|
+
for (var i = 0; i < cookiesArray.length; i++) {
|
107
|
+
var cookieKvp = Cookies._getKeyValuePairFromCookieString(cookiesArray[i]);
|
108
|
+
|
109
|
+
if (cookieCache[Cookies._cacheKeyPrefix + cookieKvp.key] === undefined) {
|
110
|
+
cookieCache[Cookies._cacheKeyPrefix + cookieKvp.key] = cookieKvp.value;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
return cookieCache;
|
115
|
+
};
|
116
|
+
|
117
|
+
Cookies._getKeyValuePairFromCookieString = function (cookieString) {
|
118
|
+
// "=" is a valid character in a cookie value according to RFC6265, so cannot `split('=')`
|
119
|
+
var separatorIndex = cookieString.indexOf('=');
|
120
|
+
|
121
|
+
// IE omits the "=" when the cookie value is an empty string
|
122
|
+
separatorIndex = separatorIndex < 0 ? cookieString.length : separatorIndex;
|
123
|
+
|
124
|
+
var key = cookieString.substr(0, separatorIndex);
|
125
|
+
var decodedKey;
|
126
|
+
try {
|
127
|
+
decodedKey = decodeURIComponent(key);
|
128
|
+
} catch (e) {
|
129
|
+
if (console && typeof console.error === 'function') {
|
130
|
+
console.error('Could not decode cookie with key "' + key + '"', e);
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
return {
|
135
|
+
key: decodedKey,
|
136
|
+
value: cookieString.substr(separatorIndex + 1) // Defer decoding value until accessed
|
137
|
+
};
|
138
|
+
};
|
139
|
+
|
140
|
+
Cookies._renewCache = function () {
|
141
|
+
Cookies._cache = Cookies._getCacheFromString(Cookies._document.cookie);
|
142
|
+
Cookies._cachedDocumentCookie = Cookies._document.cookie;
|
143
|
+
};
|
144
|
+
|
145
|
+
Cookies._areEnabled = function () {
|
146
|
+
var testKey = 'cookies.js';
|
147
|
+
var areEnabled = Cookies.set(testKey, 1).get(testKey) === '1';
|
148
|
+
Cookies.expire(testKey);
|
149
|
+
return areEnabled;
|
150
|
+
};
|
151
|
+
|
152
|
+
Cookies.enabled = Cookies._areEnabled();
|
153
|
+
|
154
|
+
return Cookies;
|
155
|
+
};
|
156
|
+
|
157
|
+
var cookiesExport = typeof global.document === 'object' ? factory(global) : factory;
|
158
|
+
|
159
|
+
// AMD support
|
160
|
+
if (typeof define === 'function' && define.amd) {
|
161
|
+
define(function () { return cookiesExport; });
|
162
|
+
// CommonJS/Node.js support
|
163
|
+
} else if (typeof exports === 'object') {
|
164
|
+
// Support Node.js specific `module.exports` (which can be a function)
|
165
|
+
if (typeof module === 'object' && typeof module.exports === 'object') {
|
166
|
+
exports = module.exports = cookiesExport;
|
167
|
+
}
|
168
|
+
// But always support CommonJS module 1.1.1 spec (`exports` cannot be a function)
|
169
|
+
exports.Cookies = cookiesExport;
|
170
|
+
} else {
|
171
|
+
global.Cookies = cookiesExport;
|
172
|
+
}
|
173
|
+
})(typeof window === 'undefined' ? this : window);
|