livetext 0.9.21 → 0.9.25

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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/README.lt3 +8 -8
  3. data/bin/livetext +57 -40
  4. data/imports/bookish.rb +89 -90
  5. data/imports/calibre.rb +3 -3
  6. data/imports/livemagick.rb +17 -17
  7. data/imports/markdown.rb +10 -10
  8. data/imports/pyggish.rb +15 -47
  9. data/imports/tutorial.rb +18 -18
  10. data/lib/cmdargs.rb +10 -6
  11. data/lib/{errors.rb → livetext/errors.rb} +1 -1
  12. data/lib/{formatline.rb → livetext/formatline.rb} +69 -125
  13. data/lib/livetext/funcall.rb +84 -0
  14. data/lib/{functions.rb → livetext/functions.rb} +16 -3
  15. data/lib/livetext/global_helpers.rb +37 -0
  16. data/lib/livetext/handler/import.rb +44 -0
  17. data/lib/livetext/handler/mixin.rb +37 -0
  18. data/lib/livetext/handler.rb +3 -0
  19. data/lib/{helpers.rb → livetext/helpers.rb} +89 -67
  20. data/lib/{html.rb → livetext/html.rb} +3 -2
  21. data/lib/{parser → livetext/parser}/general.rb +0 -3
  22. data/lib/{parser → livetext/parser}/set.rb +1 -6
  23. data/lib/{parser → livetext/parser}/string.rb +2 -2
  24. data/lib/{parser.rb → livetext/parser.rb} +0 -1
  25. data/lib/livetext/parsing.rb +29 -0
  26. data/lib/livetext/paths.rb +13 -0
  27. data/lib/livetext/processor.rb +89 -0
  28. data/lib/livetext/reopen.rb +12 -0
  29. data/lib/livetext/skeleton.rb +17 -0
  30. data/lib/{standard.rb → livetext/standard.rb} +152 -122
  31. data/lib/livetext/userapi.rb +153 -0
  32. data/lib/livetext/version.rb +6 -0
  33. data/lib/livetext.rb +66 -27
  34. data/plugin/bookish.rb +85 -85
  35. data/plugin/calibre.rb +3 -3
  36. data/plugin/livemagick.rb +17 -17
  37. data/plugin/markdown.rb +10 -10
  38. data/plugin/pyggish.rb +131 -162
  39. data/plugin/tutorial.rb +15 -16
  40. data/test/all.rb +6 -0
  41. data/test/snapshots/def_method/expected-output.txt +2 -0
  42. data/test/snapshots/def_method/source.lt3 +4 -2
  43. data/test/snapshots/error_inc_line_num/OUT +17 -0
  44. data/test/snapshots/error_inc_line_num/README.txt +20 -0
  45. data/test/snapshots/error_inc_line_num/expected-output.txt +0 -6
  46. data/test/snapshots/error_inc_line_num/match-error.txt +1 -1
  47. data/test/snapshots/error_line_num/match-error.txt +1 -1
  48. data/test/snapshots/error_missing_end/expected-output.txt +0 -1
  49. data/test/snapshots/error_name_not_permitted/expected-output.txt +4 -0
  50. data/test/snapshots/error_name_not_permitted/match-error.txt +1 -1
  51. data/test/snapshots/error_no_such_copy/duh +26 -0
  52. data/test/snapshots/error_no_such_copy/expected-output.txt +1 -0
  53. data/test/snapshots/error_no_such_copy/match-error.txt +1 -1
  54. data/test/snapshots/error_no_such_copy/mystery.txt +36 -0
  55. data/test/snapshots/error_no_such_inc/match-error.txt +1 -1
  56. data/test/snapshots/error_no_such_mixin/expected-output.txt +1 -0
  57. data/test/snapshots/error_no_such_mixin/match-error.txt +1 -1
  58. data/test/snapshots/error_no_such_mixin/source.lt3 +1 -1
  59. data/test/snapshots/example_alpha/source.lt3 +2 -2
  60. data/test/snapshots/example_alpha2/expected-output.txt +0 -2
  61. data/test/snapshots/example_alpha2/source.lt3 +5 -4
  62. data/test/snapshots/{icanhaz → import}/expected-output.txt +2 -1
  63. data/test/snapshots/import/match-error.txt +1 -0
  64. data/test/snapshots/{icanhaz → import}/simple_import.rb +1 -1
  65. data/test/snapshots/{icanhaz → import}/source.lt3 +2 -2
  66. data/test/snapshots/{icanhaz2 → import2}/expected-error.txt +0 -0
  67. data/test/snapshots/{icanhaz2 → import2}/expected-output.txt +3 -1
  68. data/test/snapshots/{icanhaz2/simple_canhaz.rb → import2/simple_import.rb} +1 -1
  69. data/test/snapshots/import2/source.lt3 +8 -0
  70. data/test/snapshots/import_bookish/expected-error.txt +0 -0
  71. data/test/snapshots/import_bookish/expected-output.txt +10 -0
  72. data/test/snapshots/import_bookish/source.lt3 +7 -0
  73. data/test/snapshots/import_bookish/toc.tmp +0 -0
  74. data/test/snapshots/mixin_bookish/expected-error.txt +0 -0
  75. data/test/snapshots/mixin_bookish/expected-output.txt +10 -0
  76. data/test/snapshots/mixin_bookish/source.lt3 +7 -0
  77. data/test/snapshots/mixin_bookish/toc.tmp +0 -0
  78. data/test/snapshots/more_functions/expected-error.txt +0 -0
  79. data/test/snapshots/more_functions/expected-output.txt +37 -0
  80. data/test/snapshots/more_functions/source.lt3 +40 -0
  81. data/test/snapshots/raw_lines/expected-output.txt +0 -2
  82. data/test/snapshots/simple_import/expected-output.txt +2 -0
  83. data/test/snapshots/simple_import/simple_import.rb +1 -1
  84. data/test/snapshots/simple_import/source.lt3 +3 -1
  85. data/test/snapshots/simple_mixin/simple_mixin.rb +1 -1
  86. data/test/snapshots/single_raw_line/expected-output.txt +0 -2
  87. data/test/snapshots/subset.txt +14 -14
  88. data/test/snapshots.rb +30 -13
  89. data/test/unit/formatline.rb +253 -134
  90. data/test/unit/html.rb +2 -3
  91. data/test/unit/parser/general.rb +1 -2
  92. data/test/unit/parser/mixin.rb +1 -3
  93. data/test/unit/parser/set.rb +8 -12
  94. data/test/unit/parser/string.rb +6 -6
  95. data/test/unit/parser.rb +0 -1
  96. data/test/unit/standard.rb +0 -2
  97. metadata +47 -30
  98. data/imports/markdown_importable.rb +0 -45
  99. data/lib/handler/icanhaz.rb +0 -35
  100. data/lib/handler.rb +0 -1
  101. data/lib/livetext/importable.rb +0 -2
  102. data/lib/parser/file.rb +0 -8
  103. data/lib/parser/import.rb +0 -15
  104. data/lib/parser/mixin.rb +0 -38
  105. data/lib/processor.rb +0 -83
  106. data/lib/userapi.rb +0 -160
  107. data/test/snapshots/icanhaz/match-error.txt +0 -1
  108. data/test/snapshots/icanhaz2/source.lt3 +0 -6
  109. data/test/unit/parser/importable.rb +0 -19
