livetext 0.9.14 → 0.9.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cmdargs.rb +93 -0
  3. data/lib/formatline.rb +56 -83
  4. data/lib/helpers.rb +142 -4
  5. data/lib/livetext.rb +11 -141
  6. data/lib/parser/file.rb +8 -0
  7. data/lib/parser/mixin.rb +28 -15
  8. data/lib/parser/set.rb +35 -26
  9. data/lib/parser/string.rb +19 -4
  10. data/lib/processor.rb +1 -4
  11. data/lib/standard.rb +56 -96
  12. data/plugin/bookish.rb +26 -22
  13. data/plugin/calibre.rb +1 -1
  14. data/plugin/livemagick.rb +10 -10
  15. data/plugin/markdown.rb +13 -11
  16. data/plugin/pyggish.rb +94 -84
  17. data/plugin/tutorial.rb +10 -5
  18. data/test/all.rb +0 -1
  19. data/test/snapshots/OMIT.txt +7 -8
  20. data/test/snapshots/clusion.txt +35 -0
  21. data/test/snapshots/error_inc_line_num/actual-error.txt +14 -0
  22. data/test/snapshots/error_inc_line_num/actual-output.txt +7 -0
  23. data/test/snapshots/error_inc_line_num/match-error.txt +1 -1
  24. data/test/snapshots/error_inc_line_num/out-sdiff.txt +14 -0
  25. data/test/snapshots/error_invalid_name/actual-error.txt +10 -0
  26. data/test/snapshots/error_invalid_name/actual-output.txt +0 -0
  27. data/test/snapshots/error_invalid_name/match-error.txt +1 -1
  28. data/test/snapshots/error_invalid_name/out-sdiff.txt +6 -0
  29. data/test/snapshots/error_line_num/match-error.txt +1 -1
  30. data/test/snapshots/error_mismatched_end/match-error.txt +1 -1
  31. data/test/snapshots/error_missing_end/actual-error.txt +10 -0
  32. data/test/snapshots/error_missing_end/actual-output.txt +0 -0
  33. data/test/snapshots/error_missing_end/match-error.txt +1 -1
  34. data/test/snapshots/error_missing_end/out-sdiff.txt +6 -0
  35. data/test/snapshots/error_no_such_copy/actual-error.txt +10 -0
  36. data/test/snapshots/error_no_such_copy/actual-output.txt +0 -0
  37. data/test/snapshots/error_no_such_copy/match-error.txt +1 -1
  38. data/test/snapshots/error_no_such_copy/out-sdiff.txt +5 -0
  39. data/test/snapshots/error_no_such_copy/source.lt3 +0 -1
  40. data/test/snapshots/error_no_such_inc/actual-error.txt +10 -0
  41. data/test/snapshots/error_no_such_inc/actual-output.txt +0 -0
  42. data/test/snapshots/error_no_such_inc/match-error.txt +1 -1
  43. data/test/snapshots/error_no_such_inc/out-sdiff.txt +6 -0
  44. data/test/snapshots/error_no_such_mixin/actual-error.txt +37 -0
  45. data/test/snapshots/error_no_such_mixin/actual-output.txt +0 -0
  46. data/test/snapshots/error_no_such_mixin/out-sdiff.txt +6 -0
  47. data/test/snapshots/simple_import/actual-error.txt +8 -0
  48. data/test/snapshots/simple_import/actual-output.txt +3 -0
  49. data/test/snapshots/simple_import/err-sdiff.txt +9 -0
  50. data/test/snapshots/simple_import/expected-error.txt +0 -0
  51. data/test/snapshots/simple_import/expected-output.txt +7 -0
  52. data/test/snapshots/simple_import/out-sdiff.txt +9 -0
  53. data/test/snapshots/simple_import/simple_import.rb +5 -0
  54. data/test/snapshots/simple_import/source.lt3 +7 -0
  55. data/test/snapshots/simple_include/source.lt3 +0 -1
  56. data/test/snapshots.rb +3 -2
  57. data/test/unit/all.rb +1 -0
  58. data/test/unit/formatline.rb +650 -0
  59. data/test/unit/parser/importable.rb +1 -1
  60. data/test/unit/parser/mixin.rb +1 -1
  61. data/test/unit/parser/set.rb +19 -12
  62. data/test/unit/parser/string.rb +14 -14
  63. metadata +32 -5
  64. data/test/formatting-tests.rb +0 -35
  65. data/test/formatting.rb +0 -103
  66. data/test/snapshots/formatting-tests.txt +0 -124
