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.
Files changed (206) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +6 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +46 -0
  5. data/bin/epuber +10 -0
  6. data/epuber.gemspec +51 -0
  7. data/lib/epuber.rb +14 -0
  8. data/lib/epuber/book.rb +267 -0
  9. data/lib/epuber/book/contributor.rb +90 -0
  10. data/lib/epuber/book/file_request.rb +68 -0
  11. data/lib/epuber/book/target.rb +284 -0
  12. data/lib/epuber/book/toc_item.rb +130 -0
  13. data/lib/epuber/checker.rb +19 -0
  14. data/lib/epuber/checker/text_checker.rb +129 -0
  15. data/lib/epuber/checker_transformer_base.rb +71 -0
  16. data/lib/epuber/command.rb +65 -0
  17. data/lib/epuber/command/compile.rb +142 -0
  18. data/lib/epuber/command/init.rb +145 -0
  19. data/lib/epuber/command/server.rb +59 -0
  20. data/lib/epuber/compiler.rb +255 -0
  21. data/lib/epuber/compiler/compilation_context.rb +86 -0
  22. data/lib/epuber/compiler/file_finders/abstract.rb +270 -0
  23. data/lib/epuber/compiler/file_finders/imaginary.rb +167 -0
  24. data/lib/epuber/compiler/file_finders/normal.rb +22 -0
  25. data/lib/epuber/compiler/file_resolver.rb +316 -0
  26. data/lib/epuber/compiler/file_types/abstract_file.rb +119 -0
  27. data/lib/epuber/compiler/file_types/bade_file.rb +39 -0
  28. data/lib/epuber/compiler/file_types/container_xml_file.rb +26 -0
  29. data/lib/epuber/compiler/file_types/generated_file.rb +29 -0
  30. data/lib/epuber/compiler/file_types/ibooks_display_options_file.rb +31 -0
  31. data/lib/epuber/compiler/file_types/image_file.rb +42 -0
  32. data/lib/epuber/compiler/file_types/mime_type_file.rb +20 -0
  33. data/lib/epuber/compiler/file_types/nav_file.rb +42 -0
  34. data/lib/epuber/compiler/file_types/opf_file.rb +27 -0
  35. data/lib/epuber/compiler/file_types/source_file.rb +52 -0
  36. data/lib/epuber/compiler/file_types/static_file.rb +18 -0
  37. data/lib/epuber/compiler/file_types/stylus_file.rb +20 -0
  38. data/lib/epuber/compiler/file_types/xhtml_file.rb +102 -0
  39. data/lib/epuber/compiler/generator.rb +67 -0
  40. data/lib/epuber/compiler/meta_inf_generator.rb +41 -0
  41. data/lib/epuber/compiler/nav_generator.rb +201 -0
  42. data/lib/epuber/compiler/opf_generator.rb +284 -0
  43. data/lib/epuber/compiler/xhtml_processor.rb +254 -0
  44. data/lib/epuber/config.rb +133 -0
  45. data/lib/epuber/dsl/attribute.rb +248 -0
  46. data/lib/epuber/dsl/attribute_support.rb +130 -0
  47. data/lib/epuber/dsl/object.rb +145 -0
  48. data/lib/epuber/dsl/tree_object.rb +101 -0
  49. data/lib/epuber/helper.rb +19 -0
  50. data/lib/epuber/lockfile.rb +55 -0
  51. data/lib/epuber/plugin.rb +108 -0
  52. data/lib/epuber/ruby_extensions/match_data.rb +40 -0
  53. data/lib/epuber/ruby_extensions/thread.rb +13 -0
  54. data/lib/epuber/server.rb +614 -0
  55. data/lib/epuber/server/auto_refresh/auto_refresh.coffee +97 -0
  56. data/lib/epuber/server/auto_refresh/connector.coffee +125 -0
  57. data/lib/epuber/server/auto_refresh/protocol.coffee +41 -0
  58. data/lib/epuber/server/auto_refresh/reloader.coffee +261 -0
  59. data/lib/epuber/server/base.styl +3 -0
  60. data/lib/epuber/server/basic.styl +211 -0
  61. data/lib/epuber/server/book_content.styl +39 -0
  62. data/lib/epuber/server/default_cover.png +0 -0
  63. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Bold.ttf +0 -0
  64. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-BoldItalic.ttf +0 -0
  65. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Italic.ttf +0 -0
  66. data/lib/epuber/server/fonts/AvenirNext/AvenirNext-Regular.ttf +0 -0
  67. data/lib/epuber/server/handlers.rb +67 -0
  68. data/lib/epuber/server/keyboard_control.coffee +6 -0
  69. data/lib/epuber/server/pages/book.bade +75 -0
  70. data/lib/epuber/server/pages/common.bade +59 -0
  71. data/lib/epuber/server/pages/files.bade +17 -0
  72. data/lib/epuber/server/pages/toc.bade +29 -0
  73. data/lib/epuber/server/support.coffee +10 -0
  74. data/lib/epuber/templates/template.bookspec +143 -0
  75. data/lib/epuber/third_party/bower.rb +22 -0
  76. data/lib/epuber/third_party/bower/bower.json +10 -0
  77. data/lib/epuber/third_party/bower/bower_components/cookies-js/bower.json +10 -0
  78. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.d.ts +33 -0
  79. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.js +173 -0
  80. data/lib/epuber/third_party/bower/bower_components/cookies-js/dist/cookies.min.js +6 -0
  81. data/lib/epuber/third_party/bower/bower_components/jquery/MIT-LICENSE.txt +21 -0
  82. data/lib/epuber/third_party/bower/bower_components/jquery/bower.json +28 -0
  83. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.js +9210 -0
  84. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.js +5 -0
  85. data/lib/epuber/third_party/bower/bower_components/jquery/dist/jquery.min.map +1 -0
  86. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax.js +786 -0
  87. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/jsonp.js +89 -0
  88. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/load.js +75 -0
  89. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  90. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/parseXML.js +28 -0
  91. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/script.js +64 -0
  92. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  93. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  94. data/lib/epuber/third_party/bower/bower_components/jquery/src/ajax/xhr.js +136 -0
  95. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes.js +11 -0
  96. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/attr.js +141 -0
  97. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/classes.js +158 -0
  98. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/prop.js +94 -0
  99. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/support.js +35 -0
  100. data/lib/epuber/third_party/bower/bower_components/jquery/src/attributes/val.js +161 -0
  101. data/lib/epuber/third_party/bower/bower_components/jquery/src/callbacks.js +205 -0
  102. data/lib/epuber/third_party/bower/bower_components/jquery/src/core.js +502 -0
  103. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/access.js +60 -0
  104. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/init.js +123 -0
  105. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/parseHTML.js +39 -0
  106. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/ready.js +97 -0
  107. data/lib/epuber/third_party/bower/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  108. data/lib/epuber/third_party/bower/bower_components/jquery/src/css.js +450 -0
  109. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/addGetHookIf.js +22 -0
  110. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/curCSS.js +57 -0
  111. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  112. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  113. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/support.js +96 -0
  114. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/swap.js +28 -0
  115. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  116. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/getStyles.js +12 -0
  117. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/isHidden.js +13 -0
  118. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rmargin.js +3 -0
  119. data/lib/epuber/third_party/bower/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  120. data/lib/epuber/third_party/bower/bower_components/jquery/src/data.js +178 -0
  121. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/Data.js +181 -0
  122. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/accepts.js +20 -0
  123. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/data_priv.js +5 -0
  124. data/lib/epuber/third_party/bower/bower_components/jquery/src/data/var/data_user.js +5 -0
  125. data/lib/epuber/third_party/bower/bower_components/jquery/src/deferred.js +149 -0
  126. data/lib/epuber/third_party/bower/bower_components/jquery/src/deprecated.js +13 -0
  127. data/lib/epuber/third_party/bower/bower_components/jquery/src/dimensions.js +50 -0
  128. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects.js +648 -0
  129. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/Tween.js +114 -0
  130. data/lib/epuber/third_party/bower/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  131. data/lib/epuber/third_party/bower/bower_components/jquery/src/event.js +868 -0
  132. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/ajax.js +13 -0
  133. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/alias.js +39 -0
  134. data/lib/epuber/third_party/bower/bower_components/jquery/src/event/support.js +9 -0
  135. data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/amd.js +24 -0
  136. data/lib/epuber/third_party/bower/bower_components/jquery/src/exports/global.js +32 -0
  137. data/lib/epuber/third_party/bower/bower_components/jquery/src/intro.js +44 -0
  138. data/lib/epuber/third_party/bower/bower_components/jquery/src/jquery.js +37 -0
  139. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation.js +580 -0
  140. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  141. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/support.js +32 -0
  142. data/lib/epuber/third_party/bower/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  143. data/lib/epuber/third_party/bower/bower_components/jquery/src/offset.js +207 -0
  144. data/lib/epuber/third_party/bower/bower_components/jquery/src/outro.js +1 -0
  145. data/lib/epuber/third_party/bower/bower_components/jquery/src/queue.js +142 -0
  146. data/lib/epuber/third_party/bower/bower_components/jquery/src/queue/delay.js +22 -0
  147. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-native.js +172 -0
  148. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector-sizzle.js +14 -0
  149. data/lib/epuber/third_party/bower/bower_components/jquery/src/selector.js +1 -0
  150. data/lib/epuber/third_party/bower/bower_components/jquery/src/serialize.js +111 -0
  151. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.js +2067 -0
  152. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  153. data/lib/epuber/third_party/bower/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  154. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing.js +199 -0
  155. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/findFilter.js +100 -0
  156. data/lib/epuber/third_party/bower/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  157. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/arr.js +3 -0
  158. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/class2type.js +4 -0
  159. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/concat.js +5 -0
  160. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/hasOwn.js +5 -0
  161. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/indexOf.js +5 -0
  162. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/pnum.js +3 -0
  163. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/push.js +5 -0
  164. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/rnotwhite.js +3 -0
  165. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/slice.js +5 -0
  166. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/strundefined.js +3 -0
  167. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/support.js +4 -0
  168. data/lib/epuber/third_party/bower/bower_components/jquery/src/var/toString.js +5 -0
  169. data/lib/epuber/third_party/bower/bower_components/jquery/src/wrap.js +79 -0
  170. data/lib/epuber/third_party/bower/bower_components/keymaster/MIT-LICENSE +20 -0
  171. data/lib/epuber/third_party/bower/bower_components/keymaster/Makefile +4 -0
  172. data/lib/epuber/third_party/bower/bower_components/keymaster/README.markdown +212 -0
  173. data/lib/epuber/third_party/bower/bower_components/keymaster/bower.json +27 -0
  174. data/lib/epuber/third_party/bower/bower_components/keymaster/keymaster.js +296 -0
  175. data/lib/epuber/third_party/bower/bower_components/keymaster/package.json +11 -0
  176. data/lib/epuber/third_party/bower/bower_components/keymaster/test.html +93 -0
  177. data/lib/epuber/third_party/bower/bower_components/spin.js/LICENSE.txt +21 -0
  178. data/lib/epuber/third_party/bower/bower_components/spin.js/README.md +21 -0
  179. data/lib/epuber/third_party/bower/bower_components/spin.js/bower.json +18 -0
  180. data/lib/epuber/third_party/bower/bower_components/spin.js/jquery.spin.js +80 -0
  181. data/lib/epuber/third_party/bower/bower_components/spin.js/spin.js +337 -0
  182. data/lib/epuber/third_party/bower/bower_components/uri.js/LICENSE.txt +21 -0
  183. data/lib/epuber/third_party/bower/bower_components/uri.js/README.md +534 -0
  184. data/lib/epuber/third_party/bower/bower_components/uri.js/bower.json +16 -0
  185. data/lib/epuber/third_party/bower/bower_components/uri.js/contributing.md +19 -0
  186. data/lib/epuber/third_party/bower/bower_components/uri.js/src/IPv6.js +188 -0
  187. data/lib/epuber/third_party/bower/bower_components/uri.js/src/SecondLevelDomains.js +241 -0
  188. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentQuery.js +104 -0
  189. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.fragmentURI.js +97 -0
  190. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.js +2115 -0
  191. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URI.min.js +86 -0
  192. data/lib/epuber/third_party/bower/bower_components/uri.js/src/URITemplate.js +499 -0
  193. data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.js +235 -0
  194. data/lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.min.js +7 -0
  195. data/lib/epuber/third_party/bower/bower_components/uri.js/src/punycode.js +508 -0
  196. data/lib/epuber/transformer.rb +19 -0
  197. data/lib/epuber/transformer/text_transformer.rb +60 -0
  198. data/lib/epuber/user_interface.rb +186 -0
  199. data/lib/epuber/vendor/globals_context.rb +26 -0
  200. data/lib/epuber/vendor/hash_binding.rb +26 -0
  201. data/lib/epuber/vendor/nokogiri_extensions.rb +30 -0
  202. data/lib/epuber/vendor/ruby_templater.rb +71 -0
  203. data/lib/epuber/vendor/size.rb +20 -0
  204. data/lib/epuber/vendor/version.rb +83 -0
  205. data/lib/epuber/version.rb +4 -0
  206. 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,10 @@
1
+ unless Object.keys
2
+ # @param obj {Object}
3
+ # @return {Array}
4
+ #
5
+ Object.keys = (obj) ->
6
+ (k for k of obj when Object.prototype.hasOwnProperty.call(obj, k))
7
+
8
+
9
+ @after = (delay, func) ->
10
+ setTimeout(func, delay)
@@ -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,10 @@
1
+ {
2
+ "name": "epuber",
3
+ "dependencies": {
4
+ "cookies-js": "~1.2",
5
+ "uri.js": "~1.15",
6
+ "spin.js": "~2.0",
7
+ "jquery": "~2.1",
8
+ "keymaster": "*"
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name" : "cookies-js",
3
+ "version" : "1.2.2",
4
+ "main" : "dist/cookies.js",
5
+ "ignore" : [
6
+ "**/*",
7
+ "!dist/*",
8
+ "!bower.json"
9
+ ]
10
+ }
@@ -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);