data/lib/livetext.rb CHANGED
@@ -1,32 +1,23 @@
1
- # Class Livetext skeleton (top level).
2
1
 
3
- class Livetext
4
- VERSION = "0.9.21"
5
- Path = File.expand_path(File.join(File.dirname(__FILE__)))
6
-
7
- module Handler
8
- end
9
- end
2
+ require_relative 'livetext/skeleton'
3
+ require_relative 'livetext/version'
4
+ require_relative 'livetext/paths'
10
5
 
11
- # $LOAD_PATH << Livetext::Path
6
+ require_relative 'livetext/reopen'
12
7
 
13
- require 'fileutils'
8
+ require_relative 'livetext/errors'
9
+ require_relative 'livetext/standard'
10
+ require_relative 'livetext/functions'
11
+ require_relative 'livetext/userapi'
12
+ require_relative 'livetext/formatline'
13
+ require_relative 'livetext/processor'
14
+ require_relative 'livetext/helpers'
15
+ require_relative 'livetext/handler'
14
16
 
15
- require_relative 'errors'
16
- require_relative 'functions'
17
- require_relative 'userapi'
18
- require_relative 'standard'
19
- require_relative 'formatline'
20
- require_relative 'processor'
21
- require_relative 'helpers'
22
- require_relative 'handler'
23
17
 