data/lib/standard.rb CHANGED
@@ -5,8 +5,8 @@ require_relative 'html'
5
5
  require_relative 'helpers'
6
6
 
7
7
  make_exception(:ExpectedOnOff, "Error: expected 'on' or 'off'")
8
- make_exception(:DisallowedName, "Error: name %1 is invalid")
9
- make_exception(:FileNotFound, "Error: file %1 not found")
8
+ make_exception(:DisallowedName, "Error: name '%1' is invalid")
9
+ make_exception(:FileNotFound, "Error: file '%1' not found")
10
10
 
11
11
 
12
12
  # Module Standard comprises most of the standard or "common" methods.
@@ -30,7 +30,8 @@ module Livetext::Standard
30
30
  @_mixins = []
31
31
  end
32
32
 
33
- def bits # dumb name - bold, italic, teletype, striketrough
33
+ # dumb name - bold, italic, teletype, striketrough
34
+ def bits(args = nil, body = nil)
34
35
  b0, b1, i0, i1, t0, t1, s0, s1 = *@_args
35
36
  SimpleFormats[:b] = [b0, b1]
36
37
  SimpleFormats[:i] = [i0, i1]
@@ -38,23 +39,23 @@ module Livetext::Standard
38
39
  SimpleFormats[:s] = [s0, s1]
39
40
  end
40
41
 
41
- def backtrace
42
+ def backtrace(args = nil, body = nil)
42
43
  @backtrace = onoff(@_args.first)
43
44
  _optional_blank_line
44
45
  end
45
46
 
46
- def comment
47
+ def comment(args = nil, body = nil)
47
48
  _body
48
49
  _optional_blank_line
49
50
  end
50
51
 
51
- def shell
52
+ def shell(args = nil, body = nil)
52
53
  cmd = @_data.chomp
53
54
  system(cmd)
54
55
  _optional_blank_line
55
56
  end
56
57
 
57
- def func
58
+ def func(args = nil, body = nil)
58
59
  funcname = @_args[0]
59
60
  check_disallowed(funcname)
60
61
  func_def = <<~EOS
@@ -63,25 +64,24 @@ module Livetext::Standard
63
64
  end
64
65
  EOS
65
66
  _optional_blank_line
66
-
67
67
  Livetext::Functions.class_eval func_def
68
68
  end
69
69
 
70
- def h1; _out wrapped(@_data, :h1); end
71
- def h2; _out wrapped(@_data, :h2); end
72
- def h3; _out wrapped(@_data, :h3); end
73
- def h4; _out wrapped(@_data, :h4); end
74
- def h5; _out wrapped(@_data, :h5); end
75
- def h6; _out wrapped(@_data, :h6); end
70
+ def h1(args = nil, body = nil); _out wrapped(@_data, :h1); end
71
+ def h2(args = nil, body = nil); _out wrapped(@_data, :h2); end
72
+ def h3(args = nil, body = nil); _out wrapped(@_data, :h3); end
73
+ def h4(args = nil, body = nil); _out wrapped(@_data, :h4); end
74
+ def h5(args = nil, body = nil); _out wrapped(@_data, :h5); end
75
+ def h6(args = nil, body = nil); _out wrapped(@_data, :h6); end
76
76
 
77
- def list
77
+ def list(args = nil, body = nil)
78
78
  wrap :ul do
79
79
  _body {|line| _out wrapped(line, :li) }
80
80
  end
81
81
  _optional_blank_line
82
82
  end
83
83
 
84
- def list!
84
+ def list!(args = nil, body = nil)
85
85
  wrap(:ul) do
86
86
  lines = _body.each # enumerator
87
87
  loop do
@@ -94,49 +94,49 @@ module Livetext::Standard
94
94
  _optional_blank_line
95
95
  end
96
96
 
97
- def shell!
97
+ def shell!(args = nil, body = nil)
98
98
  cmd = @_data.chomp
99
99
  system(cmd)
100
100
  _optional_blank_line
101
101
  end
102
102
 
103
- def errout
103
+ def errout(args = nil, body = nil)
104
104
  STDERR.puts @_data.chomp
