livetext 0.8.40 → 0.8.41
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.lt3 +2 -0
- data/README.md +99 -117
- data/dsl/bookish.rb +3 -0
- data/dsl/liveblog.rb +12 -6
- data/dsl/tutorial.rb +7 -9
- data/lib/livetext.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ffe8c25b35e4833fc79866ea86456838dd5d2f036a5274a523562daf9de949d5
|
4
|
+
data.tar.gz: 43a358ca0195282039dd6dc952ca8cb73e3d044fe3d2771f22cdcb309258baeb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e368d77a3b35ae82555c46ff3fef124022f7bfd460ae9f37510d73213c49f4ed566982f88e220df331112bdee6dc3ba9ab54037359f6d0ac30a3f3560e412672
|
7
|
+
data.tar.gz: 1d85bd5b6a820294e895800f901373b1ce351bb264ff3ea76e96c7772025d0acc3d43419df19d25bfe70679702afee6b4346ebba78fc02fa20dcf1ae30ff61a6
|
data/README.lt3
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
<style>
|
2
|
+
pre {font-size: 14; bold }
|
3
|
+
tt {font-size: 14; bold }
|
4
|
+
</style>
|
1
5
|
# Livetext: A smart processor for text
|
2
|
-
<p>
|
3
|
-
|
4
6
|
<b>This README is currently mangled. Fixes coming soon!</b>
|
5
7
|
<p>
|
6
8
|
|
@@ -12,8 +14,6 @@ Why is this special? It's very flexible, very extensible, and it's extensible <i
|
|
12
14
|
<p>
|
13
15
|
|
14
16
|
### Why Livetext?
|
15
|
-
<p>
|
16
|
-
|
17
17
|
Livetext grew out of several motivations. One was a desire for a markup language that would permit
|
18
18
|
me to write articles (and even books) in my own way and on my own terms. I've done this more
|
19
19
|
than once (and I know others who have, as well).
|
@@ -30,8 +30,6 @@ similar to the way we began several years ago to view HTML as a subset of XML.
|
|
30
30
|
<p>
|
31
31
|
|
32
32
|
### What is Livetext really?
|
33
|
-
<p>
|
34
|
-
|
35
33
|
Here goes:
|
36
34
|
* It's a text transformer
|
37
35
|
* It's Ruby-based (later on, more language agnostic)
|
@@ -47,8 +45,6 @@ Here goes:
|
|
47
45
|
* It's definitely not a softcover replacement
|
48
46
|
* It could possibly augment markdown, softcover, others
|
49
47
|
### How does it work?
|
50
|
-
<p>
|
51
|
-
|
52
48
|
A Livetext file is simply a text file which may have commands interspersed. A command is
|
53
49
|
simply a period followed by a name and optional parameters (at the beginning of a line).
|
54
50
|
<p>
|
@@ -79,8 +75,6 @@ the repo to see these.
|
|
79
75
|
<p>
|
80
76
|
|
81
77
|
### Syntax, comments, and more
|
82
|
-
<p>
|
83
|
-
|
84
78
|
At first, my idea was to provide predefined commands and allow user-defined commands (to be
|
85
79
|
distinguished by a leading <tt>.</tt> or <tt>..</tt> marker). So the single and double dots were both legal.
|
86
80
|
<p>
|
@@ -102,8 +96,6 @@ a <tt>.end</tt> tag).
|
|
102
96
|
<p>
|
103
97
|
|
104
98
|
### Boldface and italics
|
105
|
-
<p>
|
106
|
-
|
107
99
|
Very commonly we want to format short words or phrases in italics, boldface, or a monospaced
|
108
100
|
(fixed width) font. The Markdown spec provides ways to do this that are fairly intuitive; but I
|
109
101
|
personally don't like them. My own notation works a different way.
|
@@ -146,14 +138,14 @@ Most of this is summarized in this example (taken from one of the testcases):
|
|
146
138
|
|
147
139
|
|
148
140
|
<font size=+1><b>Test: </font><font size=+2><tt>basic_formatting</tt></font></b></h3><br>
|
149
|
-
<
|
141
|
+
<font size=+1>
|
150
142
|
<table width=80% cellpadding=4>
|
151
143
|
<tr>
|
152
144
|
<td width=50%><b>Input</b></td>
|
153
145
|
<td width=50%><b>Output</b></td>
|
154
146
|
</tr>
|
155
147
|
<tr>
|
156
|
-
<td width=50% bgcolor=#
|
148
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
157
149
|
<pre> Here are examples of *boldface and \_italics and `code
|
158
150
|
as well as *[more complex] examples of \_[italicized text]
|
159
151
|
and `[code font].
|
@@ -164,7 +156,7 @@ Most of this is summarized in this example (taken from one of the testcases):
|
|
164
156
|
No need to escape these: * \_ `
|
165
157
|
</pre>
|
166
158
|
</td>
|
167
|
-
<td width=50% bgcolor
|
159
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
168
160
|
<pre> Here are examples of <b>boldface</b> and <i>italics</i> and <tt>code</tt>
|
169
161
|
as well as <b>more complex</b> examples of <i>italicized text</i>
|
170
162
|
and <tt>code font</tt>.
|
@@ -179,13 +171,11 @@ Most of this is summarized in this example (taken from one of the testcases):
|
|
179
171
|
</td>
|
180
172
|
</tr>
|
181
173
|
</table>
|
182
|
-
</
|
174
|
+
</font>
|
183
175
|
<br>
|
184
176
|
<p>
|
185
177
|
|
186
178
|
### Standard methods
|
187
|
-
<p>
|
188
|
-
|
189
179
|
The module <tt>Livetext::Standard</tt> contains the set of standard or predefined methods. Their
|
190
180
|
names are essentially the same as the names of the dot-commands, with occasional exceptions.
|
191
181
|
(For example, it is impractical to use the name <tt>def</tt> as a method name, so the module has a
|
@@ -194,99 +184,97 @@ names are essentially the same as the names of the dot-commands, with occasional
|
|
194
184
|
|
195
185
|
<table>
|
196
186
|
<tr>
|
197
|
-
<td width=3%><td width=10%> <tt>comment</tt>
|
187
|
+
<td width=3%><td width=10%> <tt>comment</tt> </td><td> Start a comment block</td>
|
198
188
|
</tr>
|
199
189
|
<tr>
|
200
|
-
<td width=3%><td width=10%> <tt>errout</tt>
|
190
|
+
<td width=3%><td width=10%> <tt>errout</tt> </td><td> Write an error message to STDERR</td>
|
201
191
|
</tr>
|
202
192
|
<tr>
|
203
|
-
<td width=3%><td width=10%> <tt>def</tt>
|
193
|
+
<td width=3%><td width=10%> <tt>def</tt> </td><td> Define a new method inline</td>
|
204
194
|
</tr>
|
205
195
|
<tr>
|
206
|
-
<td width=3%><td width=10%> <tt>set</tt>
|
196
|
+
<td width=3%><td width=10%> <tt>set</tt> </td><td> Assign values to variables for later interpolation</td>
|
207
197
|
</tr>
|
208
198
|
<tr>
|
209
|
-
<td width=3%><td width=10%> <tt>include</tt>
|
199
|
+
<td width=3%><td width=10%> <tt>include</tt> </td><td> Include an outside text file (to be interpreted as Livetext)</td>
|
210
200
|
</tr>
|
211
201
|
<tr>
|
212
|
-
<td width=3%><td width=10%> <tt>mixin</tt>
|
202
|
+
<td width=3%><td width=10%> <tt>mixin</tt> </td><td> Mix this file of Ruby methods into the standard namespace</td>
|
213
203
|
</tr>
|
214
204
|
<tr>
|
215
|
-
<td width=3%><td width=10%> <tt>copy</tt>
|
205
|
+
<td width=3%><td width=10%> <tt>copy</tt> </td><td> Copy this input file verbatim (no interpretation)</td>
|
216
206
|
</tr>
|
217
207
|
<tr>
|
218
|
-
<td width=3%><td width=10%> <tt>r</tt>
|
208
|
+
<td width=3%><td width=10%> <tt>r</tt> </td><td> Pass a single line through without processing</td>
|
219
209
|
</tr>
|
220
210
|
<tr>
|
221
|
-
<td width=3%><td width=10%> <tt>raw</tt>
|
211
|
+
<td width=3%><td width=10%> <tt>raw</tt> </td><td> Pass this special text block (terminated with <tt><i>EOF__</tt></i>) directly into output without processing </td>
|
222
212
|
</tr>
|
223
213
|
<tr>
|
224
|
-
<td width=3%><td width=10
|
214
|
+
<td width=3%><td width=10%> <tt>func</tt> </td><td> Define a function to be invoked inline</td>
|
225
215
|
</tr>
|
226
216
|
<tr>
|
227
|
-
<td width=3%><td width=10
|
217
|
+
<td width=3%><td width=10%> <tt>say</tt> </td><td> Print a message to the screen</td>
|
228
218
|
</tr>
|
229
219
|
<tr>
|
230
|
-
<td width=3%><td width=10
|
220
|
+
<td width=3%><td width=10%> <tt>banner</tt> </td><td> Print a "noticeable" message to the screen</td>
|
231
221
|
</tr>
|
232
222
|
<tr>
|
233
|
-
<td width=3%><td width=10
|
223
|
+
<td width=3%><td width=10%> <tt>quit</tt> </td><td> End processing and exit</td>
|
234
224
|
</tr>
|
235
225
|
<tr>
|
236
|
-
<td width=3%><td width=10
|
226
|
+
<td width=3%><td width=10%> <tt>nopass</tt> </td><td> Don't pass lines through (just honor commands)</td>
|
237
227
|
</tr>
|
238
228
|
<tr>
|
239
|
-
<td width=3%><td width=10
|
229
|
+
<td width=3%><td width=10%> <tt>include</tt> </td><td> Read and process another file (typically a <tt>.lt3</tt> file)</td>
|
240
230
|
</tr>
|
241
231
|
<tr>
|
242
|
-
<td width=3%><td width=10
|
232
|
+
<td width=3%><td width=10%> <tt>debug</tt> </td><td> Turn on debugging</td>
|
243
233
|
</tr>
|
244
234
|
<tr>
|
245
|
-
<td width=3%><td width=10
|
235
|
+
<td width=3%><td width=10%> <tt>nopara</tt> </td><td> Turn off the "blank line implies new paragraph" switch</td>
|
246
236
|
</tr>
|
247
237
|
<tr>
|
248
|
-
<td width=3%><td width=10
|
238
|
+
<td width=3%><td width=10%> <tt>newpage</tt> </td><td> Start a new output page</td>
|
249
239
|
</tr>
|
250
240
|
</table>
|
251
241
|
### Examples from the tests
|
252
|
-
<p>
|
253
|
-
|
254
242
|
Here are some tests from the suite. The file name reflects the general purpose of the test.
|
255
243
|
<p>
|
256
244
|
|
257
245
|
|
258
246
|
<font size=+1><b>Test: </font><font size=+2><tt>hello_world</tt></font></b></h3><br>
|
259
|
-
<
|
247
|
+
<font size=+1>
|
260
248
|
<table width=80% cellpadding=4>
|
261
249
|
<tr>
|
262
250
|
<td width=50%><b>Input</b></td>
|
263
251
|
<td width=50%><b>Output</b></td>
|
264
252
|
</tr>
|
265
253
|
<tr>
|
266
|
-
<td width=50% bgcolor=#
|
254
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
267
255
|
<pre> Hello,
|
268
256
|
world!
|
269
257
|
</pre>
|
270
258
|
</td>
|
271
|
-
<td width=50% bgcolor
|
259
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
272
260
|
<pre> Hello,
|
273
261
|
world!
|
274
262
|
</pre>
|
275
263
|
</td>
|
276
264
|
</tr>
|
277
265
|
</table>
|
278
|
-
</
|
266
|
+
</font>
|
279
267
|
<br>
|
280
268
|
|
281
269
|
<font size=+1><b>Test: </font><font size=+2><tt>comments_ignored_1</tt></font></b></h3><br>
|
282
|
-
<
|
270
|
+
<font size=+1>
|
283
271
|
<table width=80% cellpadding=4>
|
284
272
|
<tr>
|
285
273
|
<td width=50%><b>Input</b></td>
|
286
274
|
<td width=50%><b>Output</b></td>
|
287
275
|
</tr>
|
288
276
|
<tr>
|
289
|
-
<td width=50% bgcolor=#
|
277
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
290
278
|
<pre> . Comments are ignored
|
291
279
|
abc 123
|
292
280
|
this is a test
|
@@ -296,7 +284,7 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
296
284
|
. end of the file
|
297
285
|
</pre>
|
298
286
|
</td>
|
299
|
-
<td width=50% bgcolor
|
287
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
300
288
|
<pre> abc 123
|
301
289
|
this is a test
|
302
290
|
more stuff
|
@@ -305,18 +293,18 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
305
293
|
</td>
|
306
294
|
</tr>
|
307
295
|
</table>
|
308
|
-
</
|
296
|
+
</font>
|
309
297
|
<br>
|
310
298
|
|
311
299
|
<font size=+1><b>Test: </font><font size=+2><tt>block_comment</tt></font></b></h3><br>
|
312
|
-
<
|
300
|
+
<font size=+1>
|
313
301
|
<table width=80% cellpadding=4>
|
314
302
|
<tr>
|
315
303
|
<td width=50%><b>Input</b></td>
|
316
304
|
<td width=50%><b>Output</b></td>
|
317
305
|
</tr>
|
318
306
|
<tr>
|
319
|
-
<td width=50% bgcolor=#
|
307
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
320
308
|
<pre> .comment
|
321
309
|
This is
|
322
310
|
a comment
|
@@ -338,7 +326,7 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
338
326
|
|
339
327
|
</pre>
|
340
328
|
</td>
|
341
|
-
<td width=50% bgcolor
|
329
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
342
330
|
<pre> abc 123
|
343
331
|
xyz
|
344
332
|
one
|
@@ -348,19 +336,20 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
348
336
|
</td>
|
349
337
|
</tr>
|
350
338
|
</table>
|
351
|
-
</
|
339
|
+
</font>
|
352
340
|
<br>
|
353
341
|
|
354
342
|
<font size=+1><b>Test: </font><font size=+2><tt>def_method</tt></font></b></h3><br>
|
355
|
-
<
|
343
|
+
<font size=+1>
|
356
344
|
<table width=80% cellpadding=4>
|
357
345
|
<tr>
|
358
346
|
<td width=50%><b>Input</b></td>
|
359
347
|
<td width=50%><b>Output</b></td>
|
360
348
|
</tr>
|
361
349
|
<tr>
|
362
|
-
<td width=50% bgcolor=#
|
363
|
-
<pre>
|
350
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
351
|
+
<pre> .backtrace
|
352
|
+
abc
|
364
353
|
123
|
365
354
|
.def foobar
|
366
355
|
::STDERR.puts "This is the"
|
@@ -372,7 +361,7 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
372
361
|
123
|
373
362
|
</pre>
|
374
363
|
</td>
|
375
|
-
<td width=50% bgcolor
|
364
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
376
365
|
<pre> abc
|
377
366
|
123
|
378
367
|
xyz
|
@@ -382,18 +371,18 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
382
371
|
</td>
|
383
372
|
</tr>
|
384
373
|
</table>
|
385
|
-
</
|
374
|
+
</font>
|
386
375
|
<br>
|
387
376
|
|
388
377
|
<font size=+1><b>Test: </font><font size=+2><tt>simple_vars</tt></font></b></h3><br>
|
389
|
-
<
|
378
|
+
<font size=+1>
|
390
379
|
<table width=80% cellpadding=4>
|
391
380
|
<tr>
|
392
381
|
<td width=50%><b>Input</b></td>
|
393
382
|
<td width=50%><b>Output</b></td>
|
394
383
|
</tr>
|
395
384
|
<tr>
|
396
|
-
<td width=50% bgcolor=#
|
385
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
397
386
|
<pre> Just
|
398
387
|
some text.
|
399
388
|
.set name=GulliverFoyle,nation=Terra
|
@@ -403,7 +392,7 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
403
392
|
That's all.
|
404
393
|
</pre>
|
405
394
|
</td>
|
406
|
-
<td width=50% bgcolor
|
395
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
407
396
|
<pre> Just
|
408
397
|
some text.
|
409
398
|
Hi, there.
|
@@ -414,18 +403,18 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
414
403
|
</td>
|
415
404
|
</tr>
|
416
405
|
</table>
|
417
|
-
</
|
406
|
+
</font>
|
418
407
|
<br>
|
419
408
|
|
420
409
|
<font size=+1><b>Test: </font><font size=+2><tt>simple_include</tt></font></b></h3><br>
|
421
|
-
<
|
410
|
+
<font size=+1>
|
422
411
|
<table width=80% cellpadding=4>
|
423
412
|
<tr>
|
424
413
|
<td width=50%><b>Input</b></td>
|
425
414
|
<td width=50%><b>Output</b></td>
|
426
415
|
</tr>
|
427
416
|
<tr>
|
428
|
-
<td width=50% bgcolor=#
|
417
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
429
418
|
<pre> Here I am
|
430
419
|
.debug
|
431
420
|
trying to
|
@@ -435,7 +424,7 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
435
424
|
worked.
|
436
425
|
</pre>
|
437
426
|
</td>
|
438
|
-
<td width=50% bgcolor
|
427
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
439
428
|
<pre> Here I am
|
440
429
|
trying to
|
441
430
|
include
|
@@ -447,18 +436,18 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
447
436
|
</td>
|
448
437
|
</tr>
|
449
438
|
</table>
|
450
|
-
</
|
439
|
+
</font>
|
451
440
|
<br>
|
452
441
|
|
453
442
|
<font size=+1><b>Test: </font><font size=+2><tt>simple_mixin</tt></font></b></h3><br>
|
454
|
-
<
|
443
|
+
<font size=+1>
|
455
444
|
<table width=80% cellpadding=4>
|
456
445
|
<tr>
|
457
446
|
<td width=50%><b>Input</b></td>
|
458
447
|
<td width=50%><b>Output</b></td>
|
459
448
|
</tr>
|
460
449
|
<tr>
|
461
|
-
<td width=50% bgcolor=#
|
450
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
462
451
|
<pre> Here I am
|
463
452
|
testing a simple mixin
|
464
453
|
.mixin simple\_mixin
|
@@ -467,7 +456,7 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
467
456
|
That's all.
|
468
457
|
</pre>
|
469
458
|
</td>
|
470
|
-
<td width=50% bgcolor
|
459
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
471
460
|
<pre> Here I am
|
472
461
|
testing a simple mixin
|
473
462
|
Now call it:
|
@@ -477,18 +466,18 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
477
466
|
</td>
|
478
467
|
</tr>
|
479
468
|
</table>
|
480
|
-
</
|
469
|
+
</font>
|
481
470
|
<br>
|
482
471
|
|
483
472
|
<font size=+1><b>Test: </font><font size=+2><tt>simple_copy</tt></font></b></h3><br>
|
484
|
-
<
|
473
|
+
<font size=+1>
|
485
474
|
<table width=80% cellpadding=4>
|
486
475
|
<tr>
|
487
476
|
<td width=50%><b>Input</b></td>
|
488
477
|
<td width=50%><b>Output</b></td>
|
489
478
|
</tr>
|
490
479
|
<tr>
|
491
|
-
<td width=50% bgcolor=#
|
480
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
492
481
|
<pre> The copy command
|
493
482
|
copies any file
|
494
483
|
without interpretation,
|
@@ -497,7 +486,7 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
497
486
|
That is all.
|
498
487
|
</pre>
|
499
488
|
</td>
|
500
|
-
<td width=50% bgcolor
|
489
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
501
490
|
<pre> The copy command
|
502
491
|
copies any file
|
503
492
|
without interpretation,
|
@@ -509,25 +498,25 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
509
498
|
</td>
|
510
499
|
</tr>
|
511
500
|
</table>
|
512
|
-
</
|
501
|
+
</font>
|
513
502
|
<br>
|
514
503
|
|
515
504
|
<font size=+1><b>Test: </font><font size=+2><tt>copy_is_raw</tt></font></b></h3><br>
|
516
|
-
<
|
505
|
+
<font size=+1>
|
517
506
|
<table width=80% cellpadding=4>
|
518
507
|
<tr>
|
519
508
|
<td width=50%><b>Input</b></td>
|
520
509
|
<td width=50%><b>Output</b></td>
|
521
510
|
</tr>
|
522
511
|
<tr>
|
523
|
-
<td width=50% bgcolor=#
|
512
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
524
513
|
<pre> A copy command
|
525
514
|
does not interpret its input:
|
526
515
|
.copy rawtext.inc
|
527
516
|
That's all.
|
528
517
|
</pre>
|
529
518
|
</td>
|
530
|
-
<td width=50% bgcolor
|
519
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
531
520
|
<pre> A copy command
|
532
521
|
does not interpret its input:
|
533
522
|
This is not a comment:
|
@@ -539,18 +528,18 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
539
528
|
</td>
|
540
529
|
</tr>
|
541
530
|
</table>
|
542
|
-
</
|
531
|
+
</font>
|
543
532
|
<br>
|
544
533
|
|
545
534
|
<font size=+1><b>Test: </font><font size=+2><tt>raw_text_block</tt></font></b></h3><br>
|
546
|
-
<
|
535
|
+
<font size=+1>
|
547
536
|
<table width=80% cellpadding=4>
|
548
537
|
<tr>
|
549
538
|
<td width=50%><b>Input</b></td>
|
550
539
|
<td width=50%><b>Output</b></td>
|
551
540
|
</tr>
|
552
541
|
<tr>
|
553
|
-
<td width=50% bgcolor=#
|
542
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
554
543
|
<pre> This text block will be passed thru
|
555
544
|
with no interpretation or processing:
|
556
545
|
.raw
|
@@ -569,7 +558,7 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
569
558
|
I hope that worked.
|
570
559
|
</pre>
|
571
560
|
</td>
|
572
|
-
<td width=50% bgcolor
|
561
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
573
562
|
<pre> This text block will be passed thru
|
574
563
|
with no interpretation or processing:
|
575
564
|
.comment
|
@@ -588,13 +577,11 @@ Here are some tests from the suite. The file name reflects the general purpose o
|
|
588
577
|
</td>
|
589
578
|
</tr>
|
590
579
|
</table>
|
591
|
-
</
|
580
|
+
</font>
|
592
581
|
<br>
|
593
582
|
<p>
|
594
583
|
|
595
584
|
### Writing custom methods
|
596
|
-
<p>
|
597
|
-
|
598
585
|
Suppose you wanted to write a method called <tt>chapter</tt> that would simply
|
599
586
|
output a chapter number and title with certain heading tags and a
|
600
587
|
horizontal rule following. There is more than one way to do this.
|
@@ -612,16 +599,16 @@ the text. Here's an example.
|
|
612
599
|
|
613
600
|
. This is also a comment, by the way.
|
614
601
|
.def chapter
|
615
|
-
params =
|
602
|
+
params = <i>args</i>
|
616
603
|
raise "chapter: expecting at least two args" unless params.size > 1
|
617
|
-
num,
|
604
|
+
num, <b>title</b> = params # Chapter number + title
|
618
605
|
title = title.join(" ") # Join all words into one string
|
619
606
|
text = <<-HTML
|
620
607
|
<h3>Chapter #{num}</h3>
|
621
608
|
<h2>#{title}</h2>
|
622
609
|
<hr>
|
623
610
|
HTML
|
624
|
-
|
611
|
+
<i>puts</i> text
|
625
612
|
.end
|
626
613
|
. Now let's invoke it...
|
627
614
|
.chapter 1 Why I Went to the Woods
|
@@ -665,25 +652,25 @@ What are some other helper methods? Here's a list.
|
|
665
652
|
|
666
653
|
<table>
|
667
654
|
<tr>
|
668
|
-
<td width=3%><td width=10%><tt>
|
655
|
+
<td width=3%><td width=10%><tt><i>args</tt></i></td><td>%%</td>
|
669
656
|
</tr>
|
670
657
|
<tr>
|
671
|
-
<td width=3%><td width=10%><tt>
|
658
|
+
<td width=3%><td width=10%><tt><i>data</tt></i></td><td>%%</td>
|
672
659
|
</tr>
|
673
660
|
<tr>
|
674
|
-
<td width=3%><td width=10%><tt>
|
661
|
+
<td width=3%><td width=10%><tt><i>body</tt></i></td><td>%%</td>
|
675
662
|
</tr>
|
676
663
|
<tr>
|
677
|
-
<td width=3%><td width=10%><tt>
|
664
|
+
<td width=3%><td width=10%><tt><i>puts</tt></i></td><td>%%</td>
|
678
665
|
</tr>
|
679
666
|
<tr>
|
680
|
-
<td width=3%><td width=10%><tt>
|
667
|
+
<td width=3%><td width=10%><tt><i>print</tt></i></td><td>%%</td>
|
681
668
|
</tr>
|
682
669
|
<tr>
|
683
|
-
<td width=3%><td width=10%><tt>
|
670
|
+
<td width=3%><td width=10%><tt><i>formatting</tt></i></td><td>%%</td>
|
684
671
|
</tr>
|
685
672
|
<tr>
|
686
|
-
<td width=3%><td width=10%><tt>
|
673
|
+
<td width=3%><td width=10%><tt><i>passthru</tt></i></td><td>%%</td>
|
687
674
|
</tr>
|
688
675
|
</table>
|
689
676
|
Note that the last three methods are typically <i>not</i> called in your own code. They could be,
|
@@ -691,8 +678,6 @@ but it remains to be seen whether something that advanced is useful.
|
|
691
678
|
<p>
|
692
679
|
|
693
680
|
### More examples
|
694
|
-
<p>
|
695
|
-
|
696
681
|
Suppose you wanted to take a list of words, more than one per line, and alphabetize them.
|
697
682
|
Let's write a method called <tt>alpha</tt> for that. This exercise and the next one are implemented
|
698
683
|
in the test suite.
|
@@ -700,17 +685,16 @@ in the test suite.
|
|
700
685
|
|
701
686
|
|
702
687
|
<font size=+1><b>Test: </font><font size=+2><tt>example_alpha</tt></font></b></h3><br>
|
703
|
-
<
|
688
|
+
<font size=+1>
|
704
689
|
<table width=80% cellpadding=4>
|
705
690
|
<tr>
|
706
691
|
<td width=50%><b>Input</b></td>
|
707
692
|
<td width=50%><b>Output</b></td>
|
708
693
|
</tr>
|
709
694
|
<tr>
|
710
|
-
<td width=50% bgcolor=#
|
695
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
711
696
|
<pre> .def alpha
|
712
|
-
text = \_body.join
|
713
|
-
text.gsub!(/\n/, " ")
|
697
|
+
text = \_body.to\_a.join(" ")
|
714
698
|
words = text.split.sort
|
715
699
|
words.each {|w| \_puts " #{w}" }
|
716
700
|
.end
|
@@ -727,7 +711,7 @@ in the test suite.
|
|
727
711
|
I hope that worked.
|
728
712
|
</pre>
|
729
713
|
</td>
|
730
|
-
<td width=50% bgcolor
|
714
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
731
715
|
<pre> Here is an alphabetized list:
|
732
716
|
<p>
|
733
717
|
|
@@ -755,7 +739,7 @@ in the test suite.
|
|
755
739
|
</td>
|
756
740
|
</tr>
|
757
741
|
</table>
|
758
|
-
</
|
742
|
+
</font>
|
759
743
|
<br>
|
760
744
|
<p>
|
761
745
|
|
@@ -765,20 +749,20 @@ have the user specify a number of columns (from 1 to 5, defaulting to 1).
|
|
765
749
|
|
766
750
|
|
767
751
|
<font size=+1><b>Test: </font><font size=+2><tt>example_alpha2</tt></font></b></h3><br>
|
768
|
-
<
|
752
|
+
<font size=+1>
|
769
753
|
<table width=80% cellpadding=4>
|
770
754
|
<tr>
|
771
755
|
<td width=50%><b>Input</b></td>
|
772
756
|
<td width=50%><b>Output</b></td>
|
773
757
|
</tr>
|
774
758
|
<tr>
|
775
|
-
<td width=50% bgcolor=#
|
759
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
776
760
|
<pre> .def alpha
|
777
761
|
cols = \_args.first
|
778
762
|
cols = "1" if cols == ""
|
779
763
|
cols = cols.to\_i
|
780
764
|
raise "Columns must be 1-5" unless cols.between?(1,5)
|
781
|
-
text = \_body
|
765
|
+
text = \_body\_text
|
782
766
|
text.gsub!(/\n/, " ")
|
783
767
|
words = text.split.sort
|
784
768
|
words.each\_slice(cols) do |row|
|
@@ -799,7 +783,7 @@ have the user specify a number of columns (from 1 to 5, defaulting to 1).
|
|
799
783
|
I hope that worked a second time.
|
800
784
|
</pre>
|
801
785
|
</td>
|
802
|
-
<td width=50% bgcolor
|
786
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
803
787
|
<pre> Here is an alphabetized list:
|
804
788
|
<p>
|
805
789
|
|
@@ -816,7 +800,7 @@ have the user specify a number of columns (from 1 to 5, defaulting to 1).
|
|
816
800
|
</td>
|
817
801
|
</tr>
|
818
802
|
</table>
|
819
|
-
</
|
803
|
+
</font>
|
820
804
|
<br>
|
821
805
|
<p>
|
822
806
|
|
@@ -833,16 +817,16 @@ in here (and nothing else).
|
|
833
817
|
# File: mylib.rb
|
834
818
|
|
835
819
|
def alpha
|
836
|
-
cols =
|
820
|
+
cols = <i>args.first</i>
|
837
821
|
cols = "1" if cols == ""
|
838
|
-
cols = cols.
|
822
|
+
cols = cols.to<i>i</i>
|
839
823
|
raise "Columns must be 1-5" unless cols.between?(1,5)
|
840
|
-
text =
|
824
|
+
text = <i>body.join</i>
|
841
825
|
text.gsub!(/\n/, " ")
|
842
826
|
words = text.split.sort
|
843
|
-
words.
|
844
|
-
row.each {|w|
|
845
|
-
|
827
|
+
words.each<i>slice(cols)</i> do |row|
|
828
|
+
row.each {|w| <i>print</i> '%-15s' % w }
|
829
|
+
<i>puts</i>
|
846
830
|
end
|
847
831
|
end
|
848
832
|
</pre>
|
@@ -876,8 +860,6 @@ on that new custom object. I plan to implement this later.
|
|
876
860
|
<p>
|
877
861
|
|
878
862
|
### Issues, open questions, and to-do items
|
879
|
-
<p>
|
880
|
-
|
881
863
|
This list is not prioritized yet.
|
882
864
|
<p>
|
883
865
|
|
@@ -892,13 +874,13 @@ This list is not prioritized yet.
|
|
892
874
|
9. Worry about nesting of elements (probably mostly disallow)
|
893
875
|
10. Think about UTF-8
|
894
876
|
11. Document API fully
|
895
|
-
12. Add <tt>
|
877
|
+
12. Add <tt><i>raw_args</tt></i> and let <tt><i>args</tt></i> honor quotes
|
896
878
|
13. Support quotes in <tt>.set</tt> values
|
897
879
|
14. Support "namespaced" variables (<tt>.set code.font="whatever"</tt>)
|
898
|
-
15. <strike>Support functions (
|
880
|
+
15. <strike>Support functions (<tt>$$func</tt>) </strike>
|
899
881
|
16. Support function namespacing
|
900
|
-
17. Create predefined variables (e.g., <tt
|
901
|
-
18. Create predefined functions (e.g., <tt
|
882
|
+
17. Create predefined variables (e.g., <tt>$<i>source_file</tt>,</i> <tt>$[<i>line])</tt></i>
|
883
|
+
18. Create predefined functions (e.g., <tt>$$<i>date</tt>)</i>
|
902
884
|
19. More support for markdown
|
903
885
|
20. Allow turning on/off: formatting, variable interpolation, function interpolation?
|
904
886
|
21. <tt>.require</tt> with file and sigil parameters
|
@@ -911,7 +893,7 @@ This list is not prioritized yet.
|
|
911
893
|
28. Warn when overriding existing names?
|
912
894
|
29. Think about passing data in (erb replacement)
|
913
895
|
30. <strike>]Allow</strike> custom ending tag on <tt>raw</tt> method
|
914
|
-
31. <strike>Ignore first blank line after
|
896
|
+
31. <strike>Ignore first blank line after <tt>.end</strike>? (and after raw-tag?)</tt>
|
915
897
|
32. Allow/encourage custom <tt>passthru</tt> method?
|
916
898
|
33. Must have sane support for CSS
|
917
899
|
34. Support for Pygments and/or other code processors
|
data/dsl/bookish.rb
CHANGED
data/dsl/liveblog.rb
CHANGED
@@ -108,11 +108,11 @@ def pubdate
|
|
108
108
|
@meta.pubdate = "%04d-%02d-%02d" % [y, m, d]
|
109
109
|
end
|
110
110
|
|
111
|
-
def categories # now: tags
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
end
|
111
|
+
# def categories # now: tags
|
112
|
+
# _debug "args = #{_args}"
|
113
|
+
# @meta.categories = _args # phase out
|
114
|
+
# @meta.tags = _args
|
115
|
+
# end
|
116
116
|
|
117
117
|
def tags
|
118
118
|
_debug "args = #{_args}"
|
@@ -124,9 +124,15 @@ def views
|
|
124
124
|
@meta.views = _args.dup # + ["main"]
|
125
125
|
end
|
126
126
|
|
127
|
-
def
|
127
|
+
def pin
|
128
|
+
_debug "data = #{_args}"
|
129
|
+
# verify only already-specified views?
|
130
|
+
@meta.pinned = _args.dup
|
128
131
|
end
|
129
132
|
|
133
|
+
# def liveblog_version
|
134
|
+
# end
|
135
|
+
|
130
136
|
def list
|
131
137
|
@body << "<ul>"
|
132
138
|
_body {|line| @body << "<li>#{line}</li>" }
|
data/dsl/tutorial.rb
CHANGED
@@ -27,22 +27,20 @@ def inout
|
|
27
27
|
t2 = t2.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join
|
28
28
|
|
29
29
|
puts <<-HTML
|
30
|
-
<center>
|
31
30
|
<table width=80% cellpadding=4>
|
32
31
|
<tr>
|
33
32
|
<td width=50%><b>Input</b></td>
|
34
33
|
<td width=50%><b>Output</b></td>
|
35
34
|
</tr>
|
36
35
|
<tr>
|
37
|
-
<td width=50% bgcolor=#
|
36
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
38
37
|
<pre>#{t1}</pre>
|
39
38
|
</td>
|
40
|
-
<td width=50% bgcolor
|
39
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
41
40
|
<pre>#{t2}</pre>
|
42
41
|
</td>
|
43
42
|
</tr>
|
44
43
|
</table>
|
45
|
-
</center>
|
46
44
|
HTML
|
47
45
|
end
|
48
46
|
|
@@ -53,29 +51,29 @@ def put_table(src, exp)
|
|
53
51
|
t2 = t2.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join
|
54
52
|
|
55
53
|
puts <<-HTML
|
56
|
-
<
|
54
|
+
<font size=+1>
|
57
55
|
<table width=80% cellpadding=4>
|
58
56
|
<tr>
|
59
57
|
<td width=50%><b>Input</b></td>
|
60
58
|
<td width=50%><b>Output</b></td>
|
61
59
|
</tr>
|
62
60
|
<tr>
|
63
|
-
<td width=50% bgcolor=#
|
61
|
+
<td width=50% bgcolor=#fee0fe valign=top>
|
64
62
|
<pre>#{t1}</pre>
|
65
63
|
</td>
|
66
|
-
<td width=50% bgcolor
|
64
|
+
<td width=50% bgcolor=#eeeeee valign=top>
|
67
65
|
<pre>#{t2}</pre>
|
68
66
|
</td>
|
69
67
|
</tr>
|
70
68
|
</table>
|
71
|
-
</
|
69
|
+
</font>
|
72
70
|
HTML
|
73
71
|
end
|
74
72
|
|
75
73
|
def testcase
|
76
74
|
name = _args.first
|
77
75
|
_puts "\n<font size=+1><b>Test: </font><font size=+2><tt>#{name}</tt></font></b></h3><br>"
|
78
|
-
src, exp = "
|
76
|
+
src, exp = "test/data/#{name}/source.lt3", "test/data/#{name}/expected-output.txt"
|
79
77
|
@_args = [src, exp] # Better way to do this??
|
80
78
|
put_table(src, exp)
|
81
79
|
_puts "<br>"
|
data/lib/livetext.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: livetext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.41
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A smart text processor extensible in Ruby
|
14
14
|
email: rubyhacker@gmail.com
|
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
156
|
version: '0'
|
157
157
|
requirements: []
|
158
158
|
rubyforge_project:
|
159
|
-
rubygems_version: 2.
|
159
|
+
rubygems_version: 2.7.7
|
160
160
|
signing_key:
|
161
161
|
specification_version: 4
|
162
162
|
summary: A smart processor for text
|