24
- Plugins = File.expand_path(File.join(File.dirname(__FILE__), "../plugin"))
25
- Imports = File.expand_path(File.join(File.dirname(__FILE__), "../imports"))
26
-
27
- TTY = ::File.open("/dev/tty", "w")
28
18
 
29
19
  make_exception(:EndWithoutOpening, "Error: found .end with no opening command")
20
+ make_exception(:UnknownMethod, "Error: name '%1' is unknown")
30
21
 
31
22
  # Class Livetext reopened (top level).
32
23
 
@@ -36,9 +27,10 @@ class Livetext
36
27
 
37
28
  Vars = {}
38
29
 
30
+ TTY = ::File.open("/dev/tty", "w")
39
31
 
40
- attr_reader :main
41
- attr_accessor :no_puts
32
+ attr_reader :main, :sources
33
+ attr_accessor :nopass, :nopara
42
34
  attr_accessor :body, :indentation
43
35
 
44
36
  class << self
@@ -46,7 +38,14 @@ class Livetext
46
38
  end
47
39
 
48
40
  def vars
49
- Livetext::Vars.dup
41
+ @_vars
42
+ end
43
+
44
+ def self.interpolate(str)
45
+ # FIXME There are issues here...
46
+ # Livetext::FormatLine.var_func_parse(str)
47
+ parse = Livetext::FormatLine.new(str)
48
+ parse.var_func_parse
50
49
  end
51
50
 
52
51
  def self.customize(mix: [], call: [], vars: {})
@@ -59,10 +58,41 @@ class Livetext
59
58
  obj
60
59
  end
61
60
 
61
+ def peek_nextline
62
+ @main.peek_nextline # delegate
63
+ end
64
+
65
+ def nextline
66
+ @main.nextline # delegate
67
+ end
68
+
69
+ def sources
70
+ @main.sources # delegate
71
+ end
72
+
73
+ def save_location
74
+ @save_location # delegate
75
+ end
76
+
77
+ def save_location=(where)
78
+ @save_location = where # delegate
79
+ end
80
+
81
+ def dump(file = nil) # not a dot command!
82
+ file ||= ::STDOUT
83
+ file.puts @body
84
+ rescue => err
85
+ TTY.puts "#dump had an error: #{err.inspect}"
86
+ end
87
+
88
+ def graceful_error(err)
89
+ dump
90
+ raise err
91
+ end
92
+
62
93
  def customize(mix: [], call: [], vars: {})
63
94
  mix = Array(mix)
64
95
  call = Array(call)
65
- # FIXME HF won't this break??
66
96
  mix.each {|lib| mixin(lib) }
67
97
  call.each {|cmd| @main.send(cmd[1..-1]) } # ignores leading dot, no param
68
98
  vars.each_pair {|var, val| setvar(var, val.to_s) }
@@ -72,6 +102,7 @@ class Livetext
72
102
  def initialize(output = ::STDOUT)
73
103
  @source = nil
74
104
  @_mixins = []
105
+ @_imports = []
75
106
  @_outdir = "."
76
107
  @no_puts = output.nil?
77
108
  @body = ""
@@ -79,6 +110,14 @@ class Livetext
79
110
  @indentation = [0]
80
111
  @_vars = Livetext::Vars
81
112
  initial_vars
113
+ @api = UserAPI.new(self)
114
+ end
115
+
116
+ def api
117
+ @api
118
+ end
119
+
120
+ def interpolate(str)
82
121
  end
83
122
 
84
123
  def initial_vars
@@ -98,7 +137,7 @@ class Livetext
98
137
  process_line(line)
99
138
  end
100
139
  result = @body