105
105
  _optional_blank_line
106
106
  end
107
107
 
108
- def ttyout
108
+ def ttyout(args = nil, body = nil)
109
109
  TTY.puts @_data.chomp
110
110
  _optional_blank_line
111
111
  end
112
112
 
113
- def say
113
+ def say(args = nil, body = nil)
114
114
  str = _format(@_data.chomp)
115
115
  TTY.puts str
116
116
  _optional_blank_line
117
117
  end
118
118
 
119
- def banner
119
+ def banner(args = nil, body = nil)
120
120
  str = _format(@_data.chomp)
121
121
  num = str.length - 1
122
122
  decor = "-"*num + "\n"
123
123
  puts decor + str + "\n" + decor
124
124
  end
125
125
 
126
- def quit
126
+ def quit(args = nil, body = nil)
127
127
  puts @body
128
128
  @body = ""
129
129
  @output.close
130
130
  end
131
131
 
132
- def cleanup
132
+ def cleanup(args = nil, body = nil)
133
133
  @_args.each do |item|
134
134
  cmd = ::File.directory?(item) ? "rm -f #{item}/*" : "rm #{item}"
135
135
  system(cmd)
136
136
  end
137
137
  end
138
138
 
139
- def _def
139
+ def dot_def(args = nil, body = nil)
140
140
  name = @_args[0]
141
141
  str = "def #{name}\n"
142
142
  check_disallowed(name)
@@ -144,11 +144,9 @@ module Livetext::Standard
144
144
  str << _body(true).join("\n")
145
145
  str << "\nend\n"
146
146
  eval str
147
- # rescue => err
148
- # _error!(err)
149
147
  end
150
148
 
151
- def set
149
+ def set(args = nil, body = nil)
152
150
  line = _data.chomp
153
151
  pairs = Livetext::ParseSet.new(line).parse
154
152
  set_variables(pairs)
@@ -156,7 +154,7 @@ module Livetext::Standard
156
154
 
157
155
  # FIXME really these should be one method...
158
156
 
159
- def variables! # cwd, not FileDir - weird, fix later
157
+ def variables!(args = nil, body = nil) # cwd, not FileDir - weird, fix later
160
158
  prefix = _args[0]
161
159
  file = _args[1]
162
160
  prefix = nil if prefix == "-" # FIXME dumb hack
@@ -170,7 +168,7 @@ module Livetext::Standard
170
168
  set_variables(pairs)
171
169
  end
172
170
 
173
- def variables
171
+ def variables(args = nil, body = nil)
174
172
  prefix = _args[0]
175
173
  file = _args[1]
176
174
  prefix = nil if prefix == "-" # FIXME dumb hack
@@ -184,7 +182,7 @@ module Livetext::Standard
184
182
  set_variables(pairs)
185
183
  end
186
184
 
187
- def heredoc
185
+ def heredoc(args = nil, body = nil)
188
186
  var = @_args[0]
189
187
  text = _body.join("\n")
190
188
  rhs = ""
@@ -194,52 +192,26 @@ module Livetext::Standard
194
192
  end
195
193
  indent = @parent.indentation.last
196
194
  indented = " " * indent
197
- @parent._setvar(var, rhs.chomp)
195
+ @parent.setvar(var, rhs.chomp)
198
196
  _optional_blank_line
199
197
  end
200
198
 
201
- def _seek(file)
202
- value = nil
203
- return file if File.exist?(file)
204
-
205
- count = 1
206
- loop do
207
- front = "../" * count
208
- count += 1
209
- here = Pathname.new(front).expand_path.dirname.to_s
210
- break if here == "/"
211
- path = front + file
212
- value = path if File.exist?(path)
213
- break if value
214
- end
215
- STDERR.puts "Cannot find #{file.inspect} from #{Dir.pwd}" unless value
216
- return value
217
- rescue
218
- STDERR.puts "Can't find #{file.inspect} from #{Dir.pwd}"
219
- return nil
220
- end
221
-
222
- def seek # like include, but search upward as needed
199
+ def seek(args = nil, body = nil) # like include, but search upward as needed
223
200
  file = @_args.first
224
- file = _seek(file)
201
+ file = search_upward(file)
225
202
  check_file_exists(file)
226
203
  @parent.process_file(file)
227
204
  _optional_blank_line
