livetext 0.9.23 → 0.9.26
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.
- checksums.yaml +4 -4
- data/README.lt3 +6 -6
- data/bin/livetext +57 -40
- data/imports/bookish.rb +81 -81
- data/imports/calibre.rb +3 -3
- data/imports/livemagick.rb +17 -17
- data/imports/markdown.rb +10 -10
- data/imports/pyggish.rb +13 -13
- data/imports/tutorial.rb +15 -15
- data/lib/cmdargs.rb +7 -4
- data/lib/{errors.rb → livetext/errors.rb} +4 -3
- data/lib/{formatline.rb → livetext/formatline.rb} +119 -18
- data/lib/livetext/funcall.rb +168 -0
- data/lib/{functions.rb → livetext/functions.rb} +0 -2
- data/lib/{global_helpers.rb → livetext/global_helpers.rb} +6 -3
- data/lib/{handler → livetext/handler}/import.rb +5 -9
- data/lib/livetext/handler/mixin.rb +33 -0
- data/lib/{handler.rb → livetext/handler.rb} +1 -1
- data/lib/{helpers.rb → livetext/helpers.rb} +78 -66
- data/lib/{html.rb → livetext/html.rb} +2 -3
- data/lib/livetext/lineparser.rb +441 -0
- data/lib/livetext/more.rb +158 -0
- data/lib/{parser → livetext/parser}/general.rb +0 -0
- data/lib/{parser → livetext/parser}/set.rb +0 -0
- data/lib/{parser → livetext/parser}/string.rb +0 -0
- data/lib/{parser.rb → livetext/parser.rb} +0 -3
- data/lib/{parsing.rb → livetext/parsing.rb} +0 -2
- data/lib/livetext/paths.rb +13 -0
- data/lib/{processor.rb → livetext/processor.rb} +18 -8
- data/lib/livetext/reopen.rb +12 -0
- data/lib/livetext/skeleton.rb +22 -0
- data/lib/{standard.rb → livetext/standard.rb} +150 -127
- data/lib/livetext/userapi.rb +170 -0
- data/lib/livetext/version.rb +6 -0
- data/lib/livetext.rb +14 -152
- data/plugin/bookish.rb +82 -81
- data/plugin/calibre.rb +3 -3
- data/plugin/livemagick.rb +17 -17
- data/plugin/markdown.rb +10 -10
- data/plugin/pyggish.rb +118 -118
- data/plugin/tutorial.rb +15 -15
- data/test/all.rb +6 -0
- data/test/snapshots/{error_inc_line_num → basic_formatting}/actual-error.txt +0 -0
- data/test/snapshots/basic_formatting/actual-output.txt +13 -0
- data/test/snapshots/basic_formatting/err-sdiff.txt +1 -0
- data/test/snapshots/basic_formatting/out-sdiff.txt +14 -0
- data/test/snapshots/def_method/expected-output.txt +2 -0
- data/test/snapshots/def_method/source.lt3 +4 -2
- data/test/snapshots/error_inc_line_num/{OUT → README.txt} +11 -8
- data/test/snapshots/error_inc_line_num/expected-output.txt +0 -6
- data/test/snapshots/error_inc_line_num/match-error.txt +1 -1
- data/test/snapshots/error_invalid_name/foo +5 -0
- data/test/snapshots/error_line_num/match-error.txt +1 -1
- data/test/snapshots/error_missing_end/expected-output.txt +0 -1
- data/test/snapshots/error_name_not_permitted/expected-output.txt +4 -0
- data/test/snapshots/error_name_not_permitted/match-error.txt +1 -1
- data/test/snapshots/error_no_such_copy/expected-output.txt +1 -0
- data/test/snapshots/error_no_such_mixin/expected-output.txt +1 -0
- data/test/snapshots/error_no_such_mixin/match-error.txt +1 -1
- data/test/snapshots/error_no_such_mixin/source.lt3 +1 -1
- data/test/snapshots/example_alpha/source.lt3 +2 -2
- data/test/snapshots/example_alpha2/expected-output.txt +0 -2
- data/test/snapshots/example_alpha2/source.lt3 +5 -4
- data/test/snapshots/import/expected-output.txt +2 -1
- data/test/snapshots/import/match-error.txt +1 -1
- data/test/snapshots/import/simple_import.rb +1 -1
- data/test/snapshots/import2/simple_import.rb +1 -1
- data/test/snapshots/import_bookish/expected-output.txt +4 -4
- data/test/snapshots/{error_invalid_name/actual-output.txt → more_functions/actual-error.txt} +0 -0
- data/test/snapshots/more_functions/actual-output.txt +37 -0
- data/test/snapshots/more_functions/err-sdiff.txt +1 -0
- data/test/snapshots/more_functions/expected-output.txt +1 -1
- data/test/snapshots/more_functions/out-sdiff.txt +38 -0
- data/test/snapshots/more_functions/source.lt3 +1 -1
- data/test/snapshots/raw_lines/expected-output.txt +0 -2
- data/test/snapshots/simple_import/simple_import.rb +1 -1
- data/test/snapshots/simple_mixin/simple_mixin.rb +1 -1
- data/test/snapshots/{error_missing_end/actual-output.txt → simple_vars/actual-error.txt} +0 -0
- data/test/snapshots/simple_vars/actual-output.txt +6 -0
- data/test/snapshots/simple_vars/err-sdiff.txt +1 -0
- data/test/snapshots/simple_vars/out-sdiff.txt +7 -0
- data/test/snapshots/single_raw_line/expected-output.txt +0 -2
- data/test/snapshots/subset.txt +9 -7
- data/test/snapshots/{error_no_such_copy/actual-output.txt → var_into_func/actual-error.txt} +0 -0
- data/test/snapshots/var_into_func/actual-output.txt +16 -0
- data/test/snapshots/var_into_func/err-sdiff.txt +1 -0
- data/test/snapshots/{error_no_such_inc/actual-output.txt → var_into_func/expected-error.txt} +0 -0
- data/test/snapshots/var_into_func/expected-output.txt +16 -0
- data/test/snapshots/var_into_func/out-sdiff.txt +17 -0
- data/test/snapshots/var_into_func/source.lt3 +16 -0
- data/test/snapshots.rb +16 -7
- data/test/unit/all.rb +3 -1
- data/test/unit/formatline.rb +145 -276
- data/test/unit/html.rb +1 -2
- data/test/unit/lineparser.rb +650 -0
- data/test/unit/parser/set.rb +13 -12
- data/test/unit/standard.rb +0 -1
- data/test/unit/tokenizer.rb +534 -0
- metadata +49 -39
- data/lib/funcall.rb +0 -93
- data/lib/parser/file.rb +0 -6
- data/lib/parser/mixin.rb +0 -34
- data/lib/userapi.rb +0 -164
- data/test/snapshots/error_inc_line_num/actual-output.txt +0 -17
- data/test/snapshots/error_invalid_name/actual-error.txt +0 -10
- data/test/snapshots/error_invalid_name/out-sdiff.txt +0 -6
- data/test/snapshots/error_missing_end/actual-error.txt +0 -10
- data/test/snapshots/error_missing_end/out-sdiff.txt +0 -6
- data/test/snapshots/error_no_such_copy/actual-error.txt +0 -10
- data/test/snapshots/error_no_such_copy/out-sdiff.txt +0 -5
- data/test/snapshots/error_no_such_inc/actual-error.txt +0 -10
- data/test/snapshots/error_no_such_inc/out-sdiff.txt +0 -6
- data/test/snapshots/error_no_such_mixin/actual-error.txt +0 -13
- data/test/snapshots/error_no_such_mixin/actual-output.txt +0 -0
- data/test/snapshots/error_no_such_mixin/out-sdiff.txt +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1744d4ccec6a1c997c1f37660276d9bbd13bc458b612e00ff90de5f0eab93261
|
|
4
|
+
data.tar.gz: 0ce2af2ed7e189f8128a94c93468f9044fdef6a044c4e551655ece97b6eaa3da
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 497f2e381f4ee255dc2b336fb6f287e136858e4d8daf96e6f652c321013d68e13139f41507e532bb1a57dd85b41afd6e8b5b6a35ce8f9cbb2b5b38eb7ccbde51
|
|
7
|
+
data.tar.gz: c5fcb435da4ee42395872a91f27ed5f2a1f67273f70b7e7bfdafe781b90a3170203bae9536ffd9dfb0e9af14e3cd0fde7a543c17e9aecdea1983fb4be8d74fd9
|
data/README.lt3
CHANGED
|
@@ -186,7 +186,7 @@ the text. Here's an example.
|
|
|
186
186
|
|
|
187
187
|
. This is also a comment, by the way.
|
|
188
188
|
.def chapter
|
|
189
|
-
params =
|
|
189
|
+
params = api.args
|
|
190
190
|
raise "chapter: expecting at least two args" unless params.size > 1
|
|
191
191
|
num, *title = params # Chapter number + title
|
|
192
192
|
title = title.join(" ") # Join all words into one string
|
|
@@ -195,7 +195,7 @@ the text. Here's an example.
|
|
|
195
195
|
<h2>#{title}</h2>
|
|
196
196
|
<hr>
|
|
197
197
|
HTML
|
|
198
|
-
|
|
198
|
+
api.puts text
|
|
199
199
|
.end
|
|
200
200
|
. Now let's invoke it...
|
|
201
201
|
.chapter 1 Why I Went to the Woods
|
|
@@ -270,16 +270,16 @@ in here (and nothing else).
|
|
|
270
270
|
# File: mylib.rb
|
|
271
271
|
|
|
272
272
|
def alpha
|
|
273
|
-
cols =
|
|
273
|
+
cols = api.args.first
|
|
274
274
|
cols = "1" if cols == ""
|
|
275
275
|
cols = cols.to_i
|
|
276
276
|
raise "Columns must be 1-5" unless cols.between?(1,5)
|
|
277
|
-
text =
|
|
277
|
+
text = api.body.join
|
|
278
278
|
text.gsub!(/\n/, " ")
|
|
279
279
|
words = text.split.sort
|
|
280
280
|
words.each_slice(cols) do |row|
|
|
281
|
-
row.each {|w|
|
|
282
|
-
|
|
281
|
+
row.each {|w| api.print '%-15s' % w }
|
|
282
|
+
api.puts
|
|
283
283
|
end
|
|
284
284
|
end
|
|
285
285
|
.end
|
data/bin/livetext
CHANGED
|
@@ -4,12 +4,8 @@ require 'rubygems'
|
|
|
4
4
|
|
|
5
5
|
require_relative '../lib/livetext'
|
|
6
6
|
|
|
7
|
-
def handle_lt3(src)
|
|
8
|
-
abort "Unknown file extension" unless src =~ /.lt3$/
|
|
9
|
-
end
|
|
10
|
-
|
|
11
7
|
def usage
|
|
12
|
-
puts
|
|
8
|
+
STDERR.puts <<~EOF
|
|
13
9
|
Usage:
|
|
14
10
|
livetext filename
|
|
15
11
|
|
|
@@ -41,50 +37,71 @@ def usage
|
|
|
41
37
|
Install plugin:
|
|
42
38
|
livetext -i filename.rb
|
|
43
39
|
livetext -install filename.rb
|
|
40
|
+
|
|
44
41
|
EOF
|
|
45
|
-
puts
|
|
46
42
|
exit
|
|
47
43
|
end
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
def version
|
|
46
|
+
puts "#{Livetext::VERSION}\n "
|
|
47
|
+
end
|
|
50
48
|
|
|
51
|
-
|
|
49
|
+
def testing
|
|
50
|
+
file = "#{Livetext::Path}/../test/test.rb"
|
|
51
|
+
flag = @backtrace ? "-back" : ""
|
|
52
|
+
cmd = "ruby #{file} cmdline#{flag}"
|
|
53
|
+
puts cmd
|
|
54
|
+
system(cmd)
|
|
55
|
+
end
|
|
52
56
|
|
|
53
|
-
|
|
57
|
+
def mixin_flag
|
|
58
|
+
mod = ARGV.shift
|
|
59
|
+
@live.mixin(ARGV.shift)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def read_stdin
|
|
63
|
+
src = STDIN.read
|
|
64
|
+
@live.process(src)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def install_plugin
|
|
68
|
+
lib = ARGV.shift
|
|
69
|
+
system("cp #{lib} #{Livetext::Path}/../plugin/")
|
|
70
|
+
end
|
|
54
71
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
when "-t", "--test"
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
cmd = "ruby #{file} cmdline#{flag}"
|
|
67
|
-
puts cmd
|
|
68
|
-
system(cmd)
|
|
69
|
-
when "-p", "--path"
|
|
70
|
-
puts Livetext::Path
|
|
71
|
-
when "-b", "--backtrace"
|
|
72
|
-
@backtrace = true
|
|
72
|
+
def parse_command_line
|
|
73
|
+
usage if ARGV.empty?
|
|
74
|
+
success = true
|
|
75
|
+
loop do
|
|
76
|
+
arg = ARGV.shift
|
|
77
|
+
break if arg.nil?
|
|
78
|
+
case arg
|
|
79
|
+
when "-v", "--version"; version
|
|
80
|
+
when "-t", "--test"; testing
|
|
81
|
+
when "-p", "--path"; puts Livetext::Path
|
|
82
|
+
when "-b", "--backtrace"; @backtrace = true
|
|
73
83
|
when "-m", "--mixin"
|
|
74
|
-
|
|
75
|
-
x.mixin(ARGV.shift)
|
|
84
|
+
mixin_flag
|
|
76
85
|
next
|
|
77
|
-
when "-s", "--stdin"
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
when
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
when Object
|
|
86
|
-
x.process_file(arg, true) # , @backtrace)
|
|
86
|
+
when "-s", "--stdin"; read_stdin
|
|
87
|
+
when "-h", "--help"; usage
|
|
88
|
+
when "-i", "--install"; install_plugin
|
|
89
|
+
when Object; @live.process_file(arg, true) # , @backtrace)
|
|
90
|
+
else
|
|
91
|
+
success = false
|
|
92
|
+
STDERR.puts "Command line - #{arg.inspect} is unknown"
|
|
93
|
+
end
|
|
87
94
|
end
|
|
95
|
+
@live.dump if success
|
|
96
|
+
# rescue => err
|
|
97
|
+
# STDERR.puts "Unexpected error! #{err.inspect}"
|
|
88
98
|
end
|
|
89
99
|
|
|
90
|
-
|
|
100
|
+
# Main
|
|
101
|
+
|
|
102
|
+
@live = Livetext.new
|
|
103
|
+
|
|
104
|
+
@backtrace = false
|
|
105
|
+
|
|
106
|
+
parse_command_line
|
|
107
|
+
|
data/imports/bookish.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Bookish
|
|
2
2
|
def hardbreaks(args = nil, body = nil)
|
|
3
3
|
@hard = false
|
|
4
|
-
@hard = true unless
|
|
4
|
+
@hard = true unless api.args.first == "off"
|
|
5
5
|
end
|
|
6
6
|
|
|
7
7
|
def hardbreaks?
|
|
@@ -14,23 +14,23 @@ module Bookish
|
|
|
14
14
|
|
|
15
15
|
# These are duplicated. Remove safely
|
|
16
16
|
|
|
17
|
-
def h1;
|
|
18
|
-
def h2;
|
|
19
|
-
def h3;
|
|
17
|
+
def h1; api.out "<h1>#{api.data}</h1>"; end
|
|
18
|
+
def h2; api.out "<h2>#{api.data}</h2>"; end
|
|
19
|
+
def h3; api.out "<h3>#{api.data}</h3>"; end
|
|
20
20
|
|
|
21
21
|
def alpha_columns(args = nil, body = nil)
|
|
22
|
-
n =
|
|
22
|
+
n = api.args.first.to_i # FIXME: what if missing?
|
|
23
23
|
words = []
|
|
24
|
-
|
|
24
|
+
api.body do |line|
|
|
25
25
|
words << line.chomp
|
|
26
26
|
end
|
|
27
27
|
words.sort!
|
|
28
|
-
|
|
28
|
+
api.out "<table cellpadding=2>"
|
|
29
29
|
words.each_slice(n) do |w|
|
|
30
30
|
items = w.map {|x| "<tt>#{x}</tt>" }
|
|
31
|
-
|
|
31
|
+
api.out "<tr><td width=5% valign=top></td><td>" + items.join("</td><td>") + "</td></tr>"
|
|
32
32
|
end
|
|
33
|
-
|
|
33
|
+
api.out "</table>"
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def _errout(*args)
|
|
@@ -52,29 +52,29 @@ module Bookish
|
|
|
52
52
|
# FIXME duplicated?
|
|
53
53
|
|
|
54
54
|
def image(args = nil, body = nil)
|
|
55
|
-
name =
|
|
56
|
-
|
|
55
|
+
name = api.args[0]
|
|
56
|
+
api.out "<img src='#{name}'></img>"
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
def figure(args = nil, body = nil)
|
|
60
|
-
name =
|
|
61
|
-
num =
|
|
62
|
-
title =
|
|
63
|
-
title =
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
name = api.args[0]
|
|
61
|
+
num = api.args[1]
|
|
62
|
+
title = api.args[2..-1].join(" ")
|
|
63
|
+
title = api.format(title)
|
|
64
|
+
api.out "<img src='#{name}'></img>"
|
|
65
|
+
api.out "<center><b>Figure #{num}</b> #{title}</center>"
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
def chapter(args = nil, body = nil)
|
|
69
69
|
# _errout("chapter")
|
|
70
|
-
@chapter =
|
|
70
|
+
@chapter = api.args.first.to_i
|
|
71
71
|
@sec = @sec2 = 0
|
|
72
|
-
title =
|
|
72
|
+
title = api.data.split(" ",2)[1]
|
|
73
73
|
@toc << "<br><b>#@chapter</b> #{title}<br>"
|
|
74
|
-
|
|
74
|
+
api.data = _slug(title)
|
|
75
75
|
next_output
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
api.out "<title>#{@chapter}. #{title}</title>"
|
|
77
|
+
api.out <<-HTML
|
|
78
78
|
<h2>Chapter #{@chapter}</h2>
|
|
79
79
|
<h1>#{title}</h1>
|
|
80
80
|
|
|
@@ -84,13 +84,13 @@ module Bookish
|
|
|
84
84
|
def chapterN(args = nil, body = nil)
|
|
85
85
|
@chapter += 1
|
|
86
86
|
@sec = @sec2 = 0
|
|
87
|
-
title =
|
|
87
|
+
title = api.data # .split(" ",2)[1]
|
|
88
88
|
_errout("Chapter #@chapter: #{title}")
|
|
89
89
|
@toc << "<br><b>#@chapter</b> #{title}<br>"
|
|
90
|
-
|
|
90
|
+
api.data = _slug(title)
|
|
91
91
|
next_output
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
api.out "<title>#{@chapter}. #{title}</title>"
|
|
93
|
+
api.out <<-HTML
|
|
94
94
|
<h2>Chapter #{@chapter}</h2>
|
|
95
95
|
<h1>#{title}</h1>
|
|
96
96
|
|
|
@@ -101,11 +101,11 @@ module Bookish
|
|
|
101
101
|
@sec += 1
|
|
102
102
|
@sec2 = 0
|
|
103
103
|
@section = "#@chapter.#@sec"
|
|
104
|
-
title =
|
|
104
|
+
title = api.data.dup
|
|
105
105
|
@toc << "#{_nbsp(3)}<b>#@section</b> #{title}<br>"
|
|
106
|
-
|
|
106
|
+
api.data = _slug(api.data)
|
|
107
107
|
next_output
|
|
108
|
-
|
|
108
|
+
api.out "<h3>#@section #{title}</h3>\n"
|
|
109
109
|
rescue => err
|
|
110
110
|
::STDERR.puts "#{err}\n#{err.backtrace}"
|
|
111
111
|
exit
|
|
@@ -114,67 +114,66 @@ module Bookish
|
|
|
114
114
|
def subsec(args = nil, body = nil)
|
|
115
115
|
@sec2 += 1
|
|
116
116
|
@subsec = "#@chapter.#@sec.#@sec2"
|
|
117
|
-
title =
|
|
117
|
+
title = api.data.dup
|
|
118
118
|
@toc << "#{_nbsp(6)}<b>#@subsec</b> #{title}<br>"
|
|
119
|
-
|
|
119
|
+
api.data = _slug(api.data)
|
|
120
120
|
next_output
|
|
121
|
-
|
|
121
|
+
api.out "<h3>#@subsec #{title}</h3>\n"
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
def definition_table(args = nil, body = nil)
|
|
125
|
-
title =
|
|
125
|
+
title = api.data
|
|
126
126
|
wide = "95"
|
|
127
127
|
delim = " :: "
|
|
128
|
-
|
|
129
|
-
lines =
|
|
130
|
-
lines.map! {|line|
|
|
128
|
+
api.out "<br><center><table width=#{wide}% cellpadding=5>"
|
|
129
|
+
lines = api.body(true)
|
|
130
|
+
lines.map! {|line| api.format(line) }
|
|
131
131
|
|
|
132
132
|
lines.each do |line|
|
|
133
133
|
cells = line.split(delim)
|
|
134
|
-
|
|
134
|
+
api.out "<tr>"
|
|
135
135
|
cells.each.with_index do |cell, i|
|
|
136
136
|
width = (i == 0) ? "width=15%" : ""
|
|
137
|
-
|
|
137
|
+
api.out " <td #{width} valign=top>#{cell}</td>"
|
|
138
138
|
end
|
|
139
|
-
|
|
139
|
+
api.out "</tr>"
|
|
140
140
|
end
|
|
141
|
-
|
|
141
|
+
api.out "</table></center><br><br>"
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
api.optional_blank_line
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
def table2(args = nil, body = nil)
|
|
147
|
-
title =
|
|
147
|
+
title = api.data
|
|
148
148
|
wide = "90"
|
|
149
|
-
extra =
|
|
149
|
+
extra = api.args[2]
|
|
150
150
|
delim = " :: "
|
|
151
|
-
|
|
152
|
-
lines =
|
|
153
|
-
lines.map! {|line|
|
|
151
|
+
api.out "<br><center><table width=#{wide}% cellpadding=5>"
|
|
152
|
+
lines = api.body(true)
|
|
153
|
+
lines.map! {|line| api.format(line) }
|
|
154
154
|
|
|
155
155
|
lines.each do |line|
|
|
156
156
|
cells = line.split(delim)
|
|
157
157
|
percent = (100/cells.size.to_f).round
|
|
158
|
-
|
|
158
|
+
api.out "<tr>"
|
|
159
159
|
cells.each do |cell|
|
|
160
|
-
|
|
160
|
+
api.out " <td width=#{percent}% valign=top " +
|
|
161
161
|
"#{extra}>#{cell}</td>"
|
|
162
162
|
end
|
|
163
|
-
|
|
163
|
+
api.out "</tr>"
|
|
164
164
|
end
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
_optional_blank_line
|
|
165
|
+
api.out "</table></center><br><br>"
|
|
166
|
+
api.optional_blank_line
|
|
168
167
|
end
|
|
169
168
|
|
|
170
169
|
def simple_table(args = nil, body = nil)
|
|
171
|
-
title =
|
|
170
|
+
title = api.data
|
|
172
171
|
delim = " :: "
|
|
173
|
-
|
|
174
|
-
lines =
|
|
172
|
+
api.out "<table cellpadding=2>"
|
|
173
|
+
lines = api.body(true)
|
|
175
174
|
maxw = nil
|
|
176
175
|
lines.each do |line|
|
|
177
|
-
|
|
176
|
+
api.format(line)
|
|
178
177
|
cells = line.split(delim)
|
|
179
178
|
wide = cells.map {|x| x.length }
|
|
180
179
|
maxw = [0] * cells.size
|
|
@@ -186,26 +185,26 @@ module Bookish
|
|
|
186
185
|
|
|
187
186
|
lines.each do |line|
|
|
188
187
|
cells = line.split(delim)
|
|
189
|
-
|
|
188
|
+
api.out "<tr>"
|
|
190
189
|
cells.each.with_index do |cell, i|
|
|
191
|
-
|
|
192
|
-
"#{cell}</td>"
|
|
190
|
+
api.out " <td width=#{maxw[i]}% valign=top>#{cell}</td>"
|
|
193
191
|
end
|
|
194
|
-
|
|
192
|
+
api.out "</tr>"
|
|
195
193
|
end
|
|
196
|
-
|
|
194
|
+
api.out "</table>"
|
|
195
|
+
api.optional_blank_line
|
|
197
196
|
end
|
|
198
197
|
|
|
199
198
|
def table(args = nil, body = nil)
|
|
200
199
|
@table_num ||= 0
|
|
201
200
|
@table_num += 1
|
|
202
|
-
title =
|
|
201
|
+
title = api.data
|
|
203
202
|
delim = " :: "
|
|
204
|
-
|
|
205
|
-
lines =
|
|
203
|
+
api.out "<br><center><table width=90% cellpadding=5>"
|
|
204
|
+
lines = api.body(true)
|
|
206
205
|
maxw = nil
|
|
207
206
|
lines.each do |line|
|
|
208
|
-
|
|
207
|
+
api.format(line)
|
|
209
208
|
cells = line.split(delim)
|
|
210
209
|
wide = cells.map {|x| x.length }
|
|
211
210
|
maxw = [0] * cells.size
|
|
@@ -217,17 +216,18 @@ module Bookish
|
|
|
217
216
|
|
|
218
217
|
lines.each do |line|
|
|
219
218
|
cells = line.split(delim)
|
|
220
|
-
|
|
219
|
+
api.out "<tr>"
|
|
221
220
|
cells.each.with_index do |cell, i|
|
|
222
|
-
|
|
221
|
+
api.out " <td width=#{maxw}% valign=top>" +
|
|
223
222
|
"#{cell}</td>"
|
|
224
223
|
end
|
|
225
|
-
|
|
224
|
+
api.out "</tr>"
|
|
226
225
|
end
|
|
227
|
-
|
|
226
|
+
api.out "</table>"
|
|
228
227
|
@toc << "#{_nbsp(8)}<b>Table #@chapter.#@table_num</b> #{title}<br>"
|
|
229
228
|
# _next_output(_slug("table_#{title}"))
|
|
230
|
-
|
|
229
|
+
api.out "<b>Table #@chapter.#@table_num #{title}</b></center><br>"
|
|
230
|
+
api.optional_blank_line
|
|
231
231
|
end
|
|
232
232
|
|
|
233
233
|
def toc!(args = nil, body = nil)
|
|
@@ -240,7 +240,7 @@ module Bookish
|
|
|
240
240
|
end
|
|
241
241
|
|
|
242
242
|
def toc2(args = nil, body = nil)
|
|
243
|
-
file =
|
|
243
|
+
file = api.args[0]
|
|
244
244
|
@toc.close
|
|
245
245
|
::File.write(file, <<-EOS)
|
|
246
246
|
<p style="page-break-after:always;"></p>
|
|
@@ -253,26 +253,26 @@ module Bookish
|
|
|
253
253
|
end
|
|
254
254
|
|
|
255
255
|
def missing(args = nil, body = nil)
|
|
256
|
-
@toc << "#{_nbsp(8)}<font color=red>TBD:
|
|
257
|
-
stuff =
|
|
258
|
-
|
|
256
|
+
@toc << "#{_nbsp(8)}<font color=red>TBD: #{api.data}</font><br>"
|
|
257
|
+
stuff = api.data.empty? ? "" : ": #{api.data}"
|
|
258
|
+
api.out "<br><font color=red><i>[Material missing#{stuff}]</i></font><br>\n "
|
|
259
259
|
end
|
|
260
260
|
|
|
261
261
|
def TBC(args = nil, body = nil)
|
|
262
262
|
@toc << "#{_nbsp(8)}<font color=red>To be continued...</font><br>"
|
|
263
|
-
|
|
263
|
+
api.out "<br><font color=red><i>To be continued...</i></font><br>"
|
|
264
264
|
end
|
|
265
265
|
|
|
266
266
|
def note(args = nil, body = nil)
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
267
|
+
api.out "<br><font color=red><i>Note: "
|
|
268
|
+
api.out api.data
|
|
269
|
+
api.out "</i></font><br>\n "
|
|
270
270
|
end
|
|
271
271
|
|
|
272
272
|
def quote(args = nil, body = nil)
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
273
|
+
api.out "<blockquote>"
|
|
274
|
+
api.body {|line| api.out line }
|
|
275
|
+
api.out "</blockquote>"
|
|
276
276
|
rescue => err
|
|
277
277
|
::STDERR.puts "#{err}\n#{err.backtrace}"
|
|
278
278
|
exit
|
data/imports/calibre.rb
CHANGED
|
@@ -2,9 +2,9 @@ require 'fileutils'
|
|
|
2
2
|
|
|
3
3
|
module Calibre
|
|
4
4
|
def epub!(args = nil, body = nil)
|
|
5
|
-
out =
|
|
6
|
-
src =
|
|
7
|
-
@cover =
|
|
5
|
+
out = api.format(api.args[0])
|
|
6
|
+
src = api.args[1]
|
|
7
|
+
@cover = api.args[2]
|
|
8
8
|
if ::File.directory?(src)
|
|
9
9
|
files = ::Dir["#{src}/*"].grep /\.html$/
|
|
10
10
|
files = files.sort # why is this necessary now?
|
data/imports/livemagick.rb
CHANGED
|
@@ -4,24 +4,24 @@ module Livemagick # FIXME auto-mangle names
|
|
|
4
4
|
include ::Magick
|
|
5
5
|
|
|
6
6
|
def image(args = nil, body = nil)
|
|
7
|
-
xx, yy, bg =
|
|
7
|
+
xx, yy, bg = api.args
|
|
8
8
|
xx, yy = xx.to_i, yy.to_i
|
|
9
9
|
@image = Image.new(xx,yy) { self.background_color = bg }
|
|
10
|
-
|
|
10
|
+
api.optional_blank_line
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def canvas(args = nil, body = nil)
|
|
14
|
-
color, width, opacity =
|
|
14
|
+
color, width, opacity = api.args
|
|
15
15
|
opacity, width = opacity.to_i, width.to_i
|
|
16
16
|
@canvas = Draw.new
|
|
17
17
|
@canvas.fill_opacity(0)
|
|
18
18
|
@canvas.stroke('black')
|
|
19
19
|
@canvas.stroke_width(1)
|
|
20
|
-
|
|
20
|
+
api.optional_blank_line
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def rectangle(args = nil, body = nil)
|
|
24
|
-
xy, wxh, stroke_color, stroke_width =
|
|
24
|
+
xy, wxh, stroke_color, stroke_width = api.args
|
|
25
25
|
x, y = xy.split(",").map(&:to_i)
|
|
26
26
|
width, height = wxh.split("x").map(&:to_i)
|
|
27
27
|
stroke_width = stroke_width.to_i
|
|
@@ -32,19 +32,19 @@ module Livemagick # FIXME auto-mangle names
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def pen(args = nil, body = nil)
|
|
35
|
-
@fill, @stroke =
|
|
35
|
+
@fill, @stroke = api.args
|
|
36
36
|
@stroke = "black" if @stroke.nil? || @stroke.empty?
|
|
37
37
|
_debug "pen: fill=#@fill stroke=#@stroke"
|
|
38
|
-
|
|
38
|
+
api.optional_blank_line
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def font(args = nil, body = nil)
|
|
42
|
-
size, font =
|
|
42
|
+
size, font = api.args
|
|
43
43
|
font = "Helvetica" if font.nil? || font.empty?
|
|
44
44
|
size = "32" if size.nil? || size.empty?
|
|
45
45
|
@size, @font = size.to_i, font
|
|
46
46
|
_debug "font: size=#@size font=#@font"
|
|
47
|
-
|
|
47
|
+
api.optional_blank_line
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def _text(xy, wxh, str, weight, gravity)
|
|
@@ -62,34 +62,34 @@ module Livemagick # FIXME auto-mangle names
|
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
def text(args = nil, body = nil)
|
|
65
|
-
xy, wxh, str =
|
|
65
|
+
xy, wxh, str = api.data.split
|
|
66
66
|
weight, gravity = BoldWeight, CenterGravity
|
|
67
67
|
_text(xy, wxh, str, weight, gravity)
|
|
68
|
-
|
|
68
|
+
api.optional_blank_line
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def text!(args = nil, body = nil)
|
|
72
|
-
xy, wxh =
|
|
73
|
-
str =
|
|
72
|
+
xy, wxh = api.data.split
|
|
73
|
+
str = api.body_text # .join
|
|
74
74
|
weight, gravity = BoldWeight, CenterGravity
|
|
75
75
|
_text(xy, wxh, str, weight, gravity)
|
|
76
|
-
|
|
76
|
+
api.optional_blank_line
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
def draw(args = nil, body = nil)
|
|
80
80
|
@canvas.draw(@image)
|
|
81
|
-
|
|
81
|
+
api.optional_blank_line
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
def save(args = nil, body = nil)
|
|
85
85
|
@image.write(_args.first)
|
|
86
|
-
|
|
86
|
+
api.optional_blank_line
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
def save!(args = nil, body = nil)
|
|
90
90
|
save
|
|
91
91
|
system("open #{_args.first}")
|
|
92
|
-
|
|
92
|
+
api.optional_blank_line
|
|
93
93
|
end
|
|
94
94
|
end
|
|
95
95
|
=begin
|
data/imports/markdown.rb
CHANGED
|
@@ -9,12 +9,12 @@ module Markdown
|
|
|
9
9
|
SimpleFormats[:s] = %w[<strike> </strike>]
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
def h1(args = nil, body = nil);
|
|
13
|
-
def h2(args = nil, body = nil);
|
|
14
|
-
def h3(args = nil, body = nil);
|
|
15
|
-
def h4(args = nil, body = nil);
|
|
16
|
-
def h5(args = nil, body = nil);
|
|
17
|
-
def h6(args = nil, body = nil);
|
|
12
|
+
def h1(args = nil, body = nil); api.out "# #{Livetext.interpolate(api.data)}"; api.optional_blank_line end # atx style for now
|
|
13
|
+
def h2(args = nil, body = nil); api.out "## #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
|
|
14
|
+
def h3(args = nil, body = nil); api.out "### #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
|
|
15
|
+
def h4(args = nil, body = nil); api.out "#### #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
|
|
16
|
+
def h5(args = nil, body = nil); api.out "##### #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
|
|
17
|
+
def h6(args = nil, body = nil); api.out "###### #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
|
|
18
18
|
|
|
19
19
|
def title(args = nil, body = nil)
|
|
20
20
|
h1
|
|
@@ -25,18 +25,18 @@ module Markdown
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def bq(args = nil, body = nil) # block quote
|
|
28
|
-
|
|
28
|
+
api.body {|line| api.out "> #{line}" }
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def list(args = nil, body = nil)
|
|
32
|
-
|
|
32
|
+
api.body {|line| api.out " * #{line}" }
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def olist(args = nil, body = nil) # Doesn't handle paragraphs yet
|
|
36
36
|
n = 0
|
|
37
|
-
|
|
37
|
+
api.body do |line|
|
|
38
38
|
n += 1
|
|
39
|
-
|
|
39
|
+
api.out "#{n}. #{_format(line)}"
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|