101
- @body = ""
140
+ # @body = ""
102
141
  result
103
142
  end
104
143
 
data/plugin/bookish.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  def hardbreaks(args = nil, body = nil)
2
2
  @hard = false
3
- @hard = true unless @_args.first == "off"
3
+ @hard = true unless api.args.first == "off"
4
4
  end
5
5
 
6
6
  def hardbreaks?
@@ -13,27 +13,27 @@ end
13
13
 
14
14
  # These are duplicated. Remove safely
15
15
 
16
- def h1; _out "<h1>#{@_data}</h1>"; end
17
- def h2; _out "<h2>#{@_data}</h2>"; end
18
- def h3; _out "<h3>#{@_data}</h3>"; end
16
+ def h1; api.out "<h1>#{api.data}</h1>"; end
17
+ def h2; api.out "<h2>#{api.data}</h2>"; end
18
+ def h3; api.out "<h3>#{api.data}</h3>"; end
19
19
 
20
20
  def alpha_columns(args = nil, body = nil)
21
- n = @_args.first.to_i # FIXME: what if missing?
21
+ n = api.args.first.to_i # FIXME: what if it's missing?
22
22
  words = []
23
- _body do |line|
23
+ api.body do |line|
24
24
  words << line.chomp
25
25
  end
26
26
  words.sort!
27
- _out "<table cellpadding=2>"
27
+ api.out "<table cellpadding=2>"
28
28
  words.each_slice(n) do |w|
29
29
  items = w.map {|x| "<tt>#{x}</tt>" }
30
- _out "<tr><td width=5% valign=top></td><td>" + items.join("</td><td>") + "</td></tr>"
30
+ api.out "<tr><td width=5% valign=top></td><td>" + items.join("</td><td>") + "</td></tr>"
31
31
  end
32
- _out "</table>"
32
+ api.out "</table>"
33
33
  end
34
34
 
35
35
  # def comment
36
- # _body { } # ignore body
36
+ # api.body { } # ignore body
37
37
  # end
38
38
 
39
39
  def _errout(*args)
@@ -50,32 +50,31 @@ def _slug(str)
50
50
  s2
51
51
  end
52
52
 
53
-
54
53
  # FIXME duplicated?
54
+
55
55
  def image(args = nil, body = nil)
56
- name = @_args[0]
57
- _out "<img src='#{name}'></img>"
56
+ name = api.args[0]
57
+ api.out "<img src='#{name}'></img>"
58
58
  end
59
59
 
60
60
  def figure(args = nil, body = nil)
61
- name = @_args[0]
62
- num = @_args[1]
63
- title = @_args[2..-1].join(" ")
64
- title = _format(title)
65
- _out "<img src='#{name}'></img>"
66
- _out "<center><b>Figure #{num}</b> #{title}</center>"
61
+ name = api.args[0]
62
+ num = api.args[1]
63
+ title = api.args[2..-1].join(" ")
64
+ title = api.format(title)
65
+ api.out "<img src='#{name}'></img>"
66
+ api.out "<center><b>Figure #{num}</b> #{title}</center>"
67
67
  end
68
68
 
69
69
  def chapter(args = nil, body = nil)
70
- # _errout("chapter")
71
- @chapter = @_args.first.to_i
70
+ @chapter = api.args.first.to_i
72
71
  @sec = @sec2 = 0
73
- title = @_data.split(" ",2)[1]
72
+ title = api.data.split(" ",2)[1]
74
73
  @toc << "<br><b>#@chapter</b> #{title}<br>"
75
- @_data = _slug(title)
74
+ api.data = _slug(title)
76
75
  next_output
77
- _out "<title>#{@chapter}. #{title}</title>"
78
- _out <<-HTML
76
+ api.out "<title>#{@chapter}. #{title}</title>"
77
+ api.out <<-HTML
79
78
  <h2>Chapter #{@chapter}</h2>
80
79
  <h1>#{title}</h1>
81
80
 
@@ -85,13 +84,13 @@ end
85
84
  def chapterN(args = nil, body = nil)
86
85
  @chapter += 1
87
86
  @sec = @sec2 = 0