228
205
  end
229
206
 
230
- def _include # dot command
207
+ def dot_include(args = nil, body = nil) # dot command
231
208
  file = _format(@_args.first) # allows for variables
232
209
  check_file_exists(file)
233
210
  @parent.process_file(file)
234
211
  _optional_blank_line
235
212
  end
236
213
 
237
- def _include_file(file)
238
- @_args = [file]
239
- _include
240
- end
241
-
242
- def inherit
214
+ def inherit(args = nil, body = nil)
243
215
  file = @_args.first
244
216
  upper = "../#{file}"
245
217
  got_upper, got_file = File.exist?(upper), File.exist?(file)
@@ -251,95 +223,83 @@ module Livetext::Standard
251
223
  _optional_blank_line
252
224
  end
253
225
 
254
- def mixin
226
+ def mixin(args = nil, body = nil)
255
227
  name = @_args.first # Expect a module name
256
228
  return if @_mixins.include?(name)
257
229
  @_mixins << name
258
- parse = Livetext::ParseMixin.new # (name) # FIXME??
259
- file = parse.find_mixin(name)
260
- parse.use_mixin(name, file)
230
+ mod = Livetext::ParseMixin.get_module(name) # FIXME??
231
+ self.extend(mod)
232
+ init = "init_#{name}"
233
+ self.send(init) if self.respond_to? init
261
234
  _optional_blank_line
262
235
  end
263
236
 
264
- def import
237
+ def import(args = nil, body = nil)
265
238
  name = @_args.first # Expect a module name
266
239
  return if @_mixins.include?(name)
267
240
  @_mixins << name
268
- parse = Livetext::ParseImport.new(name)
241
+ mod = Livetext::ParseImport.get_module(name)
269
242
  parse.use_import(name)
270
243
  _optional_blank_line
271
244
  end
272
245
 
273
- def copy
246
+ def copy(args = nil, body = nil)
274
247
  file = @_args.first
275
248
  check_file_exists(file)
276
249
  _out grab_file(file)
277
250
  _optional_blank_line
278
251
  end
279
252
 
280
- def r
253
+ def r(args = nil, body = nil)
281
254
  _out @_data.chomp # No processing at all
282
255
  end
283
256
 
284
- def raw
257
+ def raw(args = nil, body = nil)
285
258
  # No processing at all (terminate with __EOF__)
286
259
  _raw_body {|line| _out line } # no formatting
287
260
  end
288
261
 
289
- def debug
262
+ def debug(args = nil, body = nil)
290
263
  self._debug = onoff(@_args.first)
291
264
  end
292
265
 
293
- def passthru
266
+ def passthru(args = nil, body = nil)
294
267
  # FIXME - add check for args size? (helpers)
295
268
  @_nopass = ! onoff(_args.first)
296
269
  end
297
270
 
298
- def nopass
271
+ def nopass(args = nil, body = nil)
299
272
  @_nopass = true
300
273
  end
301
274
 
302
- def para
275
+ def para(args = nil, body = nil)
303
276
  # FIXME - add check for args size? (helpers)
304
277
  @_nopara = ! onoff(_args.first)
305
278
  end
306
279
 
307
- def onoff(arg) # helper
308
- arg ||= "on"
309
- raise ExpectedOnOff unless String === arg
310
- case arg.downcase
311
- when "on"
312
- return true
313
- when "off"
314
- return false
315
- else
316
- raise ExpectedOnOff
317
- end
318
- end
319
-
320
- def nopara
280
+ def nopara(args = nil, body = nil)
321
281
  @_nopara = true
322
282
  end
323
283
 
324
- def heading
284
+ def heading(args = nil, body = nil)
325
285
  _print "<center><font size=+1><b>"
326
286
  _print @_data.chomp
327
287
  _print "</b></font></center>"
328
288
  end
329
289
 
330
- def newpage
290
+ def newpage(args = nil, body = nil)
331
291
  _out '<p style="page-break-after:always;"></p>'
332
292
  _out "<p/>"
333
293
  end
334
294
 
335
- def mono
295
+ def mono(args = nil, body = nil)
336
296
  wrap ":pre" do
337
297
  _body(true) {|line| _out line }
338
298
  end
339
299
  _optional_blank_line
340
300
  end
341
301
 
