RbST 0.1.2 → 0.1.3
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.
- data/README.markdown +6 -0
- data/RbST.gemspec +2 -2
- data/VERSION +1 -1
- data/lib/rbst.rb +21 -7
- data/test/files/test.html +7 -7
- data/test/files/test.latex +235 -144
- data/test/test_rbst.rb +20 -0
- metadata +3 -3
data/README.markdown
CHANGED
@@ -43,6 +43,12 @@ By default, RbST uses the `html_body` part for HTML and the `whole` part for LaT
|
|
43
43
|
|
44
44
|
Available options can be viewed using the `RbST.html_options` and `RbST.latex_options` class methods.
|
45
45
|
|
46
|
+
You might run into a situation where you want to specify a custom script for processing one or both of the output formats. If so, just specify the full path to the custom script for the format by passing a hash to the `RbST.executables=` method:
|
47
|
+
|
48
|
+
RbST.executables = {:html => "/some/other/path/2html.py"}
|
49
|
+
RbST.new("something").to_html # uses custom executable for outputting html
|
50
|
+
RbST.new("something else").to_latex # uses default executable for latex since a custom one wasn't specified
|
51
|
+
|
46
52
|
For more information on reStructuredText, see the
|
47
53
|
[ReST documentation](http://docutils.sourceforge.net/rst.html).
|
48
54
|
|
data/RbST.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{RbST}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["William Melody"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-05-12}
|
13
13
|
s.description = %q{A simple Ruby wrapper for processing reStructuredText via Python's Docutils}
|
14
14
|
s.email = %q{wmelody@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/rbst.rb
CHANGED
@@ -2,6 +2,12 @@ require 'open3'
|
|
2
2
|
|
3
3
|
class RbST
|
4
4
|
|
5
|
+
@@executable_path = File.expand_path(File.join(File.dirname(__FILE__), "rst2parts"))
|
6
|
+
@@executables = {
|
7
|
+
:html => File.join(@@executable_path, "rst2html.py"),
|
8
|
+
:latex => File.join(@@executable_path, "rst2latex.py")
|
9
|
+
}
|
10
|
+
|
5
11
|
# Takes a string or file path plus any additional options and converts the input.
|
6
12
|
def self.convert(*args)
|
7
13
|
new(*args).convert
|
@@ -17,6 +23,18 @@ class RbST
|
|
17
23
|
new.print_options(:html)
|
18
24
|
end
|
19
25
|
|
26
|
+
# Specify custom executables to use instead of the default rst2latex.py and
|
27
|
+
# rst2html.py scripts. Takes a hash with two possible keys, :html and :latex,
|
28
|
+
# which should contain a full path to the alternative executable.
|
29
|
+
def self.executables=(exec_paths = {})
|
30
|
+
if exec_paths.empty? || (exec_paths.keys & [:html, :latex]).empty?
|
31
|
+
raise ArgumentError, "Custom executable format must be :html or :latex"
|
32
|
+
end
|
33
|
+
@@executables = @@executables.merge(exec_paths)
|
34
|
+
end
|
35
|
+
# Return the executable hash.
|
36
|
+
def self.executables; @@executables end
|
37
|
+
|
20
38
|
# Takes a string or file path plus any additional options and creates a new converter object.
|
21
39
|
def initialize(*args)
|
22
40
|
target = args.shift
|
@@ -26,7 +44,7 @@ class RbST
|
|
26
44
|
|
27
45
|
def convert # :nodoc:
|
28
46
|
@output_format ||= :html
|
29
|
-
execute "python #{
|
47
|
+
execute "python #{@@executables[@output_format]}" + convert_options
|
30
48
|
end
|
31
49
|
alias_method :to_s, :convert
|
32
50
|
|
@@ -46,7 +64,7 @@ class RbST
|
|
46
64
|
|
47
65
|
# Formats and prints the options from the docutils help in the way they'd be specified in RbST: strings, symbols and hashes.
|
48
66
|
def print_options(format)
|
49
|
-
help = execute("python #{
|
67
|
+
help = execute("python #{@@executables[format]} --help")
|
50
68
|
# non-hyphenated long options to symbols
|
51
69
|
help.gsub!(/(\-\-)([A-Za-z0-9]+)([=|\s])/, ':\2\3')
|
52
70
|
# hyphenated long options to quoted strings
|
@@ -60,11 +78,7 @@ class RbST
|
|
60
78
|
puts help
|
61
79
|
end
|
62
80
|
|
63
|
-
|
64
|
-
|
65
|
-
def self.executable(writer = :html)
|
66
|
-
File.expand_path(File.join(File.dirname(__FILE__), "rst2parts", "rst2#{writer}.py"))
|
67
|
-
end
|
81
|
+
protected
|
68
82
|
|
69
83
|
def execute(command)
|
70
84
|
output = ''
|
data/test/files/test.html
CHANGED
@@ -175,7 +175,7 @@ used to separate indentation contexts)</td>
|
|
175
175
|
<div class="section" id="inline-markup">
|
176
176
|
<h1>Inline Markup</h1>
|
177
177
|
<p><em>emphasis</em>; <strong>strong emphasis</strong>; <cite>interpreted text</cite>; <em>interpreted text
|
178
|
-
with role</em>; <tt class="docutils literal"
|
178
|
+
with role</em>; <tt class="docutils literal">inline literal text</tt>; standalone hyperlink,
|
179
179
|
<a class="reference external" href="http://docutils.sourceforge.net">http://docutils.sourceforge.net</a>; named reference, <a class="reference external" href="http://docutils.sf.net/rst.html">reStructuredText</a>;
|
180
180
|
<a class="reference external" href="http://docutils.sf.net/docs/ref/rst/restructuredtext.html">anonymous reference</a>; footnote reference, <a class="footnote-reference" href="#id1" id="id3">[1]</a>; citation reference,
|
181
181
|
<a class="citation-reference" href="#cit2002" id="id4">[CIT2002]</a>; like an inline directive; <span class="target" id="inline-internal-target">inline internal target</span>.</p>
|
@@ -199,25 +199,25 @@ with role</em>; <tt class="docutils literal"><span class="pre">inline</span> <sp
|
|
199
199
|
"error", "hint", "important", "note", "tip", "warning"</td>
|
200
200
|
</tr>
|
201
201
|
<tr><td>admonition</td>
|
202
|
-
<td>Generic titled admonition: <tt class="docutils literal"
|
202
|
+
<td>Generic titled admonition: <tt class="docutils literal">.. admonition:: By The Way</tt></td>
|
203
203
|
</tr>
|
204
204
|
<tr><td>image</td>
|
205
|
-
<td><tt class="docutils literal"
|
205
|
+
<td><tt class="docutils literal">.. image:: picture.png</tt>; many options possible</td>
|
206
206
|
</tr>
|
207
207
|
<tr><td>figure</td>
|
208
208
|
<td>Like "image", but with optional caption and legend</td>
|
209
209
|
</tr>
|
210
210
|
<tr><td>topic</td>
|
211
|
-
<td><tt class="docutils literal"
|
211
|
+
<td><tt class="docutils literal">.. topic:: Title</tt>; like a mini section</td>
|
212
212
|
</tr>
|
213
213
|
<tr><td>sidebar</td>
|
214
|
-
<td><tt class="docutils literal"
|
214
|
+
<td><tt class="docutils literal">.. sidebar:: Title</tt>; like a mini parallel document</td>
|
215
215
|
</tr>
|
216
216
|
<tr><td>parsed-literal</td>
|
217
217
|
<td>A literal block with parsed inline markup</td>
|
218
218
|
</tr>
|
219
219
|
<tr><td>rubric</td>
|
220
|
-
<td><tt class="docutils literal"
|
220
|
+
<td><tt class="docutils literal">.. rubric:: Informal Heading</tt></td>
|
221
221
|
</tr>
|
222
222
|
<tr><td>epigraph</td>
|
223
223
|
<td>Block quote with class="epigraph"</td>
|
@@ -306,7 +306,7 @@ with role</em>; <tt class="docutils literal"><span class="pre">inline</span> <sp
|
|
306
306
|
<td>Equivalent to <em>emphasis</em></td>
|
307
307
|
</tr>
|
308
308
|
<tr><td>literal</td>
|
309
|
-
<td>Equivalent to <tt class="docutils literal"
|
309
|
+
<td>Equivalent to <tt class="docutils literal">literal</tt> but processes backslash escapes</td>
|
310
310
|
</tr>
|
311
311
|
<tr><td>PEP</td>
|
312
312
|
<td>Reference to a numbered Python Enhancement Proposal</td>
|
data/test/files/test.latex
CHANGED
@@ -1,124 +1,158 @@
|
|
1
|
-
|
1
|
+
% generated by Docutils <http://docutils.sourceforge.net/>
|
2
|
+
\documentclass[a4paper,english]{article}
|
3
|
+
\usepackage{fixltx2e} % LaTeX patches, \textsubscript
|
4
|
+
\usepackage{cmap} % fix search and cut-and-paste in PDF
|
2
5
|
\usepackage{babel}
|
3
|
-
\usepackage{
|
4
|
-
\usepackage{
|
5
|
-
\usepackage{
|
6
|
-
\usepackage{ucs}
|
7
|
-
\usepackage[utf8x]{inputenc}
|
8
|
-
\usepackage{tabularx}
|
9
|
-
\usepackage{longtable}
|
10
|
-
\setlength{\extrarowheight}{2pt}
|
11
|
-
\usepackage{amsmath}
|
6
|
+
\usepackage[T1]{fontenc}
|
7
|
+
\usepackage[utf8]{inputenc}
|
8
|
+
\usepackage{ifthen}
|
12
9
|
\usepackage{graphicx}
|
13
|
-
\usepackage{color}
|
14
10
|
\usepackage{multirow}
|
15
|
-
\usepackage{
|
16
|
-
\usepackage
|
17
|
-
|
18
|
-
\newlength{\
|
19
|
-
\
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
\
|
35
|
-
\newenvironment{
|
36
|
-
{\
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
{\
|
43
|
-
|
44
|
-
\
|
45
|
-
\
|
46
|
-
\
|
47
|
-
\
|
48
|
-
\
|
49
|
-
\
|
50
|
-
\
|
51
|
-
|
52
|
-
|
53
|
-
%
|
54
|
-
|
55
|
-
\
|
56
|
-
\
|
57
|
-
|
11
|
+
\usepackage{longtable}
|
12
|
+
\usepackage{array}
|
13
|
+
\setlength{\extrarowheight}{2pt}
|
14
|
+
\newlength{\DUtablewidth} % internal use in tables
|
15
|
+
\usepackage{tabularx}
|
16
|
+
|
17
|
+
%%% User specified packages and stylesheets
|
18
|
+
|
19
|
+
%%% Fallback definitions for Docutils-specific commands
|
20
|
+
|
21
|
+
% providelength (provide a length variable and set default, if it is new)
|
22
|
+
\providecommand*{\DUprovidelength}[2]{
|
23
|
+
\ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{}
|
24
|
+
}
|
25
|
+
|
26
|
+
% docinfo (width of docinfo table)
|
27
|
+
\DUprovidelength{\DUdocinfowidth}{0.9\textwidth}
|
28
|
+
|
29
|
+
% fieldlist environment
|
30
|
+
\ifthenelse{\isundefined{\DUfieldlist}}{
|
31
|
+
\newenvironment{DUfieldlist}%
|
32
|
+
{\quote\description}
|
33
|
+
{\enddescription\endquote}
|
34
|
+
}{}
|
35
|
+
% numeric or symbol footnotes with hyperlinks
|
36
|
+
\providecommand*{\DUfootnotemark}[3]{%
|
37
|
+
\raisebox{1em}{\hypertarget{#1}{}}%
|
38
|
+
\hyperlink{#2}{\textsuperscript{#3}}%
|
39
|
+
}
|
40
|
+
\providecommand{\DUfootnotetext}[4]{%
|
41
|
+
\begingroup%
|
42
|
+
\renewcommand{\thefootnote}{%
|
43
|
+
\protect\raisebox{1em}{\protect\hypertarget{#1}{}}%
|
44
|
+
\protect\hyperlink{#2}{#3}}%
|
45
|
+
\footnotetext{#4}%
|
46
|
+
\endgroup%
|
47
|
+
}
|
48
|
+
|
49
|
+
% lineblock environment
|
50
|
+
\DUprovidelength{\DUlineblockindent}{2.5em}
|
51
|
+
\ifthenelse{\isundefined{\DUlineblock}}{
|
52
|
+
\newenvironment{DUlineblock}[1]{%
|
53
|
+
\list{}{\setlength{\partopsep}{\parskip}
|
54
|
+
\addtolength{\partopsep}{\baselineskip}
|
55
|
+
\setlength{\topsep}{0pt}
|
56
|
+
\setlength{\itemsep}{0.15\baselineskip}
|
57
|
+
\setlength{\parsep}{0pt}
|
58
|
+
\setlength{\leftmargin}{#1}}
|
59
|
+
\raggedright
|
60
|
+
}
|
61
|
+
{\endlist}
|
62
|
+
}{}
|
63
|
+
|
64
|
+
% optionlist environment
|
65
|
+
\providecommand*{\DUoptionlistlabel}[1]{\bf #1 \hfill}
|
66
|
+
\DUprovidelength{\DUoptionlistindent}{3cm}
|
67
|
+
\ifthenelse{\isundefined{\DUoptionlist}}{
|
68
|
+
\newenvironment{DUoptionlist}{%
|
69
|
+
\list{}{\setlength{\labelwidth}{\DUoptionlistindent}
|
70
|
+
\setlength{\rightmargin}{1cm}
|
71
|
+
\setlength{\leftmargin}{\rightmargin}
|
72
|
+
\addtolength{\leftmargin}{\labelwidth}
|
73
|
+
\addtolength{\leftmargin}{\labelsep}
|
74
|
+
\renewcommand{\makelabel}{\DUoptionlistlabel}}
|
75
|
+
}
|
76
|
+
{\endlist}
|
77
|
+
}{}
|
78
|
+
|
79
|
+
% titlereference role
|
80
|
+
\providecommand*{\DUroletitlereference}[1]{\textsl{#1}}
|
81
|
+
|
82
|
+
% hyperlinks:
|
58
83
|
\ifthenelse{\isundefined{\hypersetup}}{
|
59
|
-
\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref}
|
84
|
+
\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref}
|
60
85
|
}{}
|
61
|
-
\title{The reStructuredText Cheat Sheet: Syntax Reminders}
|
62
|
-
\author{}
|
63
|
-
\date{}
|
64
86
|
\hypersetup{
|
65
|
-
pdftitle={The reStructuredText Cheat Sheet: Syntax Reminders},
|
66
|
-
pdfauthor={David Goodger
|
87
|
+
pdftitle={The reStructuredText Cheat Sheet: Syntax Reminders},
|
88
|
+
pdfauthor={David Goodger <goodger@python.org>}
|
67
89
|
}
|
68
|
-
|
90
|
+
|
91
|
+
%%% Body
|
69
92
|
\begin{document}
|
93
|
+
|
94
|
+
% Document title
|
95
|
+
\title{The reStructuredText Cheat Sheet: Syntax Reminders%
|
96
|
+
\phantomsection%
|
97
|
+
\label{the-restructuredtext-cheat-sheet-syntax-reminders}}
|
98
|
+
\author{}
|
99
|
+
\date{}
|
70
100
|
\maketitle
|
71
|
-
|
101
|
+
|
102
|
+
% Docinfo
|
72
103
|
\begin{center}
|
73
|
-
\begin{tabularx}{\
|
104
|
+
\begin{tabularx}{\DUdocinfowidth}{lX}
|
74
105
|
\textbf{Info}: &
|
75
|
-
|
106
|
+
See <\href{http://docutils.sf.net/rst.html}{http://docutils.sf.net/rst.html}> for introductory docs.
|
107
|
+
\\
|
76
108
|
\textbf{Author}: &
|
77
|
-
David Goodger
|
109
|
+
David Goodger <\href{mailto:goodger@python.org}{goodger@python.org}> \\
|
78
110
|
\textbf{Date}: &
|
79
111
|
2006-01-23 \\
|
80
112
|
\textbf{Revision}: &
|
81
113
|
4321 \\
|
82
114
|
\textbf{Description}: &
|
83
|
-
|
115
|
+
This is a ``docinfo block'', or bibliographic field list
|
116
|
+
\\
|
84
117
|
\end{tabularx}
|
85
118
|
\end{center}
|
86
119
|
|
87
|
-
\setlength{\locallinewidth}{\linewidth}
|
88
|
-
|
89
|
-
|
90
|
-
|
91
120
|
|
92
121
|
%___________________________________________________________________________
|
93
122
|
|
94
|
-
\
|
95
|
-
\
|
96
|
-
\section
|
97
|
-
\label{section-structure}
|
123
|
+
\section*{Section Structure%
|
124
|
+
\phantomsection%
|
125
|
+
\addcontentsline{toc}{section}{Section Structure}%
|
126
|
+
\label{section-structure}%
|
127
|
+
}
|
98
128
|
|
99
|
-
Section titles are underlined or overlined
|
129
|
+
Section titles are underlined or overlined \& underlined.
|
100
130
|
|
101
131
|
|
102
132
|
%___________________________________________________________________________
|
103
133
|
|
104
|
-
\
|
105
|
-
\
|
106
|
-
\section
|
107
|
-
\label{body-elements}
|
134
|
+
\section*{Body Elements%
|
135
|
+
\phantomsection%
|
136
|
+
\addcontentsline{toc}{section}{Body Elements}%
|
137
|
+
\label{body-elements}%
|
138
|
+
}
|
108
139
|
|
109
140
|
Grid table:
|
110
141
|
|
111
142
|
\leavevmode
|
112
|
-
\
|
143
|
+
\setlength{\DUtablewidth}{\linewidth}
|
144
|
+
\begin{longtable}[c]{|p{0.389\DUtablewidth}|p{0.424\DUtablewidth}|}
|
113
145
|
\hline
|
114
146
|
|
115
147
|
Paragraphs are flush-left,
|
116
148
|
separated by blank lines.
|
149
|
+
%
|
117
150
|
\begin{quote}
|
118
151
|
|
119
152
|
Block quotes are indented.
|
153
|
+
|
120
154
|
\end{quote}
|
121
|
-
& \multirow{2}{0.42\
|
155
|
+
& \multirow{2}{0.42\DUtablewidth}{%
|
122
156
|
Literal block, preceded by ``::'':
|
123
157
|
|
124
158
|
{\ttfamily \raggedright \noindent
|
@@ -132,19 +166,22 @@ or:
|
|
132
166
|
}
|
133
167
|
} \\
|
134
168
|
\cline{1-1}
|
135
|
-
|
136
|
-
|
169
|
+
|
170
|
+
{\ttfamily \raggedright \noindent
|
171
|
+
>{}>{}>~print~'Doctest~block'\\
|
172
|
+
Doctest~block
|
173
|
+
}
|
137
174
|
& \\
|
138
175
|
\hline
|
139
176
|
\multicolumn{2}{|l|}{
|
140
|
-
\begin{
|
141
|
-
\item[] Line blocks preserve line breaks
|
142
|
-
\item[]
|
143
|
-
\begin{
|
177
|
+
\begin{DUlineblock}{0em}
|
178
|
+
\item[] Line blocks preserve line breaks \& indents. {[}new in 0.3.6{]}
|
179
|
+
\item[]
|
180
|
+
\begin{DUlineblock}{\DUlineblockindent}
|
144
181
|
\item[] Useful for addresses, verse, and adornment-free lists; long
|
145
182
|
lines can be wrapped with continuation lines.
|
146
|
-
\end{
|
147
|
-
\end{
|
183
|
+
\end{DUlineblock}
|
184
|
+
\end{DUlineblock}
|
148
185
|
} \\
|
149
186
|
\hline
|
150
187
|
\end{longtable}
|
@@ -152,20 +189,33 @@ lines can be wrapped with continuation lines.
|
|
152
189
|
Simple tables:
|
153
190
|
|
154
191
|
\leavevmode
|
155
|
-
\
|
192
|
+
\setlength{\DUtablewidth}{\linewidth}
|
193
|
+
\begin{longtable}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
194
|
+
\hline
|
195
|
+
\textbf{%
|
196
|
+
List Type
|
197
|
+
} & \textbf{%
|
198
|
+
Examples
|
199
|
+
} \\
|
200
|
+
\hline
|
201
|
+
\endfirsthead
|
156
202
|
\hline
|
157
|
-
\textbf{
|
203
|
+
\textbf{%
|
158
204
|
List Type
|
159
|
-
} & \textbf{
|
205
|
+
} & \textbf{%
|
160
206
|
Examples
|
161
207
|
} \\
|
162
208
|
\hline
|
163
209
|
\endhead
|
210
|
+
\multicolumn{2}{c}{\hfill ... continued on next page} \\
|
211
|
+
\endfoot
|
212
|
+
\endlastfoot
|
164
213
|
|
165
214
|
Bullet list
|
166
|
-
&
|
167
|
-
\
|
168
|
-
|
215
|
+
& %
|
216
|
+
\begin{itemize}
|
217
|
+
|
218
|
+
\item items begin with ``-'', ``+'', or ``*''
|
169
219
|
|
170
220
|
\end{itemize}
|
171
221
|
\\
|
@@ -178,18 +228,17 @@ Enumerated list
|
|
178
228
|
\usecounter{listcnt0}
|
179
229
|
\setlength{\rightmargin}{\leftmargin}
|
180
230
|
}
|
181
|
-
\item {}
|
182
|
-
items use any variation of ``1.'', ``A)'', and ``(i)''
|
183
231
|
|
184
|
-
\item
|
185
|
-
also auto-enumerated
|
232
|
+
\item items use any variation of ``1.'', ``A)'', and ``(i)''
|
186
233
|
|
234
|
+
\item also auto-enumerated
|
187
235
|
\end{list}
|
188
236
|
\\
|
189
237
|
\hline
|
190
238
|
|
191
239
|
Definition list
|
192
|
-
&
|
240
|
+
& %
|
241
|
+
\begin{description}
|
193
242
|
\item[{Term is flush-left}] \leavevmode (\textbf{optional classifier})
|
194
243
|
|
195
244
|
Definition is indented, no blank line between
|
@@ -199,54 +248,67 @@ Definition is indented, no blank line between
|
|
199
248
|
\hline
|
200
249
|
|
201
250
|
Field list
|
202
|
-
&
|
203
|
-
\begin{
|
204
|
-
\item
|
251
|
+
& %
|
252
|
+
\begin{DUfieldlist}
|
253
|
+
\item[{field name:}]
|
205
254
|
field body
|
206
255
|
|
207
|
-
|
208
|
-
\end{description}
|
209
|
-
\end{quote}
|
256
|
+
\end{DUfieldlist}
|
210
257
|
\\
|
211
258
|
\hline
|
212
259
|
|
213
260
|
Option list
|
214
|
-
&
|
215
|
-
\
|
216
|
-
|
217
|
-
\
|
261
|
+
& %
|
262
|
+
\begin{DUoptionlist}
|
263
|
+
|
264
|
+
\item[-o] at least 2 spaces between option \& description
|
265
|
+
|
266
|
+
\end{DUoptionlist}
|
218
267
|
\\
|
219
268
|
\hline
|
220
269
|
\end{longtable}
|
221
270
|
|
222
271
|
\leavevmode
|
223
|
-
\
|
272
|
+
\setlength{\DUtablewidth}{\linewidth}
|
273
|
+
\begin{longtable}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
274
|
+
\hline
|
275
|
+
\textbf{%
|
276
|
+
Explicit Markup
|
277
|
+
} & \textbf{%
|
278
|
+
Examples (visible in the \href{cheatsheet.txt}{text source})
|
279
|
+
} \\
|
280
|
+
\hline
|
281
|
+
\endfirsthead
|
224
282
|
\hline
|
225
|
-
\textbf{
|
283
|
+
\textbf{%
|
226
284
|
Explicit Markup
|
227
|
-
} & \textbf{
|
285
|
+
} & \textbf{%
|
228
286
|
Examples (visible in the \href{cheatsheet.txt}{text source})
|
229
287
|
} \\
|
230
288
|
\hline
|
231
289
|
\endhead
|
290
|
+
\multicolumn{2}{c}{\hfill ... continued on next page} \\
|
291
|
+
\endfoot
|
292
|
+
\endlastfoot
|
232
293
|
|
233
294
|
Footnote
|
234
|
-
&
|
235
|
-
|
236
|
-
|
237
|
-
|
295
|
+
& %
|
296
|
+
\DUfootnotetext{id1}{id3}{1}{
|
297
|
+
Manually numbered or {[}\#{]} auto-numbered
|
298
|
+
(even {[}\#labelled{]}) or {[}*{]} auto-symbol
|
299
|
+
}
|
238
300
|
\\
|
239
301
|
\hline
|
240
302
|
|
241
303
|
Citation
|
242
|
-
& \begin{figure}[b]\hypertarget{cit2002}[CIT2002]
|
304
|
+
& \begin{figure}[b]\raisebox{1em}{\hypertarget{cit2002}{}}[CIT2002]
|
243
305
|
A citation.
|
244
306
|
\end{figure}
|
245
307
|
\\
|
246
308
|
\hline
|
247
309
|
|
248
310
|
Hyperlink Target
|
249
|
-
&
|
311
|
+
& \\
|
250
312
|
\hline
|
251
313
|
|
252
314
|
Anonymous Target
|
@@ -264,13 +326,14 @@ Substitution Def
|
|
264
326
|
\hline
|
265
327
|
|
266
328
|
Comment
|
267
|
-
&
|
329
|
+
&
|
330
|
+
% is anything else
|
268
331
|
\\
|
269
332
|
\hline
|
270
333
|
|
271
334
|
Empty Comment
|
272
335
|
&
|
273
|
-
(``..'' on a line by itself, with blank lines before
|
336
|
+
(``..'' on a line by itself, with blank lines before \& after,
|
274
337
|
used to separate indentation contexts)
|
275
338
|
\\
|
276
339
|
\hline
|
@@ -279,37 +342,52 @@ used to separate indentation contexts)
|
|
279
342
|
|
280
343
|
%___________________________________________________________________________
|
281
344
|
|
282
|
-
\
|
283
|
-
\
|
284
|
-
\section
|
285
|
-
\label{inline-markup}
|
345
|
+
\section*{Inline Markup%
|
346
|
+
\phantomsection%
|
347
|
+
\addcontentsline{toc}{section}{Inline Markup}%
|
348
|
+
\label{inline-markup}%
|
349
|
+
}
|
286
350
|
|
287
|
-
\emph{emphasis}; \textbf{strong emphasis}; \
|
351
|
+
\emph{emphasis}; \textbf{strong emphasis}; \DUroletitlereference{interpreted text}; \emph{interpreted text
|
288
352
|
with role}; \texttt{inline literal text}; standalone hyperlink,
|
289
353
|
\href{http://docutils.sourceforge.net}{http://docutils.sourceforge.net}; named reference, \href{http://docutils.sf.net/rst.html}{reStructuredText};
|
290
|
-
\href{http://docutils.sf.net/docs/ref/rst/restructuredtext.html}{anonymous reference}; footnote reference,\
|
291
|
-
[\hyperlink{cit2002}{CIT2002}]; like an inline directive;
|
354
|
+
\href{http://docutils.sf.net/docs/ref/rst/restructuredtext.html}{anonymous reference}; footnote reference,\DUfootnotemark{id3}{id1}{1}; citation reference,
|
355
|
+
[\hyperlink{cit2002}{CIT2002}]; like an inline directive; %
|
356
|
+
\phantomsection\label{inline-internal-target}inline internal target.
|
292
357
|
|
293
358
|
|
294
359
|
%___________________________________________________________________________
|
295
360
|
|
296
|
-
\
|
297
|
-
\
|
298
|
-
\section
|
299
|
-
\label{directive-quick-reference}
|
361
|
+
\section*{Directive Quick Reference%
|
362
|
+
\phantomsection%
|
363
|
+
\addcontentsline{toc}{section}{Directive Quick Reference}%
|
364
|
+
\label{directive-quick-reference}%
|
365
|
+
}
|
300
366
|
|
301
|
-
See
|
367
|
+
See <\href{http://docutils.sf.net/docs/ref/rst/directives.html}{http://docutils.sf.net/docs/ref/rst/directives.html}> for full info.
|
302
368
|
|
303
369
|
\leavevmode
|
304
|
-
\
|
370
|
+
\setlength{\DUtablewidth}{\linewidth}
|
371
|
+
\begin{longtable}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
305
372
|
\hline
|
306
|
-
\textbf{
|
373
|
+
\textbf{%
|
307
374
|
Directive Name
|
308
|
-
} & \textbf{
|
375
|
+
} & \textbf{%
|
376
|
+
Description (Docutils version added to, in {[}brackets{]})
|
377
|
+
} \\
|
378
|
+
\hline
|
379
|
+
\endfirsthead
|
380
|
+
\hline
|
381
|
+
\textbf{%
|
382
|
+
Directive Name
|
383
|
+
} & \textbf{%
|
309
384
|
Description (Docutils version added to, in {[}brackets{]})
|
310
385
|
} \\
|
311
386
|
\hline
|
312
387
|
\endhead
|
388
|
+
\multicolumn{2}{c}{\hfill ... continued on next page} \\
|
389
|
+
\endfoot
|
390
|
+
\endlastfoot
|
313
391
|
|
314
392
|
attention
|
315
393
|
&
|
@@ -496,23 +574,36 @@ Set the metadata document title {[}0.3.10{]}
|
|
496
574
|
|
497
575
|
%___________________________________________________________________________
|
498
576
|
|
499
|
-
\
|
500
|
-
\
|
501
|
-
\section
|
502
|
-
\label{interpreted-text-role-quick-reference}
|
577
|
+
\section*{Interpreted Text Role Quick Reference%
|
578
|
+
\phantomsection%
|
579
|
+
\addcontentsline{toc}{section}{Interpreted Text Role Quick Reference}%
|
580
|
+
\label{interpreted-text-role-quick-reference}%
|
581
|
+
}
|
503
582
|
|
504
|
-
See
|
583
|
+
See <\href{http://docutils.sf.net/docs/ref/rst/roles.html}{http://docutils.sf.net/docs/ref/rst/roles.html}> for full info.
|
505
584
|
|
506
585
|
\leavevmode
|
507
|
-
\
|
586
|
+
\setlength{\DUtablewidth}{\linewidth}
|
587
|
+
\begin{longtable}[c]{|p{0.203\DUtablewidth}|p{0.726\DUtablewidth}|}
|
588
|
+
\hline
|
589
|
+
\textbf{%
|
590
|
+
Role Name
|
591
|
+
} & \textbf{%
|
592
|
+
Description
|
593
|
+
} \\
|
594
|
+
\hline
|
595
|
+
\endfirsthead
|
508
596
|
\hline
|
509
|
-
\textbf{
|
597
|
+
\textbf{%
|
510
598
|
Role Name
|
511
|
-
} & \textbf{
|
599
|
+
} & \textbf{%
|
512
600
|
Description
|
513
601
|
} \\
|
514
602
|
\hline
|
515
603
|
\endhead
|
604
|
+
\multicolumn{2}{c}{\hfill ... continued on next page} \\
|
605
|
+
\endfoot
|
606
|
+
\endlastfoot
|
516
607
|
|
517
608
|
emphasis
|
518
609
|
&
|
data/test/test_rbst.rb
CHANGED
@@ -18,6 +18,26 @@ class TestRbST < Test::Unit::TestCase
|
|
18
18
|
assert converter.convert
|
19
19
|
end
|
20
20
|
|
21
|
+
should "convert with custom executable" do
|
22
|
+
executables = {:html => "/some/path/2html.py"}
|
23
|
+
default_executables = RbST.executables
|
24
|
+
RbST.executables = executables
|
25
|
+
converter = RbST.new(@file)
|
26
|
+
converter.expects(:execute).with("python #{executables[:html]}").returns(true)
|
27
|
+
assert converter.to_html
|
28
|
+
RbST.executables = default_executables
|
29
|
+
end
|
30
|
+
|
31
|
+
should "raise error when passed bad executable key" do
|
32
|
+
executables = {:markdown => "/some/path/2markdown.py"}
|
33
|
+
begin
|
34
|
+
RbST.executables = executables
|
35
|
+
flunk
|
36
|
+
rescue ArgumentError
|
37
|
+
assert true
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
21
41
|
should "convert ReST to html" do
|
22
42
|
html = RbST.new(@rst_file).to_html
|
23
43
|
assert_equal html, File.read(@html_file)
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 3
|
9
|
+
version: 0.1.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- William Melody
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-05-12 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|