88
- title = @_data # .split(" ",2)[1]
87
+ title = api.data # .split(" ",2)[1]
89
88
  _errout("Chapter #@chapter: #{title}")
90
89
  @toc << "<br><b>#@chapter</b> #{title}<br>"
91
- @_data = _slug(title)
90
+ api.data = _slug(title)
92
91
  next_output
93
- _out "<title>#{@chapter}. #{title}</title>"
94
- _out <<-HTML
92
+ api.out "<title>#{@chapter}. #{title}</title>"
93
+ api.out <<-HTML
95
94
  <h2>Chapter #{@chapter}</h2>
96
95
  <h1>#{title}</h1>
97
96
 
@@ -102,80 +101,79 @@ def sec(args = nil, body = nil)
102
101
  @sec += 1
103
102
  @sec2 = 0
104
103
  @section = "#@chapter.#@sec"
105
- title = @_data.dup
104
+ title = api.data.dup
106
105
  @toc << "#{_nbsp(3)}<b>#@section</b> #{title}<br>"
107
- @_data = _slug(@_data)
106
+ api.data = _slug(api.data)
108
107
  next_output
109
- _out "<h3>#@section #{title}</h3>\n"
108
+ api.out "<h3>#@section #{title}</h3>\n"
110
109
  rescue => err
111
- STDERR.puts "#{err}\n#{err.backtrace}"
110
+ ::STDERR.puts "#{err}\n#{err.backtrace}"
112
111
  exit
113
112
  end
114
113
 
115
114
  def subsec(args = nil, body = nil)
116
115
  @sec2 += 1
117
116
  @subsec = "#@chapter.#@sec.#@sec2"
118
- title = @_data.dup
117
+ title = api.data.dup
119
118
  @toc << "#{_nbsp(6)}<b>#@subsec</b> #{title}<br>"
120
- @_data = _slug(@_data)
119
+ api.data = _slug(api.data)
121
120
  next_output
122
- _out "<h3>#@subsec #{title}</h3>\n"
121
+ api.out "<h3>#@subsec #{title}</h3>\n"
123
122
  end
124
123
 
125
124
  def definition_table(args = nil, body = nil)
126
- title = @_data
125
+ title = api.data
127
126
  wide = "95"
128
127
  delim = " :: "
129
- _out "<br><center><table width=#{wide}% cellpadding=5>"
130
- lines = _body(true)
131
- lines.map! {|line| _format(line) }
128
+ api.out "<br><center><table width=#{wide}% cellpadding=5>"
129
+ lines = api.body(true)
130
+ lines.map! {|line| api.format(line) }
132
131
 
133
132
  lines.each do |line|
134
133
  cells = line.split(delim)
135
- _out "<tr>"
134
+ api.out "<tr>"
136
135
  cells.each.with_index do |cell, i|
137
136
  width = (i == 0) ? "width=15%" : ""
138
- _out " <td #{width} valign=top>#{cell}</td>"
137
+ api.out " <td #{width} valign=top>#{cell}</td>"
139
138
  end
140
- _out "</tr>"
139
+ api.out "</tr>"
141
140
  end
142
- _out "</table></center><br><br>"
141
+ api.out "</table></center><br><br>"
143
142
 
144
- _optional_blank_line
143
+ api.optional_blank_line
145
144
  end
146
145
 
147
146
  def table2(args = nil, body = nil)
148
- title = @_data
147
+ title = api.data
149
148
  wide = "90"
150
- extra = _args[2]
149
+ extra = api.args[2]
151
150
  delim = " :: "
152
- _out "<br><center><table width=#{wide}% cellpadding=5>"
153
- lines = _body(true)
154
- lines.map! {|line| _format(line) }
151
+ api.out "<br><center><table width=#{wide}% cellpadding=5>"
152
+ lines = api.body(true)
153
+ lines.map! {|line| api.format(line) }
155
154
 
156
155
  lines.each do |line|
157
156
  cells = line.split(delim)
158
157
  percent = (100/cells.size.to_f).round
159
- _out "<tr>"
158
+ api.out "<tr>"
160
159
  cells.each do |cell|