342
- def dlist
302
+ def dlist(args = nil, body = nil)
343
303
  delim = _args.first
344
304
  wrap(:dl) do
345
305
  _body do |line|
@@ -351,13 +311,13 @@ module Livetext::Standard
351
311
  end
352
312
  end
353
313
 
354
- def link
314
+ def link(args = nil, body = nil)
355
315
  url = _args.first
356
316
  text = _args[2..-1].join(" ")
357
317
  _out "<a style='text-decoration: none' href='#{url}'>#{text}</a>"
358
318
  end
359
319
 
360
- def xtable # Borrowed from bookish - FIXME
320
+ def xtable(args = nil, body = nil) # Borrowed from bookish - FIXME
361
321
  title = @_data.chomp
362
322
  delim = " :: "
363
323
  _out "<br><center><table width=90% cellpadding=5>"
@@ -384,12 +344,12 @@ module Livetext::Standard
384
344
  _out "</table></center>"
385
345
  end
386
346
 
387
- def image
347
+ def image(args = nil, body = nil)
388
348
  name = @_args[0]
389
349
  _out "<img src='#{name}'></img>"
390
350
  end
391
351
 
392
- def br
352
+ def br(args = nil, body = nil)
393
353
  num = _args.first || "1"
394
354
  out = ""
395
355
  num.to_i.times { out << "<br>" }
data/plugin/bookish.rb CHANGED
@@ -1,4 +1,4 @@
1
- def hardbreaks
1
+ def hardbreaks(args = nil, body = nil)
2
2
  @hard = false
3
3
  @hard = true unless @_args.first == "off"
4
4
  end
@@ -7,15 +7,17 @@ def hardbreaks?
7
7
  @hard
8
8
  end
9
9
 
10
- def credit
10
+ def credit(args = nil, body = nil)
11
11
  # really just a place marker in source
12
12
  end
13
13
 
14
+ # These are duplicated. Remove safely
15
+
14
16
  def h1; _out "<h1>#{@_data}</h1>"; end
15
17
  def h2; _out "<h2>#{@_data}</h2>"; end
16
18
  def h3; _out "<h3>#{@_data}</h3>"; end
17
19
 
18
- def alpha_columns
20
+ def alpha_columns(args = nil, body = nil)
19
21
  n = @_args.first.to_i # FIXME: what if missing?
20
22
  words = []
21
23
  _body do |line|
@@ -30,9 +32,9 @@ def alpha_columns
30
32
  _out "</table>"
31
33
  end
32
34
 
33
- def comment
34
- _body { } # ignore body
35
- end
35
+ # def comment
36
+ # _body { } # ignore body
37
+ # end
36
38
 
37
39
  def _errout(*args)
38
40
  ::STDERR.puts *args
@@ -48,12 +50,14 @@ def _slug(str)
48
50
  s2
49
51
  end
50
52
 
51
- def image
53
+
54
+ # FIXME duplicated?
55
+ def image(args = nil, body = nil)
52
56
  name = @_args[0]
53
57
  _out "<img src='#{name}'></img>"
54
58
  end
55
59
 
56
- def figure
60
+ def figure(args = nil, body = nil)
57
61
  name = @_args[0]
58
62
  num = @_args[1]
59
63
  title = @_args[2..-1].join(" ")
@@ -62,7 +66,7 @@ def figure
62
66
  _out "<center><b>Figure #{num}</b> #{title}</center>"
63
67
  end
64
68
 
65
- def chapter
69
+ def chapter(args = nil, body = nil)
66
70
  # _errout("chapter")
67
71
  @chapter = @_args.first.to_i
68
72
  @sec = @sec2 = 0
@@ -78,7 +82,7 @@ def chapter
78
82
  HTML
79
83
  end
80
84
 
81
- def chapterN
85
+ def chapterN(args = nil, body = nil)
82
86
  @chapter += 1
83
87
  @sec = @sec2 = 0
84
88
  title = @_data # .split(" ",2)[1]
@@ -94,7 +98,7 @@ def chapterN
94
98
  HTML
95
99
  end
96
100
 
97
- def sec
101
+ def sec(args = nil, body = nil)
98
102
  @sec += 1
99
103
  @sec2 = 0
100
104
  @section = "#@chapter.#@sec"
@@ -108,7 +112,7 @@ rescue => err
108
112
  exit
109
113
  end
