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,3 @@
1
+
2
+ main_font_family = AvenirNext
3
+ text_color = #B87B4A
@@ -0,0 +1,211 @@
1
+
2
+ @import 'base'
3
+ @import 'book_content'
4
+
5
+ body, div, html, p
6
+ margin 0
7
+ padding 0
8
+
9
+
10
+
11
+ body
12
+ font-family main_font_family
13
+ font-weight normal
14
+ font-size 20px
15
+
16
+ p
17
+ margin 0
18
+ text-indent 0
19
+
20
+ a
21
+ text-decoration inherit
22
+ text-decoration-color inherit
23
+ color inherit
24
+
25
+ &:hover
26
+ text-decoration underline
27
+
28
+
29
+ normal_color = rgba(255, 255, 255, 0.82)
30
+ selected_color = #6D3102
31
+ left_align = 40px
32
+ header_underline_height = 6px
33
+
34
+ #header_bg
35
+ height 70px
36
+ width 100%
37
+ background-color #C5946C
38
+ float left
39
+
40
+ #header
41
+ height 70px
42
+ width 100%
43
+ max-width 1200px
44
+ margin 0 auto
45
+ background-color #C5946C
46
+ position relative
47
+
48
+ ul
49
+ padding 0
50
+ margin 0 0 0 left_align
51
+ position absolute
52
+ bottom header_underline_height
53
+
54
+ li
55
+ display inline
56
+ list-style none
57
+ padding 0
58
+ margin 0 10px
59
+ font-size 36px
60
+ color normal_color
61
+ border-bottom solid header_underline_height transparent
62
+
63
+ a
64
+ text-decoration inherit
65
+ color inherit
66
+
67
+ &:first-child
68
+ margin-left 0
69
+
70
+ &:hover
71
+ text-decoration underline
72
+ color selected_color
73
+ border-bottom-color selected_color
74
+
75
+ &.selected
76
+ color selected_color
77
+ border-bottom-color selected_color
78
+
79
+
80
+ #main
81
+ display -webkit-flex // Safari
82
+ display flex
83
+ flex-flow row wrap
84
+
85
+ max-width 1200px
86
+
87
+ margin 0 auto
88
+ margin-top 20px
89
+
90
+ #content
91
+ flex 5
92
+
93
+ .toc_content
94
+ margin-left 40px
95
+
96
+
97
+ div.cover_image
98
+ flex 1
99
+ margin-right 40px
100
+ margin-left left_align
101
+
102
+ max-width 250px
103
+
104
+ div
105
+ box-shadow 1px 1px 10px rgba(0, 0, 0, 0.4)
106
+
107
+ img
108
+ width 100%
109
+
110
+ h1.meta_section
111
+ font-weight normal
112
+ font-size 36px
113
+ color text_color
114
+ margin-bottom 0
115
+
116
+ &:first-child
117
+ margin-top 0
118
+
119
+ td.book_meta_key
120
+ text-align right
121
+ font-size 14px
122
+ color text_color
123
+ vertical-align baseline
124
+ padding-right 8px
125
+
126
+ td.book_meta_value
127
+ font-size 20px
128
+ vertical-align baseline
129
+
130
+
131
+
132
+ p.target_selected
133
+ font-weight bold
134
+
135
+
136
+
137
+ ul.spine
138
+ padding-left 0
139
+ margin-top 0
140
+
141
+ & &
142
+ padding-left 30px
143
+
144
+ li
145
+ list-style none
146
+ line-height 1.4em
147
+
148
+ span.title
149
+ color text_color
150
+ text-decoration-color text_color
151
+
152
+ span.option
153
+ opacity .5
154
+ padding .1em .3em
155
+ font-size 12px
156
+ background-color #D8D8D8
157
+ border solid 1px #979797
158
+ border-radius 5px
159
+
160
+ a.toc_href
161
+ color rgba(0, 0, 0, 0.5)
162
+
163
+
164
+
165
+ #footer
166
+ margin-top 50px
167
+ border-top solid 1px text_color
168
+ padding 10px 0
169
+ width 100%
170
+
171
+ p
172
+ text-align center
173
+ color gray
174
+ font-size 10px
175
+
176
+
177
+ p.file
178
+ font-size 16px
179
+
180
+ span.arrow
181
+ font-family monospace
182
+ color text_color
183
+
184
+
185
+
186
+
187
+
188
+
189
+ @font-face
190
+ font-family AvenirNext
191
+ font-style normal
192
+ font-weight bold
193
+ src url(fonts/AvenirNext/AvenirNext-Bold.ttf)
194
+
195
+ @font-face
196
+ font-family AvenirNext
197
+ font-style italic
198
+ font-weight bold
199
+ src url(fonts/AvenirNext/AvenirNext-BoldItalic.ttf)
200
+
201
+ @font-face
202
+ font-family AvenirNext
203
+ font-style italic
204
+ font-weight normal
205
+ src url(fonts/AvenirNext/AvenirNext-Italic.ttf)
206
+
207
+ @font-face
208
+ font-family AvenirNext
209
+ font-style normal
210
+ font-weight normal
211
+ src url(fonts/AvenirNext/AvenirNext-Regular.ttf)
@@ -0,0 +1,39 @@
1
+
2
+ @import 'base'
3
+
4
+ #epuber_spinner_container
5
+ position fixed
6
+ top 50%
7
+ left 50%
8
+ width 70px
9
+ height 70px
10
+ margin-top -35px // half of height
11
+ margin-left -35px // half of width
12
+ background-color text_color
13
+ border-radius 35px
14
+
15
+ box-shadow: 0px 1px 10px 0px rgba(0,0,0,0.6);
16
+
17
+
18
+ #epuber_connection_container
19
+ display block
20
+ position fixed
21
+ top 0px
22
+ left 0px
23
+ width 100%
24
+ background-color #ff0033
25
+ border-bottom 1px solid #980000
26
+ padding 10px 0px
27
+ z-index 99999999
28
+ cursor pointer
29
+ box-shadow 0px 1px 10px 0px rgba(0, 0, 0, 0.6)
30
+
31
+ p
32
+ text-indent 0
33
+ text-align center
34
+ line-height 1.4em
35
+ margin 0px 15px
36
+ color white
37
+ font-size 20px
38
+ font-weight medium
39
+ font-family sans-serif
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+
3
+ require 'nokogiri'
4
+
5
+ module Epuber
6
+ class Server
7
+ # @param [String] file_path absolute path to xhtml file
8
+ #
9
+ # @return [(Fixnum, String)]
10
+ #
11
+ def handle_xhtml_file(file_path)
12
+ html_doc = Nokogiri::XML(File.open(file_path))
13
+
14
+ add_file_to_head(:js, html_doc, 'vendor/bower/jquery/jquery.min.js')
15
+ add_file_to_head(:js, html_doc, 'vendor/bower/spin/spin.js')
16
+ add_file_to_head(:js, html_doc, 'vendor/bower/cookies/cookies.min.js')
17
+ add_file_to_head(:js, html_doc, 'vendor/bower/uri/URI.min.js')
18
+ add_file_to_head(:js, html_doc, 'vendor/bower/keymaster/keymaster.js')
19
+ add_file_to_head(:style, html_doc, 'book_content.styl')
20
+
21
+ add_file_to_head(:js, html_doc, 'support.coffee')
22
+ add_auto_refresh_script(html_doc)
23
+
24
+ unless file_resolver.nil?
25
+ current_index = file_resolver.spine_files.index { |file| file.final_destination_path == file_path }
26
+
27
+ unless current_index.nil?
28
+ previous_path = spine_file_at(current_index - 1).try(:pkg_destination_path)
29
+ next_path = spine_file_at(current_index + 1).try(:pkg_destination_path)
30
+ add_keyboard_control_script(html_doc, previous_path, next_path)
31
+ end
32
+ end
33
+
34
+ [200, html_doc.to_html]
35
+ end
36
+
37
+ # @param [String] file_name name of the file located in ./pages/
38
+ #
39
+ # @return [(Fixnum, String)]
40
+ #
41
+ def handle_server_bade(file_name)
42
+ handle_bade(File.expand_path("pages/#{file_name}", File.dirname(__FILE__)))
43
+ end
44
+
45
+ # @param [String] file_path path to bade file to render
46
+ #
47
+ # @return [(Fixnum, String)]
48
+ #
49
+ def handle_bade(file_path)
50
+ [200, self.class.render_bade(file_path)]
51
+ rescue => e
52
+ env['sinatra.error'] = e
53
+ ShowExceptions.new(self).call(env)
54
+ end
55
+
56
+ # @param [String] file_path path to bade file to render
57
+ #
58
+ # @return [String]
59
+ #
60
+ def self.render_bade(file_path)
61
+ renderer = Bade::Renderer.from_file(file_path)
62
+ .with_locals(book: book, target: target, file_resolver: file_resolver)
63
+
64
+ renderer.render(new_line: '', indent: '')
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,6 @@
1
+
2
+ goToPage = (path) ->
3
+ window.location.assign('/book/' + path) if path?
4
+
5
+ key 'right', -> goToPage($next_path)
6
+ key 'left', -> goToPage($previous_path)
@@ -0,0 +1,75 @@
1
+
2
+ import "common"
3
+
4
+ mixin book_meta(key, format: nil)
5
+ tr
6
+ - value = book.send(key.to_sym)
7
+ - if value.is_a?(Array)
8
+ - value = value.map(&format).join(', ')
9
+ - end
10
+
11
+ - unless value.nil?
12
+ td.book_meta_key= key.gsub('_', ' ')
13
+ td.book_meta_value= value
14
+ - end
15
+
16
+ mixin metas
17
+ table
18
+ - default_block.call!
19
+
20
+ mixin section(name)
21
+ h1.meta_section= name
22
+ - default_block.call
23
+
24
+
25
+ mixin iterate_spine(toc_item)
26
+ - if toc_item.sub_items.count > 0
27
+ ul.spine
28
+ - toc_item.sub_items.each do |item|
29
+ li
30
+ - item_href = "/book/#{pretty_path_toc_item(item)}"
31
+ a.href(href: item_href)= item.local_source_pattern
32
+ - unless item.title.nil?
33
+ = '   '
34
+ span.title: a.title(href: item_href)= item.title
35
+ - end
36
+ - unless item.options.empty?
37
+ = '   '
38
+ - end
39
+ - item.options.each do |opt|
40
+ - next if opt.nil?
41
+ = ' '
42
+ span.option= opt.inspect
43
+ - end
44
+ +iterate_spine(item)
45
+ - end
46
+ - end
47
+
48
+ +page(header_id: 'home')
49
+ .cover_image
50
+ div
51
+ - unless (file = file_resolver.file_from_request(book.cover_image)).nil?
52
+ img(src: "/raw/#{file.pkg_destination_path}")
53
+ - else
54
+ img(src: '/server/raw/default_cover.png')
55
+ - end
56
+ #content
57
+ +section('Metadata')
58
+ +metas
59
+ +book_meta('title')
60
+ +book_meta('subtitle')
61
+ +book_meta('authors', format: lambda { |author| author.pretty_name })
62
+
63
+ +book_meta('publisher')
64
+ +book_meta('language')
65
+ +book_meta('version')
66
+ +book_meta('build_version')
67
+
68
+
69
+ +section('Targets')
70
+ - book.targets.each do |b_target|
71
+ p(class: 'target_selected' if target == b_target): a(href: "/change_target/#{b_target.name}")= b_target.name
72
+ - end
73
+
74
+ +section('Spine')
75
+ +iterate_spine(target.root_toc)
@@ -0,0 +1,59 @@
1
+
2
+ - def pretty_path_toc_item(toc_item)
3
+ - Epuber::Helper.destination_path_for_toc_item(toc_item, file_resolver, file_resolver.destination_path)
4
+ - end
5
+
6
+ - def pretty_path(file_request)
7
+ - file = file_resolver.file_from_request(file_request)
8
+ - path = file.destination_path
9
+
10
+ - pattern = file_request.source_pattern
11
+ - fragment_index = pattern.index('#')
12
+ - path += pattern[fragment_index..-1] unless fragment_index.nil?
13
+
14
+ - path
15
+ - end
16
+
17
+
18
+ mixin body_header(current)
19
+ #header_bg
20
+ #header
21
+ ul
22
+ li(class: 'selected' if current == 'home' || current.nil?): a(href: '/')= book.title
23
+ li(class: 'selected' if current == 'toc'): a(href: '/toc/') Toc
24
+ li(class: 'selected' if current == 'files'): a(href: '/files/') Files
25
+
26
+ mixin body_footer
27
+ #footer
28
+ p Epuber v#{Epuber::VERSION} | © #{Time.now.year} Roman Kříž
29
+
30
+ mixin page(title: nil, header_id: nil)
31
+ html
32
+ head
33
+ - if title.nil?
34
+ title #{book.title} | Epuber
35
+ - else
36
+ title #{title} | #{book.title} | Epuber
37
+ - end
38
+ link(rel: "stylesheet", type: "text/css", href: "/server/raw/basic.styl")
39
+ <script type="text/javascript" charset="utf-8" src="/server/raw/vendor/bower/jquery/jquery.min.js"></script>
40
+ <script type="text/javascript" charset="utf-8" src="/server/raw/vendor/bower/spin/spin.js"></script>
41
+ <script type="text/javascript" charset="utf-8" src="/server/raw/vendor/bower/uri/URI.min.js"></script>
42
+ <script type="text/javascript" charset="utf-8" src="/server/raw/vendor/bower/cookies/cookies.min.js"></script>
43
+ <script type="text/javascript" charset="utf-8" src="/server/raw/auto_refresh/reloader.coffee"></script>
44
+ <script type="text/javascript" charset="utf-8" src="/server/raw/auto_refresh/connector.coffee"></script>
45
+ <script type="text/javascript" charset="utf-8" src="/server/raw/auto_refresh/protocol.coffee"></script>
46
+ <script type="text/javascript" charset="utf-8" src="/server/raw/auto_refresh/auto_refresh.coffee"></script>
47
+ <script type="text/javascript">
48
+ | var auto_refresh = new AutoRefresh(window, console);
49
+ </script>
50
+ <meta name="viewport" content="width=device-width, initial-scale=1">
51
+
52
+
53
+ body
54
+ +body_header(header_id)
55
+
56
+ #main
57
+ - default_block.call
58
+
59
+ +body_footer