161
- _out " <td width=#{percent}% valign=top " +
160
+ api.out " <td width=#{percent}% valign=top " +
162
161
  "#{extra}>#{cell}</td>"
163
162
  end
164
- _out "</tr>"
163
+ api.out "</tr>"
165
164
  end
166
- _out "</table></center><br><br>"
167
-
168
- _optional_blank_line
165
+ api.out "</table></center><br><br>"
166
+ api.optional_blank_line
169
167
  end
170
168
 
171
169
  def simple_table(args = nil, body = nil)
172
- title = @_data
170
+ title = api.data
173
171
  delim = " :: "
174
- _out "<table cellpadding=2>"
175
- lines = _body(true)
172
+ api.out "<table cellpadding=2>"
173
+ lines = api.body(true)
176
174
  maxw = nil
177
175
  lines.each do |line|
178
- _format(line)
176
+ api.format(line)
179
177
  cells = line.split(delim)
180
178
  wide = cells.map {|x| x.length }
181
179
  maxw = [0] * cells.size
@@ -187,26 +185,27 @@ def simple_table(args = nil, body = nil)
187
185
 
188
186
  lines.each do |line|
189
187
  cells = line.split(delim)
190
- _out "<tr>"
188
+ api.out "<tr>"
191
189
  cells.each.with_index do |cell, i|
192
- _out " <td width=#{maxw}% valign=top>" +
190
+ api.out " <td width=#{maxw}% valign=top>" +
193
191
  "#{cell}</td>"
194
192
  end
195
- _out "</tr>"
193
+ api.out "</tr>"
196
194
  end
197
- _out "</table>"
195
+ api.out "</table>"
196
+ api.optional_blank_line
198
197
  end
199
198
 
200
199
  def table(args = nil, body = nil)
201
200
  @table_num ||= 0
202
201
  @table_num += 1
203
- title = @_data
202
+ title = api.data
204
203
  delim = " :: "
205
- _out "<br><center><table width=90% cellpadding=5>"
206
- lines = _body(true)
204
+ api.out "<br><center><table width=90% cellpadding=5>"
205
+ lines = api.body(true)
207
206
  maxw = nil
208
207
  lines.each do |line|
209
- _format(line)
208
+ api.format(line)
210
209
  cells = line.split(delim)
211
210
  wide = cells.map {|x| x.length }
212
211
  maxw = [0] * cells.size
@@ -218,17 +217,18 @@ def table(args = nil, body = nil)
218
217
 
219
218
  lines.each do |line|
220
219
  cells = line.split(delim)
221
- _out "<tr>"
220
+ api.out "<tr>"
222
221
  cells.each.with_index do |cell, i|
223
- _out " <td width=#{maxw}% valign=top>" +
222
+ api.out " <td width=#{maxw}% valign=top>" +
224
223
  "#{cell}</td>"
225
224
  end
226
- _out "</tr>"
225
+ api.out "</tr>"
227
226
  end
228
- _out "</table>"
227
+ api.out "</table>"
229
228
  @toc << "#{_nbsp(8)}<b>Table #@chapter.#@table_num</b> #{title}<br>"
230
229
  # _next_output(_slug("table_#{title}"))
231
- _out "<b>Table #@chapter.#@table_num &nbsp;&nbsp; #{title}</b></center><br>"
230
+ api.out "<b>Table #@chapter.#@table_num &nbsp;&nbsp; #{title}</b></center><br>"
231
+ api.optional_blank_line
232
232
  end
233
233
 
234
234
  def toc!(args = nil, body = nil)
@@ -241,7 +241,7 @@ rescue => err
241
241
  end
242
242
 
243
243
  def toc2(args = nil, body = nil)
244
- file = @_args[0]
244
+ file = api.args[0]
245
245
  @toc.close
246
246
  ::File.write(file, <<-EOS)
247
247
  <p style="page-break-after:always;"></p>
@@ -254,28 +254,28 @@ EOS
254
254
  end
255
255
 
256
256
  def missing(args = nil, body = nil)