110
114
 
111
- def subsec
115
+ def subsec(args = nil, body = nil)
112
116
  @sec2 += 1
113
117
  @subsec = "#@chapter.#@sec.#@sec2"
114
118
  title = @_data.dup
@@ -118,7 +122,7 @@ def subsec
118
122
  _out "<h3>#@subsec #{title}</h3>\n"
119
123
  end
120
124
 
121
- def definition_table
125
+ def definition_table(args = nil, body = nil)
122
126
  title = @_data
123
127
  wide = "95"
124
128
  delim = " :: "
@@ -140,7 +144,7 @@ def definition_table
140
144
  _optional_blank_line
141
145
  end
142
146
 
143
- def table2
147
+ def table2(args = nil, body = nil)
144
148
  title = @_data
145
149
  wide = "90"
146
150
  extra = _args[2]
@@ -164,7 +168,7 @@ def table2
164
168
  _optional_blank_line
165
169
  end
166
170
 
167
- def simple_table
171
+ def simple_table(args = nil, body = nil)
168
172
  title = @_data
169
173
  delim = " :: "
170
174
  _out "<table cellpadding=2>"
@@ -193,7 +197,7 @@ def simple_table
193
197
  _out "</table>"
194
198
  end
195
199
 
196
- def table
200
+ def table(args = nil, body = nil)
197
201
  @table_num ||= 0
198
202
  @table_num += 1
199
203
  title = @_data
@@ -227,7 +231,7 @@ def table
227
231
  _out "<b>Table #@chapter.#@table_num &nbsp;&nbsp; #{title}</b></center><br>"
228
232
  end
229
233
 
230
- def toc!
234
+ def toc!(args = nil, body = nil)
231
235
  _debug "Closing TOC"
232
236
  @toc.close
233
237
  rescue => err
@@ -236,7 +240,7 @@ rescue => err
236
240
  _errout "Exception: #{err.inspect}"
237
241
  end
238
242
 
239
- def toc2
243
+ def toc2(args = nil, body = nil)
240
244
  file = @_args[0]
241
245
  @toc.close
242
246
  ::File.write(file, <<-EOS)
@@ -249,24 +253,24 @@ EOS
249
253
  system("cat toc.tmp >>#{file}")
250
254
  end
251
255
 
252
- def missing
256
+ def missing(args = nil, body = nil)
253
257
  @toc << "#{_nbsp(8)}<font color=red>TBD: #@_data</font><br>"
254
258
  stuff = @_data.empty? ? "" : ": #@_data"
255
259
  _out "<br><font color=red><i>[Material missing#{stuff}]</i></font><br>\n "
256
260
  end
257
261
 
258
- def TBC
262
+ def TBC(args = nil, body = nil)
259
263
  @toc << "#{_nbsp(8)}<font color=red>To be continued...</font><br>"
260
264
  _out "<br><font color=red><i>To be continued...</i></font><br>"
261
265
  end
262
266
 
263
- def note
267
+ def note(args = nil, body = nil)
264
268
  _out "<br><font color=red><i>Note: "
265
269
  _out @_data
266
270
  _out "</i></font><br>\n "
267
271
  end
268
272
 
269
- def quote
273
+ def quote(args = nil, body = nil)
270
274
  _out "<blockquote>"
271
275
  _body {|line| _out line }
272
276
  _out "</blockquote>"
data/plugin/calibre.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'fileutils'
2
2
 
3
- def epub!
3
+ def epub!(args = nil, body = nil)
4
4
  out = _format(@_args[0])
5
5
  src = @_args[1]
6
6
  @cover = @_args[2]
data/plugin/livemagick.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  require 'rmagick'
2
2
  include ::Magick
3
3
 
4
- def image
4
+ def image(args = nil, body = nil)
5
5
  xx, yy, bg = _args
6
6
  xx, yy = xx.to_i, yy.to_i
7
7
  @image = Image.new(xx,yy) { self.background_color = bg }
8
8
  _optional_blank_line
9
9
  end
10
10
 
11
- def canvas
11
+ def canvas(args = nil, body = nil)
12
12
  color, width, opacity = _args
13
13
  opacity, width = opacity.to_i, width.to_i
14
14
  @canvas = Draw.new
@@ -18,7 +18,7 @@ def canvas
18
18
  _optional_blank_line
