RbST 0.2.0 → 0.3.0
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/RbST.gemspec +2 -2
- data/VERSION +1 -1
- data/lib/rbst.rb +6 -6
- data/lib/rst2parts/rst2html.py +2 -1
- data/lib/rst2parts/transform.py +1 -1
- data/test/files/test.html +1 -1
- data/test/files/test.latex +42 -60
- data/test/test_rbst.rb +13 -6
- metadata +3 -3
data/RbST.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "RbST"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
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 = "2012-11-
|
12
|
+
s.date = "2012-11-02"
|
13
13
|
s.description = "A simple Ruby wrapper for processing reStructuredText via Python's Docutils"
|
14
14
|
s.email = "hi@williammelody.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/rbst.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
2
|
|
3
3
|
class RbST
|
4
4
|
|
@@ -82,10 +82,10 @@ protected
|
|
82
82
|
|
83
83
|
def execute(command)
|
84
84
|
output = ''
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
output =
|
85
|
+
IO.popen(command, "w+") do |f|
|
86
|
+
f.puts @target
|
87
|
+
f.close_write
|
88
|
+
output = f.read
|
89
89
|
end
|
90
90
|
output
|
91
91
|
end
|
@@ -106,4 +106,4 @@ protected
|
|
106
106
|
string + (flag.length == 1 ? " -#{flag} #{val}" : " --#{flag}=#{val}")
|
107
107
|
end
|
108
108
|
end
|
109
|
-
end
|
109
|
+
end
|
data/lib/rst2parts/rst2html.py
CHANGED
@@ -6,6 +6,7 @@ try:
|
|
6
6
|
except:
|
7
7
|
pass
|
8
8
|
|
9
|
+
import sys
|
9
10
|
from transform import transform
|
10
11
|
from docutils.writers.html4css1 import Writer
|
11
12
|
|
@@ -13,4 +14,4 @@ def main():
|
|
13
14
|
return transform(writer=Writer(), part='html_body')
|
14
15
|
|
15
16
|
if __name__ == '__main__':
|
16
|
-
|
17
|
+
sys.stdout.write(main())
|
data/lib/rst2parts/transform.py
CHANGED
data/test/files/test.html
CHANGED
data/test/files/test.latex
CHANGED
@@ -1,19 +1,24 @@
|
|
1
|
+
\documentclass[a4paper]{article}
|
1
2
|
% generated by Docutils <http://docutils.sourceforge.net/>
|
2
|
-
\documentclass[a4paper,english]{article}
|
3
3
|
\usepackage{fixltx2e} % LaTeX patches, \textsubscript
|
4
|
-
\usepackage{cmap} % fix search and cut-and-paste in
|
5
|
-
\usepackage{
|
4
|
+
\usepackage{cmap} % fix search and cut-and-paste in Acrobat
|
5
|
+
\usepackage{ifthen}
|
6
6
|
\usepackage[T1]{fontenc}
|
7
7
|
\usepackage[utf8]{inputenc}
|
8
|
-
\usepackage{ifthen}
|
9
8
|
\usepackage{graphicx}
|
10
9
|
\usepackage{multirow}
|
11
|
-
\
|
12
|
-
\usepackage{array}
|
10
|
+
\setcounter{secnumdepth}{0}
|
11
|
+
\usepackage{longtable,ltcaption,array}
|
13
12
|
\setlength{\extrarowheight}{2pt}
|
14
13
|
\newlength{\DUtablewidth} % internal use in tables
|
15
14
|
\usepackage{tabularx}
|
16
15
|
|
16
|
+
%%% Custom LaTeX preamble
|
17
|
+
% PDF Standard Fonts
|
18
|
+
\usepackage{mathptmx} % Times
|
19
|
+
\usepackage[scaled=.90]{helvet}
|
20
|
+
\usepackage{courier}
|
21
|
+
|
17
22
|
%%% User specified packages and stylesheets
|
18
23
|
|
19
24
|
%%% Fallback definitions for Docutils-specific commands
|
@@ -82,28 +87,29 @@
|
|
82
87
|
% hyperlinks:
|
83
88
|
\ifthenelse{\isundefined{\hypersetup}}{
|
84
89
|
\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref}
|
90
|
+
\urlstyle{same} % normal text font (alternatives: tt, rm, sf)
|
85
91
|
}{}
|
86
92
|
\hypersetup{
|
87
93
|
pdftitle={The reStructuredText Cheat Sheet: Syntax Reminders},
|
88
94
|
pdfauthor={David Goodger <goodger@python.org>}
|
89
95
|
}
|
90
96
|
|
91
|
-
%%%
|
92
|
-
\
|
93
|
-
|
94
|
-
% Document title
|
95
|
-
\title{The reStructuredText Cheat Sheet: Syntax Reminders%
|
96
|
-
\phantomsection%
|
97
|
+
%%% Title Data
|
98
|
+
\title{\phantomsection%
|
99
|
+
The \href{http://docutils.sf.net/rst.html}{reStructuredText} Cheat Sheet: Syntax Reminders%
|
97
100
|
\label{the-restructuredtext-cheat-sheet-syntax-reminders}}
|
98
101
|
\author{}
|
99
102
|
\date{}
|
103
|
+
|
104
|
+
%%% Body
|
105
|
+
\begin{document}
|
100
106
|
\maketitle
|
101
107
|
|
102
108
|
% Docinfo
|
103
109
|
\begin{center}
|
104
110
|
\begin{tabularx}{\DUdocinfowidth}{lX}
|
105
111
|
\textbf{Info}: &
|
106
|
-
See <\
|
112
|
+
See <\url{http://docutils.sf.net/rst.html}> for introductory docs.
|
107
113
|
\\
|
108
114
|
\textbf{Author}: &
|
109
115
|
David Goodger <\href{mailto:goodger@python.org}{goodger@python.org}> \\
|
@@ -118,30 +124,21 @@ This is a ``docinfo block'', or bibliographic field list
|
|
118
124
|
\end{center}
|
119
125
|
|
120
126
|
|
121
|
-
%
|
122
|
-
|
123
|
-
\section*{Section Structure%
|
124
|
-
\phantomsection%
|
125
|
-
\addcontentsline{toc}{section}{Section Structure}%
|
127
|
+
\section{Section Structure%
|
126
128
|
\label{section-structure}%
|
127
129
|
}
|
128
130
|
|
129
131
|
Section titles are underlined or overlined \& underlined.
|
130
132
|
|
131
133
|
|
132
|
-
%
|
133
|
-
|
134
|
-
\section*{Body Elements%
|
135
|
-
\phantomsection%
|
136
|
-
\addcontentsline{toc}{section}{Body Elements}%
|
134
|
+
\section{Body Elements%
|
137
135
|
\label{body-elements}%
|
138
136
|
}
|
139
137
|
|
140
138
|
Grid table:
|
141
139
|
|
142
|
-
\leavevmode
|
143
140
|
\setlength{\DUtablewidth}{\linewidth}
|
144
|
-
\begin{longtable}[c]{|p{0.389\DUtablewidth}|p{0.424\DUtablewidth}|}
|
141
|
+
\begin{longtable*}[c]{|p{0.389\DUtablewidth}|p{0.424\DUtablewidth}|}
|
145
142
|
\hline
|
146
143
|
|
147
144
|
Paragraphs are flush-left,
|
@@ -173,7 +170,7 @@ Doctest~block
|
|
173
170
|
}
|
174
171
|
& \\
|
175
172
|
\hline
|
176
|
-
\multicolumn{2}{|
|
173
|
+
\multicolumn{2}{|p{0.81\DUtablewidth}|}{
|
177
174
|
\begin{DUlineblock}{0em}
|
178
175
|
\item[] Line blocks preserve line breaks \& indents. {[}new in 0.3.6{]}
|
179
176
|
\item[]
|
@@ -184,13 +181,12 @@ lines can be wrapped with continuation lines.
|
|
184
181
|
\end{DUlineblock}
|
185
182
|
} \\
|
186
183
|
\hline
|
187
|
-
\end{longtable}
|
184
|
+
\end{longtable*}
|
188
185
|
|
189
186
|
Simple tables:
|
190
187
|
|
191
|
-
\leavevmode
|
192
188
|
\setlength{\DUtablewidth}{\linewidth}
|
193
|
-
\begin{longtable}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
189
|
+
\begin{longtable*}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
194
190
|
\hline
|
195
191
|
\textbf{%
|
196
192
|
List Type
|
@@ -266,11 +262,10 @@ Option list
|
|
266
262
|
\end{DUoptionlist}
|
267
263
|
\\
|
268
264
|
\hline
|
269
|
-
\end{longtable}
|
265
|
+
\end{longtable*}
|
270
266
|
|
271
|
-
\leavevmode
|
272
267
|
\setlength{\DUtablewidth}{\linewidth}
|
273
|
-
\begin{longtable}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
268
|
+
\begin{longtable*}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
274
269
|
\hline
|
275
270
|
\textbf{%
|
276
271
|
Explicit Markup
|
@@ -293,7 +288,7 @@ Examples (visible in the \href{cheatsheet.txt}{text source})
|
|
293
288
|
|
294
289
|
Footnote
|
295
290
|
& %
|
296
|
-
\DUfootnotetext{id1}{id3}{1}{
|
291
|
+
\DUfootnotetext{id1}{id3}{1}{%
|
297
292
|
Manually numbered or {[}\#{]} auto-numbered
|
298
293
|
(even {[}\#labelled{]}) or {[}*{]} auto-symbol
|
299
294
|
}
|
@@ -337,38 +332,29 @@ Empty Comment
|
|
337
332
|
used to separate indentation contexts)
|
338
333
|
\\
|
339
334
|
\hline
|
340
|
-
\end{longtable}
|
341
|
-
|
335
|
+
\end{longtable*}
|
342
336
|
|
343
|
-
%___________________________________________________________________________
|
344
337
|
|
345
|
-
\section
|
346
|
-
\phantomsection%
|
347
|
-
\addcontentsline{toc}{section}{Inline Markup}%
|
338
|
+
\section{Inline Markup%
|
348
339
|
\label{inline-markup}%
|
349
340
|
}
|
350
341
|
|
351
342
|
\emph{emphasis}; \textbf{strong emphasis}; \DUroletitlereference{interpreted text}; \emph{interpreted text
|
352
343
|
with role}; \texttt{inline literal text}; standalone hyperlink,
|
353
|
-
\
|
344
|
+
\url{http://docutils.sourceforge.net}; named reference, \href{http://docutils.sf.net/rst.html}{reStructuredText};
|
354
345
|
\href{http://docutils.sf.net/docs/ref/rst/restructuredtext.html}{anonymous reference}; footnote reference,\DUfootnotemark{id3}{id1}{1}; citation reference,
|
355
|
-
|
346
|
+
\hyperlink{cit2002}{[CIT2002]}; like an inline directive; %
|
356
347
|
\phantomsection\label{inline-internal-target}inline internal target.
|
357
348
|
|
358
349
|
|
359
|
-
%
|
360
|
-
|
361
|
-
\section*{Directive Quick Reference%
|
362
|
-
\phantomsection%
|
363
|
-
\addcontentsline{toc}{section}{Directive Quick Reference}%
|
350
|
+
\section{Directive Quick Reference%
|
364
351
|
\label{directive-quick-reference}%
|
365
352
|
}
|
366
353
|
|
367
|
-
See <\
|
354
|
+
See <\url{http://docutils.sf.net/docs/ref/rst/directives.html}> for full info.
|
368
355
|
|
369
|
-
\leavevmode
|
370
356
|
\setlength{\DUtablewidth}{\linewidth}
|
371
|
-
\begin{longtable}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
357
|
+
\begin{longtable*}[c]{|p{0.203\DUtablewidth}|p{0.714\DUtablewidth}|}
|
372
358
|
\hline
|
373
359
|
\textbf{%
|
374
360
|
Directive Name
|
@@ -569,22 +555,17 @@ title
|
|
569
555
|
Set the metadata document title {[}0.3.10{]}
|
570
556
|
\\
|
571
557
|
\hline
|
572
|
-
\end{longtable}
|
573
|
-
|
558
|
+
\end{longtable*}
|
574
559
|
|
575
|
-
%___________________________________________________________________________
|
576
560
|
|
577
|
-
\section
|
578
|
-
\phantomsection%
|
579
|
-
\addcontentsline{toc}{section}{Interpreted Text Role Quick Reference}%
|
561
|
+
\section{Interpreted Text Role Quick Reference%
|
580
562
|
\label{interpreted-text-role-quick-reference}%
|
581
563
|
}
|
582
564
|
|
583
|
-
See <\
|
565
|
+
See <\url{http://docutils.sf.net/docs/ref/rst/roles.html}> for full info.
|
584
566
|
|
585
|
-
\leavevmode
|
586
567
|
\setlength{\DUtablewidth}{\linewidth}
|
587
|
-
\begin{longtable}[c]{|p{0.203\DUtablewidth}|p{0.726\DUtablewidth}|}
|
568
|
+
\begin{longtable*}[c]{|p{0.203\DUtablewidth}|p{0.726\DUtablewidth}|}
|
588
569
|
\hline
|
589
570
|
\textbf{%
|
590
571
|
Role Name
|
@@ -658,6 +639,7 @@ title
|
|
658
639
|
Title reference (book, etc.); standard default role
|
659
640
|
\\
|
660
641
|
\hline
|
661
|
-
\end{longtable}
|
642
|
+
\end{longtable*}
|
643
|
+
|
644
|
+
\end{document}
|
662
645
|
|
663
|
-
\end{document}
|
data/test/test_rbst.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'helper'
|
2
4
|
require 'mocha'
|
3
5
|
|
@@ -58,23 +60,28 @@ class TestRbST < Test::Unit::TestCase
|
|
58
60
|
|
59
61
|
should "recognize strip_comments option" do
|
60
62
|
html_with_comment = RbST.convert(".. comment")
|
61
|
-
assert_equal html_with_comment, %Q{<div class
|
63
|
+
assert_equal html_with_comment, %Q{<div class=\"document\">\n<!-- comment -->\n</div>\n}
|
62
64
|
html_without_comment = RbST.convert(".. comment", 'strip-comments')
|
63
|
-
assert_equal html_without_comment, %Q{<div class
|
65
|
+
assert_equal html_without_comment, %Q{<div class=\"document\">\n</div>\n}
|
64
66
|
end
|
65
67
|
|
66
68
|
should "recognize cloak_email_addresses option" do
|
67
69
|
html_with_uncloaked_email = RbST.convert("steve@mac.com")
|
68
|
-
assert_equal %Q{<div class
|
70
|
+
assert_equal %Q{<div class=\"document\">\n<p><a class=\"reference external\" href=\"mailto:steve@mac.com\">steve@mac.com</a></p>\n</div>\n}, html_with_uncloaked_email
|
69
71
|
html_with_cloaked_email = RbST.convert("steve@mac.com", 'cloak-email-addresses')
|
70
|
-
assert_equal %Q{<div class
|
72
|
+
assert_equal %Q{<div class=\"document\">\n<p><a class=\"reference external\" href=\"mailto:steve%40mac.com\">steve<span>@</span>mac<span>.</span>com</a></p>\n</div>\n}, html_with_cloaked_email
|
71
73
|
end
|
72
74
|
|
73
75
|
should "recognize part option" do
|
74
76
|
html_body = RbST.convert("hello world", :part => :html_body)
|
75
|
-
assert_equal %Q{<div class
|
77
|
+
assert_equal %Q{<div class=\"document\">\n<p>hello world</p>\n</div>\n}, html_body
|
76
78
|
fragment = RbST.convert("hello world", :part => :fragment)
|
77
|
-
assert_equal %Q{<p>hello world</p
|
79
|
+
assert_equal %Q{<p>hello world</p>\n}, fragment
|
80
|
+
end
|
81
|
+
|
82
|
+
should "convert unicode" do
|
83
|
+
output = RbST.convert("Hello ☃", :part => :fragment)
|
84
|
+
assert_equal %Q{<p>Hello ☃</p>\n}, output
|
78
85
|
end
|
79
86
|
|
80
87
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: RbST
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jeweler
|
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '0'
|
117
117
|
segments:
|
118
118
|
- 0
|
119
|
-
hash:
|
119
|
+
hash: 2317176860731085124
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
none: false
|
122
122
|
requirements:
|