257
- @toc << "#{_nbsp(8)}<font color=red>TBD: #@_data</font><br>"
258
- stuff = @_data.empty? ? "" : ": #@_data"
259
- _out "<br><font color=red><i>[Material missing#{stuff}]</i></font><br>\n "
257
+ @toc << "#{_nbsp(8)}<font color=red>TBD: #{api.data}</font><br>"
258
+ stuff = api.data.empty? ? "" : ": #{api.data}"
259
+ api.out "<br><font color=red><i>[Material missing#{stuff}]</i></font><br>\n "
260
260
  end
261
261
 
262
262
  def TBC(args = nil, body = nil)
263
263
  @toc << "#{_nbsp(8)}<font color=red>To be continued...</font><br>"
264
- _out "<br><font color=red><i>To be continued...</i></font><br>"
264
+ api.out "<br><font color=red><i>To be continued...</i></font><br>"
265
265
  end
266
266
 
267
267
  def note(args = nil, body = nil)
268
- _out "<br><font color=red><i>Note: "
269
- _out @_data
270
- _out "</i></font><br>\n "
268
+ api.out "<br><font color=red><i>Note: "
269
+ api.out api.data
270
+ api.out "</i></font><br>\n "
271
271
  end
272
272
 
273
273
  def quote(args = nil, body = nil)
274
- _out "<blockquote>"
275
- _body {|line| _out line }
276
- _out "</blockquote>"
274
+ api.out "<blockquote>"
275
+ api.body {|line| api.out line }
276
+ api.out "</blockquote>"
277
277
  rescue => err
278
- STDERR.puts "#{err}\n#{err.backtrace}"
278
+ ::STDERR.puts "#{err}\n#{err.backtrace}"
279
279
  exit
280
280
  end
281
281
 
data/plugin/calibre.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'fileutils'
2
2
 
3
3
  def epub!(args = nil, body = nil)
4
- out = _format(@_args[0])
5
- src = @_args[1]
6
- @cover = @_args[2]
4
+ out = api.format(api.args[0])
5
+ src = api.args[1]
6
+ @cover = api.args[2]
7
7
  if ::File.directory?(src)
8
8
  files = ::Dir["#{src}/*"].grep /\.html$/
9
9
  files = files.sort # why is this necessary now?
data/plugin/livemagick.rb CHANGED
@@ -2,24 +2,24 @@ require 'rmagick'
2
2
  include ::Magick
3
3
 
4
4
  def image(args = nil, body = nil)
5
- xx, yy, bg = _args
5
+ xx, yy, bg = api.args
6
6
  xx, yy = xx.to_i, yy.to_i
7
7
  @image = Image.new(xx,yy) { self.background_color = bg }
8
- _optional_blank_line
8
+ api.optional_blank_line
9
9
  end
10
10
 
11
11
  def canvas(args = nil, body = nil)
12
- color, width, opacity = _args
12
+ color, width, opacity = api.args
13
13
  opacity, width = opacity.to_i, width.to_i
14
14
  @canvas = Draw.new
15
15
  @canvas.fill_opacity(0)
16
16
  @canvas.stroke('black')
17
17
  @canvas.stroke_width(1)
18
- _optional_blank_line
18
+ api.optional_blank_line
19
19
  end
20
20
 
21
21
  def rectangle(args = nil, body = nil)
22
- xy, wxh, stroke_color, stroke_width = _args
22
+ xy, wxh, stroke_color, stroke_width = api.args
23
23
  x, y = xy.split(",").map(&:to_i)
24
24
  width, height = wxh.split("x").map(&:to_i)
25
25
  stroke_width = stroke_width.to_i
@@ -30,19 +30,19 @@ def rectangle(args = nil, body = nil)
30
30
  end
31
31
 
32
32
  def pen(args = nil, body = nil)
33
- @fill, @stroke = _args
33
+ @fill, @stroke = api.args
34
34
  @stroke = "black" if @stroke.nil? || @stroke.empty?
35
35
  _debug "pen: fill=#@fill stroke=#@stroke"
36
- _optional_blank_line
36
+ api.optional_blank_line
37
37
  end
38
38
 
39
39
  def font(args = nil, body = nil)
40
- size, font = _args
40
+ size, font = api.args
41
41
  font = "Helvetica" if font.nil? || font.empty?
