bookmaker 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/Readme.md +0 -0
- data/bin/bookmaker +5 -0
- data/bookmaker.gemspec +37 -0
- data/features/basic.feature +8 -0
- data/features/export.feature +8 -0
- data/features/support/setup.rb +1 -0
- data/lib/bookmaker.rb +54 -0
- data/lib/bookmaker/adapters/markdown.rb +35 -0
- data/lib/bookmaker/cli.rb +74 -0
- data/lib/bookmaker/dependency.rb +19 -0
- data/lib/bookmaker/exporter.rb +68 -0
- data/lib/bookmaker/extensions/string.rb +11 -0
- data/lib/bookmaker/generator.rb +40 -0
- data/lib/bookmaker/parser.rb +81 -0
- data/lib/bookmaker/parser/epub.rb +137 -0
- data/lib/bookmaker/parser/html.rb +199 -0
- data/lib/bookmaker/parser/mobi.rb +14 -0
- data/lib/bookmaker/parser/pdf.rb +40 -0
- data/lib/bookmaker/stats.rb +45 -0
- data/lib/bookmaker/stream.rb +27 -0
- data/lib/bookmaker/toc.rb +6 -0
- data/lib/bookmaker/toc/epub.rb +41 -0
- data/lib/bookmaker/toc/html.rb +78 -0
- data/lib/bookmaker/version.rb +3 -0
- data/templates/config.erb +51 -0
- data/templates/epub.css +500 -0
- data/templates/epub.erb +15 -0
- data/templates/html.erb +42 -0
- data/templates/latex.erb +201 -0
- data/templates/sample.md +24 -0
- data/templates/syntax.css +58 -0
- data/templates/user.css +1 -0
- metadata +172 -0
data/templates/epub.erb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= language %>">
|
4
|
+
<head>
|
5
|
+
<title></title>
|
6
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
7
|
+
<link rel="stylesheet" type="text/css" href="user.css"/>
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<body>
|
11
|
+
<div class="chapter">
|
12
|
+
<%= content %>
|
13
|
+
</div>
|
14
|
+
</body>
|
15
|
+
</html>
|
data/templates/html.erb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3
|
+
<head>
|
4
|
+
<title></title>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<meta name="generator" content="Bookmaker Gem" />
|
7
|
+
<meta name="originator" content="<%= author %>" />
|
8
|
+
<!-- charset=utf-8,html,xhtml -->
|
9
|
+
<meta name="date" content="<%= published_at %>" />
|
10
|
+
<meta name="dc:Title" content="<%= title %>" />
|
11
|
+
<style><!--
|
12
|
+
/* Eliminate all default margin and padding settings */
|
13
|
+
html,body,div,h1,h2,h3,h4,h5,p,blockquote {margin: 0; padding: 0.01em;}
|
14
|
+
|
15
|
+
p {text-indent: 1.25em; margin-top: 0; margin-bottom: 0;}
|
16
|
+
|
17
|
+
/* For chapter headings ( page break before recommended) */
|
18
|
+
h1 { margin-top: 1em; }
|
19
|
+
h2 { margin-top: 0.8em; }
|
20
|
+
h3 { margin-top: 0.7em; }
|
21
|
+
h4, h5, h6 { margin-top: 0.5em; }
|
22
|
+
p {
|
23
|
+
text-indent: 0; /* no indentation for the first line */
|
24
|
+
margin-top: 0.3em; /* adjust top margin for paragraph */
|
25
|
+
}
|
26
|
+
|
27
|
+
/* Styles for list elements */
|
28
|
+
/* Style for block quotes */
|
29
|
+
blockquote {
|
30
|
+
margin-top: 1em;
|
31
|
+
margin-bottom: 1em;
|
32
|
+
margin-left: 3em;
|
33
|
+
margin-right: 3em;
|
34
|
+
font-style: italic;
|
35
|
+
}
|
36
|
+
-->
|
37
|
+
</style>
|
38
|
+
</head>
|
39
|
+
<body>
|
40
|
+
<%= contents %>
|
41
|
+
</body>
|
42
|
+
</html>
|
data/templates/latex.erb
ADDED
@@ -0,0 +1,201 @@
|
|
1
|
+
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
|
2
|
+
|
3
|
+
\documentclass[11pt,twoside,makeidx]{memoir}
|
4
|
+
\usepackage{layouts}[2001/04/29]
|
5
|
+
\makeglossary
|
6
|
+
\makeindex
|
7
|
+
|
8
|
+
%========================
|
9
|
+
% Page Layout
|
10
|
+
\setstocksize{9in}{6in}
|
11
|
+
\settrimmedsize{9in}{6in}{*} % Use entire page
|
12
|
+
\settrims{0pt}{0pt}
|
13
|
+
|
14
|
+
\setlrmarginsandblock{0.8in}{0.5in}{*}
|
15
|
+
\setulmarginsandblock{0.8in}{0.5in}{*}
|
16
|
+
|
17
|
+
\setmarginnotes{0.1pt}{0.2in}{\onelineskip}
|
18
|
+
\setheadfoot{\onelineskip}{2\onelineskip}
|
19
|
+
\setheaderspaces{*}{2\onelineskip}{*}
|
20
|
+
\linespread{1.05}
|
21
|
+
|
22
|
+
\checkandfixthelayout
|
23
|
+
\setlength{\headsep}{8pt}
|
24
|
+
\aliaspagestyle{title}{empty}
|
25
|
+
|
26
|
+
\makepagestyle{ebook}
|
27
|
+
\makeoddhead{ebook}{}{\normalfont\scshape\theauthor}{\normalfont\thepage}
|
28
|
+
\makeevenhead{ebook}{\normalfont\thepage}{\normalfont\scshape \thetitle}{}
|
29
|
+
|
30
|
+
%========================
|
31
|
+
% Fonts
|
32
|
+
\usepackage{fontspec}
|
33
|
+
\usepackage{xunicode}
|
34
|
+
\usepackage{xltxtra}
|
35
|
+
\defaultfontfeatures{Mapping=tex-text}
|
36
|
+
\setmainfont{Liberation Serif}
|
37
|
+
\setsansfont{TitilliumText22L Light}
|
38
|
+
\setmonofont{Liberation Mono}
|
39
|
+
\newfontinstance\scshape[Letters=SmallCaps, Numbers=Uppercase]{Liberation Mono}
|
40
|
+
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
|
41
|
+
|
42
|
+
\usepackage{verbatim}
|
43
|
+
\usepackage[colorlinks=false]{hyperref}
|
44
|
+
% \usepackage[utf8x]{inputenc}
|
45
|
+
\usepackage{
|
46
|
+
fancyvrb,
|
47
|
+
graphics,
|
48
|
+
url,
|
49
|
+
rotating,
|
50
|
+
lipsum,
|
51
|
+
microtype,
|
52
|
+
fancybox,
|
53
|
+
glossaries,
|
54
|
+
titling
|
55
|
+
}
|
56
|
+
|
57
|
+
\ifdefined\disableligature
|
58
|
+
\DisableLigatures[f]{encoding = *, family = * }
|
59
|
+
\fi
|
60
|
+
|
61
|
+
%========================
|
62
|
+
% Document Headings
|
63
|
+
|
64
|
+
%% Chapter
|
65
|
+
\setsecheadstyle{\bfseries\large\centering}
|
66
|
+
\newcounter{renewsection}
|
67
|
+
\newcommand{\Chapter}[1]{
|
68
|
+
\setcounter{renewsection}{\value{section}}
|
69
|
+
\chapter{#1}
|
70
|
+
\setcounter{section}{\value{renewsection}}
|
71
|
+
}
|
72
|
+
|
73
|
+
%========================
|
74
|
+
\renewcommand{\thesection}{\arabic{section}.}
|
75
|
+
|
76
|
+
%========================
|
77
|
+
% TEXT LAYOUT
|
78
|
+
\newlength{\AfterFancyBreakMin}
|
79
|
+
\setlength{\AfterFancyBreakMin}{3\baselineskip}
|
80
|
+
|
81
|
+
\setlength{\parindent}{1.5 em}
|
82
|
+
|
83
|
+
\makeatletter
|
84
|
+
\g@addto@macro\quote{\linespread{1}\small{}}
|
85
|
+
\g@addto@macro\quotation{\linespread{1}\small{}}
|
86
|
+
\g@addto@macro\caption{\linespread{1}\footnotesize{}}
|
87
|
+
\makeatother
|
88
|
+
\tolerance 1414
|
89
|
+
\hbadness 1414
|
90
|
+
\setlength{\emergencystretch}{3em}
|
91
|
+
\righthyphenmin 62
|
92
|
+
\emergencystretch 1.5em
|
93
|
+
\hfuzz 0.3pt
|
94
|
+
\widowpenalty=10000
|
95
|
+
\clubpenalty=10000
|
96
|
+
|
97
|
+
\setlength{\parindent}{1.5 em}
|
98
|
+
|
99
|
+
\def\thinspace{\kern .16667em }
|
100
|
+
\newcommand{\Dash}{\thinspace---\thinspace}
|
101
|
+
\newcommand{\dash}{\tk{--Wrong Dash--}}
|
102
|
+
|
103
|
+
%========================
|
104
|
+
% Dates
|
105
|
+
\usepackage{datetime}
|
106
|
+
\newdateformat{yearonly}{\THEYEAR}
|
107
|
+
\newdateformat{usmonthyear}{\monthname[\THEMONTH], \THEYEAR}
|
108
|
+
\newcommand{\monthyear}{%
|
109
|
+
\ifcase\month\or January\or February\or March\or April\or May\or June\or
|
110
|
+
July\or August\or September\or October\or November\or
|
111
|
+
December\fi\space\number\year
|
112
|
+
}
|
113
|
+
|
114
|
+
%========================
|
115
|
+
% Text Tweaks
|
116
|
+
\newcommand{\ellip}{\ldots}
|
117
|
+
\newcommand{\pbreak}{\pfbreak}%
|
118
|
+
|
119
|
+
%========================
|
120
|
+
% Book-Specific Metadata
|
121
|
+
\def\NextBook{Luctation}
|
122
|
+
\def\ReturningCharacters{Bophendze and Smee}
|
123
|
+
\title{<%= title %>}
|
124
|
+
\author{<%= authors.join(', ') %>}
|
125
|
+
\date{<%= published_at %>}
|
126
|
+
\newdate{firstprint}{<%= published_at.split('-')[2]%>}{<%= published_at.split('-')[1]%>}{<%= published_at.split('-')[0]%>}
|
127
|
+
% \newcommand{\isbn}{<}
|
128
|
+
\renewcommand{\thesection}{\arabic{section}.}
|
129
|
+
|
130
|
+
\begin{document}
|
131
|
+
\frontmatter
|
132
|
+
\begin{titlingpage}
|
133
|
+
\pagestyle{empty}
|
134
|
+
\begin{center}
|
135
|
+
\vspace*{\fill}
|
136
|
+
|
137
|
+
\HUGE\textbf{\textsf\thetitle}
|
138
|
+
|
139
|
+
\vspace*{0.25in}
|
140
|
+
\line(1,0){150}
|
141
|
+
\vspace*{0.25in}
|
142
|
+
|
143
|
+
\Large\textsf\theauthor
|
144
|
+
|
145
|
+
\vspace*{\fill}
|
146
|
+
|
147
|
+
\vspace*{\fill}
|
148
|
+
\hspace*{\fill}\textsf{Dausha}\hspace*{\fill}\newline%
|
149
|
+
\textsf{Communications}
|
150
|
+
\end{center}
|
151
|
+
\end{titlingpage}
|
152
|
+
|
153
|
+
% r.3 Copyright Page
|
154
|
+
\vspace*{\fill}
|
155
|
+
\pagestyle{empty}
|
156
|
+
|
157
|
+
\par\noindent\emph{\thetitle}
|
158
|
+
\newline
|
159
|
+
|
160
|
+
\par\noindent This is a work of fiction. All characters and events portrayed in this
|
161
|
+
book are fictional, and any resemblance to real people or incidents is
|
162
|
+
purely coincidental.\newline
|
163
|
+
|
164
|
+
\par\noindent\emph{<%= copyright %>}\newline
|
165
|
+
|
166
|
+
\par\noindent Cover Design by <%= name %>\newline
|
167
|
+
|
168
|
+
\par\noindent Book Design by <%= name %>\newline
|
169
|
+
|
170
|
+
\par\noindent All rights reserved.\newline
|
171
|
+
|
172
|
+
\par\noindent No part of this publication may be reproduced, stored in a retrieval system, posted on the Internet, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without prior written permission from the author. The only exception is by a reviewer, who may quote short excerpts in a review.\newline
|
173
|
+
|
174
|
+
\par\noindent \theauthor
|
175
|
+
\par\noindent Visit my website at \url{<%= base_url %>}\newline
|
176
|
+
|
177
|
+
\par\noindent Printed in the United States of America
|
178
|
+
\newline
|
179
|
+
|
180
|
+
\par\noindent\textit{First Printing, \usmonthyear\displaydate{firstprint}}
|
181
|
+
\newline
|
182
|
+
|
183
|
+
\par\noindent <%= identifier['type'] %> <%= identifier['id'] %>
|
184
|
+
\vspace*{\fill}
|
185
|
+
\newpage
|
186
|
+
% \fi
|
187
|
+
|
188
|
+
% Todolist
|
189
|
+
%
|
190
|
+
|
191
|
+
\tableofcontents
|
192
|
+
|
193
|
+
\mainmatter
|
194
|
+
\pagestyle{ebook}
|
195
|
+
\sloppy
|
196
|
+
|
197
|
+
<%= contents %>
|
198
|
+
|
199
|
+
\backmatter
|
200
|
+
|
201
|
+
\end{document}
|
data/templates/sample.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Welcome to Bookmaker
|
2
|
+
====================
|
3
|
+
|
4
|
+
[Bookmaker](http://dausha.net/bookmaker) is easy-to-use e-book framework. You can generate PDF, e-Pub and Mobi files from [Markdown](http://en.wikipedia.org/wiki/Markdown), or plain HTML files.
|
5
|
+
|
6
|
+
You can safely remove this page and start writing your own novel.
|
7
|
+
|
8
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vitae arcu magna. Curabitur massa augue, scelerisque non ullamcorper ut, molestie sed enim. In quam orci, malesuada sit amet tincidunt in, ultricies sed sem. Ut nisl nulla, tempor quis fermentum nec, consectetur iaculis purus. Maecenas mi libero, convallis ut scelerisque sed, eleifend sed lacus. Ut id turpis leo, sit amet fermentum dolor. Duis scelerisque aliquam nulla in placerat. Etiam aliquam tempor nunc id viverra. Ut molestie sollicitudin odio, cursus laoreet purus hendrerit non. Vestibulum ullamcorper, est nec ultrices scelerisque, orci leo aliquam urna, vel sodales ligula erat ut mi. Cras porta odio in ligula vehicula id feugiat mauris adipiscing. Etiam luctus, arcu id ornare mattis, tortor orci ultrices enim, et dignissim diam risus at dui. In et dui enim. Sed eget vestibulum nulla. Aliquam fermentum, sapien ac egestas elementum, velit dui elementum quam, vitae dictum orci erat eu enim.
|
9
|
+
|
10
|
+
Nulla mi elit, lacinia quis lacinia at, consequat eu dolor. Mauris interdum est quam. In ac ipsum urna. Cras felis est, elementum id suscipit vitae, rutrum ut nisi. Nulla ornare leo ut nisl rhoncus sit amet porta diam gravida. In hac habitasse platea dictumst. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam placerat diam non tellus fermentum ac adipiscing eros pharetra. Vestibulum eleifend eleifend velit sit amet porttitor. Quisque congue vehicula eros eu commodo. Phasellus dictum, massa vel suscipit volutpat, justo sapien iaculis nulla, sit amet condimentum lacus justo in nunc. Vestibulum eget ornare leo. Nulla vehicula fringilla fermentum. Ut vel eros erat.
|
11
|
+
|
12
|
+
Quisque feugiat blandit orci, et faucibus justo rhoncus id. Vestibulum facilisis varius leo, quis facilisis neque vehicula in. Donec eros purus, bibendum vel varius consequat, aliquam sed risus. Sed mattis mattis mi nec cursus. In nec nunc est, ut volutpat arcu. Sed ut suscipit dui. Curabitur sed egestas nisi. Donec id nibh ante. Vivamus id neque nec ligula eleifend semper. Sed vitae justo et sem suscipit porttitor.
|
13
|
+
|
14
|
+
Duis quis dapibus tortor. Sed in tincidunt justo. Nunc in odio tortor. Maecenas eu ipsum magna. Phasellus et justo imperdiet sem volutpat egestas ac id felis. Nulla orci sapien, pellentesque euismod sollicitudin eu, gravida in nisl. Sed in quam felis. Cras in metus eu nisi volutpat eleifend. Quisque eget diam nisi.
|
15
|
+
|
16
|
+
Vestibulum sapien sapien, sodales volutpat tincidunt a, malesuada ut nisl. Phasellus sapien mauris, lacinia feugiat fermentum non, auctor eu arcu. Duis pharetra lobortis tristique. Vivamus ultricies, elit eget lobortis ornare, elit turpis tristique nunc, ut semper libero lacus sit amet justo. Ut at nisi ut urna fermentum scelerisque id et lorem. Fusce massa lectus, lobortis sed semper quis, luctus at tellus. Proin quis leo dui. Cras orci sem, rutrum in tristique ut, facilisis sit amet lorem. Quisque elementum ipsum sed tortor facilisis faucibus dapibus arcu molestie. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
|
17
|
+
|
18
|
+
Sed dapibus tortor ut massa facilisis ac tempor dolor venenatis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed egestas pretium metus ac imperdiet. Proin dictum lectus eget tellus fermentum eu rutrum nisi rutrum. Sed diam tellus, rutrum vitae posuere quis, molestie eget quam. Pellentesque in leo eget lacus ultrices blandit. Sed nec ante a lectus lobortis viverra id et purus. Sed non felis quam. Nulla ac lacus ante, vitae tristique mauris. Maecenas commodo, erat eu pretium interdum, metus justo adipiscing orci, quis rhoncus metus sem at dui. Suspendisse bibendum tincidunt facilisis. Cras interdum suscipit urna, ut pharetra lacus tincidunt non. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras diam purus, porta eget suscipit quis, sodales at orci. Sed suscipit, magna ut lacinia condimentum, diam elit cursus ligula, id sollicitudin purus est sed eros. Cras pulvinar congue augue, at aliquet nisl condimentum ut.
|
19
|
+
|
20
|
+
Aenean at arcu vestibulum velit ultrices pulvinar. Duis sodales hendrerit arcu eget condimentum. Sed id consectetur ipsum. Aliquam tempor sodales erat, aliquet porttitor orci gravida eget. Vivamus odio magna, egestas ac bibendum eu, ornare tempus tortor. Ut pharetra ante libero, quis imperdiet sapien. Nullam malesuada elit vel mauris adipiscing quis auctor ipsum dictum. Quisque sapien eros, molestie eu accumsan quis, porttitor non lorem. Proin ornare ullamcorper mauris, eu ornare turpis tempus et. Praesent aliquam nibh vitae mauris mattis quis pretium magna malesuada. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent id felis ut erat aliquet ultrices. Suspendisse eget placerat augue.
|
21
|
+
|
22
|
+
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi laoreet tortor vitae augue imperdiet adipiscing. Nullam eget mi metus. Quisque et leo tempor mi luctus malesuada vitae a nunc. Phasellus eleifend lorem sit amet leo rutrum feugiat. Maecenas magna ligula, accumsan sed luctus quis, faucibus in dui. Integer sapien lectus, interdum malesuada iaculis eu, scelerisque nec lorem. Vestibulum mollis vehicula dui, eu ornare lectus consequat sed. Vivamus quis dolor id dolor aliquet vehicula. Vivamus nisi nisl, sagittis non blandit sed, pretium eget lacus. Suspendisse ut neque at tortor scelerisque congue in at tortor.
|
23
|
+
|
24
|
+
Sed sed fermentum risus. Quisque ac orci vel nibh suscipit eleifend eget iaculis libero. Cras et urna vitae turpis interdum tristique. Sed tellus nisi, ultricies at fermentum eget, semper non est. Morbi risus tortor, rutrum ut pulvinar cursus, tempor vel ipsum. Aenean tincidunt pretium justo ut rutrum. Suspendisse vel viverra sapien. Vestibulum eget volutpat nisi. Morbi blandit, odio interdum tempor volutpat, turpis felis egestas dolor, vel ullamcorper augue nulla sed urna. Integer commodo sodales imperdiet.
|
@@ -0,0 +1,58 @@
|
|
1
|
+
.hll { background-color: #ffffcc }
|
2
|
+
.c { color: #aaaaaa; } /* Comment */
|
3
|
+
.err { color: #F00000; background-color: #F0A0A0 } /* Error */
|
4
|
+
.k { color: #0000aa } /* Keyword */
|
5
|
+
.cm { color: #aaaaaa; } /* Comment.Multiline */
|
6
|
+
.cp { color: #4c8317 } /* Comment.Preproc */
|
7
|
+
.c1 { color: #aaaaaa; } /* Comment.Single */
|
8
|
+
.cs { color: #0000aa; } /* Comment.Special */
|
9
|
+
.gd { color: #aa0000 } /* Generic.Deleted */
|
10
|
+
.ge { } /* Generic.Emph */
|
11
|
+
.gr { color: #aa0000 } /* Generic.Error */
|
12
|
+
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
13
|
+
.gi { color: #00aa00 } /* Generic.Inserted */
|
14
|
+
.go { color: #888888 } /* Generic.Output */
|
15
|
+
.gp { color: #555555 } /* Generic.Prompt */
|
16
|
+
.gs { font-weight: bold } /* Generic.Strong */
|
17
|
+
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
18
|
+
.gt { color: #aa0000 } /* Generic.Traceback */
|
19
|
+
.kc { color: #0000aa } /* Keyword.Constant */
|
20
|
+
.kd { color: #0000aa } /* Keyword.Declaration */
|
21
|
+
.kn { color: #0000aa } /* Keyword.Namespace */
|
22
|
+
.kp { color: #0000aa } /* Keyword.Pseudo */
|
23
|
+
.kr { color: #0000aa } /* Keyword.Reserved */
|
24
|
+
.kt { color: #00aaaa } /* Keyword.Type */
|
25
|
+
.m { color: #009999 } /* Literal.Number */
|
26
|
+
.s { color: #aa5500 } /* Literal.String */
|
27
|
+
.na { color: #1e90ff } /* Name.Attribute */
|
28
|
+
.nb { color: #00aaaa } /* Name.Builtin */
|
29
|
+
.nc { color: #00aa00; } /* Name.Class */
|
30
|
+
.no { color: #aa0000 } /* Name.Constant */
|
31
|
+
.nd { color: #888888 } /* Name.Decorator */
|
32
|
+
.ni { color: #800000; font-weight: bold } /* Name.Entity */
|
33
|
+
.nf { color: #00aa00 } /* Name.Function */
|
34
|
+
.nn { color: #00aaaa; } /* Name.Namespace */
|
35
|
+
.nt { color: #1e90ff; font-weight: bold } /* Name.Tag */
|
36
|
+
.nv { color: #aa0000 } /* Name.Variable */
|
37
|
+
.ow { color: #0000aa } /* Operator.Word */
|
38
|
+
.w { color: #bbbbbb } /* Text.Whitespace */
|
39
|
+
.mf { color: #009999 } /* Literal.Number.Float */
|
40
|
+
.mh { color: #009999 } /* Literal.Number.Hex */
|
41
|
+
.mi { color: #009999 } /* Literal.Number.Integer */
|
42
|
+
.mo { color: #009999 } /* Literal.Number.Oct */
|
43
|
+
.sb { color: #aa5500 } /* Literal.String.Backtick */
|
44
|
+
.sc { color: #aa5500 } /* Literal.String.Char */
|
45
|
+
.sd { color: #aa5500 } /* Literal.String.Doc */
|
46
|
+
.s2 { color: #aa5500 } /* Literal.String.Double */
|
47
|
+
.se { color: #aa5500 } /* Literal.String.Escape */
|
48
|
+
.sh { color: #aa5500 } /* Literal.String.Heredoc */
|
49
|
+
.si { color: #aa5500 } /* Literal.String.Interpol */
|
50
|
+
.sx { color: #aa5500 } /* Literal.String.Other */
|
51
|
+
.sr { color: #009999 } /* Literal.String.Regex */
|
52
|
+
.s1 { color: #aa5500 } /* Literal.String.Single */
|
53
|
+
.ss { color: #0000aa } /* Literal.String.Symbol */
|
54
|
+
.bp { color: #00aaaa } /* Name.Builtin.Pseudo */
|
55
|
+
.vc { color: #aa0000 } /* Name.Variable.Class */
|
56
|
+
.vg { color: #aa0000 } /* Name.Variable.Global */
|
57
|
+
.vi { color: #aa0000 } /* Name.Variable.Instance */
|
58
|
+
.il { color: #009999 } /* Literal.Number.Integer.Long */
|
data/templates/user.css
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/* add custom CSS */
|
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bookmaker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Merovex
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-02 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: &2152963240 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2152963240
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: aruba
|
27
|
+
requirement: &2152962820 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2152962820
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: cucumber
|
38
|
+
requirement: &2152962320 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2152962320
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: eeepub
|
49
|
+
requirement: &2152961820 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2152961820
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: kramdown
|
60
|
+
requirement: &2152961220 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2152961220
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: thor
|
71
|
+
requirement: &2152960640 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2152960640
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: nokogiri
|
82
|
+
requirement: &2152959600 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *2152959600
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: notifier
|
93
|
+
requirement: &2152959120 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *2152959120
|
102
|
+
description: ! 'ODO: Write a gem description'
|
103
|
+
email:
|
104
|
+
- dausha@gmail.com
|
105
|
+
executables:
|
106
|
+
- bookmaker
|
107
|
+
extensions: []
|
108
|
+
extra_rdoc_files: []
|
109
|
+
files:
|
110
|
+
- .gitignore
|
111
|
+
- Gemfile
|
112
|
+
- Rakefile
|
113
|
+
- Readme.md
|
114
|
+
- bin/bookmaker
|
115
|
+
- bookmaker.gemspec
|
116
|
+
- features/basic.feature
|
117
|
+
- features/export.feature
|
118
|
+
- features/support/setup.rb
|
119
|
+
- lib/bookmaker.rb
|
120
|
+
- lib/bookmaker/adapters/markdown.rb
|
121
|
+
- lib/bookmaker/cli.rb
|
122
|
+
- lib/bookmaker/dependency.rb
|
123
|
+
- lib/bookmaker/exporter.rb
|
124
|
+
- lib/bookmaker/extensions/string.rb
|
125
|
+
- lib/bookmaker/generator.rb
|
126
|
+
- lib/bookmaker/parser.rb
|
127
|
+
- lib/bookmaker/parser/epub.rb
|
128
|
+
- lib/bookmaker/parser/html.rb
|
129
|
+
- lib/bookmaker/parser/mobi.rb
|
130
|
+
- lib/bookmaker/parser/pdf.rb
|
131
|
+
- lib/bookmaker/stats.rb
|
132
|
+
- lib/bookmaker/stream.rb
|
133
|
+
- lib/bookmaker/toc.rb
|
134
|
+
- lib/bookmaker/toc/epub.rb
|
135
|
+
- lib/bookmaker/toc/html.rb
|
136
|
+
- lib/bookmaker/version.rb
|
137
|
+
- templates/config.erb
|
138
|
+
- templates/epub.css
|
139
|
+
- templates/epub.erb
|
140
|
+
- templates/html.erb
|
141
|
+
- templates/latex.erb
|
142
|
+
- templates/sample.md
|
143
|
+
- templates/syntax.css
|
144
|
+
- templates/user.css
|
145
|
+
homepage: http://dausha.net
|
146
|
+
licenses: []
|
147
|
+
post_install_message:
|
148
|
+
rdoc_options: []
|
149
|
+
require_paths:
|
150
|
+
- lib
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
+
none: false
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
none: false
|
159
|
+
requirements:
|
160
|
+
- - ! '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
requirements: []
|
164
|
+
rubyforge_project: bookmaker
|
165
|
+
rubygems_version: 1.8.10
|
166
|
+
signing_key:
|
167
|
+
specification_version: 3
|
168
|
+
summary: ! 'ODO: Write a gem summary'
|
169
|
+
test_files:
|
170
|
+
- features/basic.feature
|
171
|
+
- features/export.feature
|
172
|
+
- features/support/setup.rb
|