19
19
  end
20
20
 
21
- def rectangle
21
+ def rectangle(args = nil, body = nil)
22
22
  xy, wxh, stroke_color, stroke_width = _args
23
23
  x, y = xy.split(",").map(&:to_i)
24
24
  width, height = wxh.split("x").map(&:to_i)
@@ -29,14 +29,14 @@ def rectangle
29
29
  @canvas.rectangle(x, y, x+width, y+height)
30
30
  end
31
31
 
32
- def pen
32
+ def pen(args = nil, body = nil)
33
33
  @fill, @stroke = _args
34
34
  @stroke = "black" if @stroke.nil? || @stroke.empty?
35
35
  _debug "pen: fill=#@fill stroke=#@stroke"
36
36
  _optional_blank_line
37
37
  end
38
38
 
39
- def font
39
+ def font(args = nil, body = nil)
40
40
  size, font = _args
41
41
  font = "Helvetica" if font.nil? || font.empty?
42
42
  size = "32" if size.nil? || size.empty?
@@ -59,14 +59,14 @@ def _text(xy, wxh, str, weight, gravity)
59
59
  end
60
60
  end
61
61
 
62
- def text
62
+ def text(args = nil, body = nil)
63
63
  xy, wxh, str = _data.split
64
64
  weight, gravity = BoldWeight, CenterGravity
65
65
  _text(xy, wxh, str, weight, gravity)
66
66
  _optional_blank_line
67
67
  end
68
68
 
69
- def text!
69
+ def text!(args = nil, body = nil)
70
70
  xy, wxh = _data.split
71
71
  str = _body_text # .join
72
72
  weight, gravity = BoldWeight, CenterGravity
@@ -74,17 +74,17 @@ def text!
74
74
  _optional_blank_line
75
75
  end
76
76
 
77
- def draw
77
+ def draw(args = nil, body = nil)
78
78
  @canvas.draw(@image)
79
79
  _optional_blank_line
80
80
  end
81
81
 
82
- def save
82
+ def save(args = nil, body = nil)
83
83
  @image.write(_args.first)
84
84
  _optional_blank_line
85
85
  end
86
86
 
87
- def save!
87
+ def save!(args = nil, body = nil)
88
88
  save
89
89
  system("open #{_args.first}")
90
90
  _optional_blank_line
data/plugin/markdown.rb CHANGED
@@ -1,35 +1,37 @@
1
1
  # This file is intended to be used via a Livetext .mixin
2
2
  # or the equivalent.
3
3
 
4
+ SimpleFormats = {}
4
5
  SimpleFormats[:b] = %w[* *]
5
6
  SimpleFormats[:i] = %w[_ _]
6
7
  SimpleFormats[:t] = %w[` `]
7
8
  SimpleFormats[:s] = %w[<strike> </strike>]
8
9
 
9
- def h1; _out "# #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end # atx style for now
10
- def h2; _out "## #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
11
- def h3; _out "### #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
12
- def h4; _out "#### #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
13
- def h5; _out "##### #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
14
- def h6; _out "###### #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
15
10
 
16
- def title
11
+ def h1(args = nil, body = nil); _out "# #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end # atx style for now
12
+ def h2(args = nil, body = nil); _out "## #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
13
+ def h3(args = nil, body = nil); _out "### #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
14
+ def h4(args = nil, body = nil); _out "#### #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
15
+ def h5(args = nil, body = nil); _out "##### #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
16
+ def h6(args = nil, body = nil); _out "###### #{FormatLine.var_func_parse(@_data)}"; _optional_blank_line end
17
+
18
+ def title(args = nil, body = nil)
17
19
  h1
18
20
  end
19
21
 
20
- def section
22
+ def section(args = nil, body = nil)
21
23
  h3
22
24
  end
23
25
 
24
- def bq # block quote
26
+ def bq(args = nil, body = nil) # block quote
25
27
  _body {|line| _out "> #{line}" }
26
28
  end
27
29
 
28
- def list
30
+ def list(args = nil, body = nil)
29
31
  _body {|line| _out " * #{line}" }
30
32
  end
31
33
 
32
- def olist # Doesn't handle paragraphs yet
34
+ def olist(args = nil, body = nil) # Doesn't handle paragraphs yet
33
35
  n = 0
34
36
  _body do |line|
35
37
  n += 1