42
42
  size = "32" if size.nil? || size.empty?
43
43
  @size, @font = size.to_i, font
44
44
  _debug "font: size=#@size font=#@font"
45
- _optional_blank_line
45
+ api.optional_blank_line
46
46
  end
47
47
 
48
48
  def _text(xy, wxh, str, weight, gravity)
@@ -60,34 +60,34 @@ def _text(xy, wxh, str, weight, gravity)
60
60
  end
61
61
 
62
62
  def text(args = nil, body = nil)
63
- xy, wxh, str = _data.split
63
+ xy, wxh, str = api.data.split
64
64
  weight, gravity = BoldWeight, CenterGravity
65
65
  _text(xy, wxh, str, weight, gravity)
66
- _optional_blank_line
66
+ api.optional_blank_line
67
67
  end
68
68
 
69
69
  def text!(args = nil, body = nil)
70
- xy, wxh = _data.split
71
- str = _body_text # .join
70
+ xy, wxh = api.data.split
71
+ str = api.body_text # .join
72
72
  weight, gravity = BoldWeight, CenterGravity
73
73
  _text(xy, wxh, str, weight, gravity)
74
- _optional_blank_line
74
+ api.optional_blank_line
75
75
  end
76
76
 
77
77
  def draw(args = nil, body = nil)
78
78
  @canvas.draw(@image)
79
- _optional_blank_line
79
+ api.optional_blank_line
80
80
  end
81
81
 
82
82
  def save(args = nil, body = nil)
83
83
  @image.write(_args.first)
84
- _optional_blank_line
84
+ api.optional_blank_line
85
85
  end
86
86
 
87
87
  def save!(args = nil, body = nil)
88
88
  save
89
89
  system("open #{_args.first}")
90
- _optional_blank_line
90
+ api.optional_blank_line
91
91
  end
92
92
 
93
93
  =begin
data/plugin/markdown.rb CHANGED
@@ -8,12 +8,12 @@ SimpleFormats[:t] = %w[` `]
8
8
  SimpleFormats[:s] = %w[<strike> </strike>]
9
9
 
10
10
 
11
- def h1(args = nil, body = nil); _out "# #{Livetext.interpolate(@_data)}"; _optional_blank_line end # atx style for now
12
- def h2(args = nil, body = nil); _out "## #{Livetext.interpolate(@_data)}"; _optional_blank_line end
13
- def h3(args = nil, body = nil); _out "### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
14
- def h4(args = nil, body = nil); _out "#### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
15
- def h5(args = nil, body = nil); _out "##### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
16
- def h6(args = nil, body = nil); _out "###### #{Livetext.interpolate(@_data)}"; _optional_blank_line end
11
+ def h1(args = nil, body = nil); api.out "# #{Livetext.interpolate(api.data)}"; api.optional_blank_line end # atx style for now
12
+ def h2(args = nil, body = nil); api.out "## #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
13
+ def h3(args = nil, body = nil); api.out "### #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
14
+ def h4(args = nil, body = nil); api.out "#### #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
15
+ def h5(args = nil, body = nil); api.out "##### #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
16
+ def h6(args = nil, body = nil); api.out "###### #{Livetext.interpolate(api.data)}"; api.optional_blank_line end
17
17
 
18
18
  def title(args = nil, body = nil)
19
19
  h1
@@ -24,18 +24,18 @@ def section(args = nil, body = nil)
24
24
  end
25
25
 
26
26
  def bq(args = nil, body = nil) # block quote
27
- _body {|line| _out "> #{line}" }
27
+ api.body {|line| api.out "> #{line}" }
28
28
  end
29
29
 
30
30
  def list(args = nil, body = nil)
31
- _body {|line| _out " * #{line}" }
31
+ api.body {|line| api.out " * #{line}" }
32
32
  end
33
33
 
34
34
  def olist(args = nil, body = nil) # Doesn't handle paragraphs yet
35
35
  n = 0
36
- _body do |line|
36
+ api.body do |line|
37
37
  n += 1
38
- _out "#{n}. #{_format(line)}"
38
+ api.out "#{n}. #{_format(line)}"
39
39
  end
40
40
  end
41
41