livetext 0.9.21 → 0.9.22
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/imports/bookish.rb +8 -10
- data/imports/pyggish.rb +2 -34
- data/imports/tutorial.rb +2 -2
- data/lib/cmdargs.rb +2 -3
- data/lib/formatline.rb +101 -73
- data/lib/functions.rb +16 -1
- data/lib/handler/{icanhaz.rb → import.rb} +1 -1
- data/lib/handler.rb +1 -1
- data/lib/helpers.rb +10 -10
- data/lib/livetext.rb +12 -5
- data/lib/parser/set.rb +1 -3
- data/lib/parser/string.rb +2 -2
- data/lib/processor.rb +6 -2
- data/lib/standard.rb +15 -15
- data/lib/userapi.rb +4 -2
- data/plugin/bookish.rb +4 -5
- data/plugin/pyggish.rb +45 -77
- data/plugin/tutorial.rb +0 -1
- data/test/snapshots/error_inc_line_num/actual-error.txt +14 -0
- data/test/snapshots/error_inc_line_num/actual-output.txt +7 -0
- data/test/snapshots/error_inc_line_num/out-sdiff.txt +14 -0
- data/test/snapshots/error_invalid_name/actual-error.txt +10 -0
- data/test/snapshots/{icanhaz2/expected-error.txt → error_invalid_name/actual-output.txt} +0 -0
- data/test/snapshots/error_invalid_name/out-sdiff.txt +6 -0
- data/test/snapshots/error_missing_end/actual-error.txt +10 -0
- data/test/snapshots/error_missing_end/actual-output.txt +0 -0
- data/test/snapshots/error_missing_end/out-sdiff.txt +6 -0
- data/test/snapshots/error_no_such_copy/actual-error.txt +10 -0
- data/test/snapshots/error_no_such_copy/actual-output.txt +0 -0
- data/test/snapshots/error_no_such_inc/actual-error.txt +10 -0
- data/test/snapshots/error_no_such_inc/actual-output.txt +0 -0
- data/test/snapshots/error_no_such_mixin/actual-error.txt +13 -0
- data/test/snapshots/error_no_such_mixin/actual-output.txt +0 -0
- data/test/snapshots/error_no_such_mixin/out-sdiff.txt +6 -0
- data/test/snapshots/import/actual-error.txt +13 -0
- data/test/snapshots/import/actual-output.txt +0 -0
- data/test/snapshots/{icanhaz → import}/expected-output.txt +0 -0
- data/test/snapshots/{icanhaz → import}/match-error.txt +0 -0
- data/test/snapshots/import/out-sdiff.txt +6 -0
- data/test/snapshots/{icanhaz → import}/simple_import.rb +0 -0
- data/test/snapshots/{icanhaz → import}/source.lt3 +2 -2
- data/test/snapshots/import2/expected-error.txt +0 -0
- data/test/snapshots/{icanhaz2 → import2}/expected-output.txt +3 -1
- data/test/snapshots/{icanhaz2/simple_canhaz.rb → import2/simple_import.rb} +0 -0
- data/test/snapshots/import2/source.lt3 +8 -0
- data/test/snapshots/more_functions/expected-error.txt +0 -0
- data/test/snapshots/more_functions/expected-output.txt +37 -0
- data/test/snapshots/more_functions/source.lt3 +40 -0
- data/test/snapshots/simple_import/expected-output.txt +2 -0
- data/test/snapshots/simple_import/source.lt3 +3 -1
- data/test/snapshots/subset.txt +11 -12
- data/test/snapshots/wtf_bookish/expected-error.txt +0 -0
- data/test/snapshots/wtf_bookish/expected-output.txt +10 -0
- data/test/snapshots/wtf_bookish/source.lt3 +7 -0
- data/test/snapshots/wtf_bookish/toc.tmp +0 -0
- data/test/snapshots.rb +6 -7
- data/test/unit/formatline.rb +252 -135
- data/test/unit/parser/set.rb +6 -10
- data/test/unit/parser/string.rb +5 -5
- data/test/unit/standard.rb +0 -1
- metadata +37 -13
- data/lib/livetext/importable.rb +0 -2
- data/lib/parser/import.rb +0 -15
- data/test/snapshots/icanhaz2/source.lt3 +0 -6
data/lib/standard.rb
CHANGED
@@ -101,7 +101,7 @@ module Livetext::Standard
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def errout(args = nil, body = nil)
|
104
|
-
STDERR.puts @_data.chomp
|
104
|
+
::STDERR.puts @_data.chomp
|
105
105
|
_optional_blank_line
|
106
106
|
end
|
107
107
|
|
@@ -225,32 +225,25 @@ module Livetext::Standard
|
|
225
225
|
|
226
226
|
def mixin(args = nil, body = nil)
|
227
227
|
name = @_args.first # Expect a module name
|
228
|
+
# TTY.puts "#{__method__}: name = #{name}"
|
228
229
|
return if @_mixins.include?(name)
|
229
230
|
@_mixins << name
|
230
|
-
mod = Livetext::ParseMixin.get_module(name)
|
231
|
+
mod = Livetext::ParseMixin.get_module(name)
|
232
|
+
# TTY.puts "#{__method__}: mod = #{mod.inspect}"
|
231
233
|
self.extend(mod)
|
232
234
|
init = "init_#{name}"
|
233
|
-
self.send(init) if self.respond_to? init
|
235
|
+
self.send(init) rescue nil # if self.respond_to? init
|
234
236
|
_optional_blank_line
|
235
237
|
end
|
236
238
|
|
237
|
-
def
|
239
|
+
def import(args = nil, body = nil)
|
238
240
|
name = @_args.first # Expect a module name
|
239
241
|
return if @_mixins.include?(name)
|
240
242
|
@_mixins << name
|
241
|
-
mod = Livetext::Handler::
|
243
|
+
mod = Livetext::Handler::Import.get_module(name)
|
242
244
|
self.extend(mod)
|
243
245
|
init = "init_#{name}"
|
244
|
-
self.send(init) if self.respond_to? init
|
245
|
-
_optional_blank_line
|
246
|
-
end
|
247
|
-
|
248
|
-
def import(args = nil, body = nil)
|
249
|
-
name = @_args.first # Expect a module name
|
250
|
-
return if @_mixins.include?(name)
|
251
|
-
@_mixins << name
|
252
|
-
mod = Livetext::ParseImport.get_module(name)
|
253
|
-
parse.use_import(name)
|
246
|
+
self.send(init) rescue nil # if self.respond_to? init
|
254
247
|
_optional_blank_line
|
255
248
|
end
|
256
249
|
|
@@ -367,4 +360,11 @@ module Livetext::Standard
|
|
367
360
|
_out out
|
368
361
|
end
|
369
362
|
|
363
|
+
def reflection # strictly experimental!
|
364
|
+
list = self.methods
|
365
|
+
obj = Object.instance_methods
|
366
|
+
diff = (list - obj).sort
|
367
|
+
_out "#{diff.size} methods:"
|
368
|
+
_out diff.inspect
|
369
|
+
end
|
370
370
|
end
|
data/lib/userapi.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
-
# User API
|
2
|
-
|
3
1
|
require_relative 'formatline'
|
4
2
|
|
5
3
|
# UserAPI deals mostly with user-level methods.
|
6
4
|
|
7
5
|
module Livetext::UserAPI
|
8
6
|
|
7
|
+
# FIXME I am tired of all my leading underscores...
|
8
|
+
# FIXME Q: Could this be converted into a class?? What about its
|
9
|
+
# interaction thru instance vars?
|
10
|
+
|
9
11
|
def setvar(var, val)
|
10
12
|
str, sym = var.to_s, var.to_sym
|
11
13
|
Livetext::Vars[str] = val
|
data/plugin/bookish.rb
CHANGED
@@ -18,7 +18,7 @@ def h2; _out "<h2>#{@_data}</h2>"; end
|
|
18
18
|
def h3; _out "<h3>#{@_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 = @_args.first.to_i # FIXME: what if it's missing?
|
22
22
|
words = []
|
23
23
|
_body do |line|
|
24
24
|
words << line.chomp
|
@@ -50,8 +50,8 @@ 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
56
|
name = @_args[0]
|
57
57
|
_out "<img src='#{name}'></img>"
|
@@ -67,7 +67,6 @@ def figure(args = nil, body = nil)
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def chapter(args = nil, body = nil)
|
70
|
-
# _errout("chapter")
|
71
70
|
@chapter = @_args.first.to_i
|
72
71
|
@sec = @sec2 = 0
|
73
72
|
title = @_data.split(" ",2)[1]
|
@@ -108,7 +107,7 @@ def sec(args = nil, body = nil)
|
|
108
107
|
next_output
|
109
108
|
_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
|
|
@@ -275,7 +274,7 @@ def quote(args = nil, body = nil)
|
|
275
274
|
_body {|line| _out line }
|
276
275
|
_out "</blockquote>"
|
277
276
|
rescue => err
|
278
|
-
STDERR.puts "#{err}\n#{err.backtrace}"
|
277
|
+
::STDERR.puts "#{err}\n#{err.backtrace}"
|
279
278
|
exit
|
280
279
|
end
|
281
280
|
|
data/plugin/pyggish.rb
CHANGED
@@ -1,59 +1,56 @@
|
|
1
1
|
require 'rouge'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
def self._codebar_color(lexer)
|
19
|
-
color = case lexer
|
20
|
-
when :elixir
|
21
|
-
"#fc88fc"
|
22
|
-
when :ruby
|
23
|
-
"#fc8888"
|
24
|
-
else
|
25
|
-
raise "Unknown lexer"
|
26
|
-
end
|
3
|
+
# FIXME This whole file has a weird vibe. It has dead code and
|
4
|
+
# also exposes methods that are not dot commands...
|
5
|
+
|
6
|
+
def self.pyg_change(code, klass, style)
|
7
|
+
color = style[0..6]
|
8
|
+
modifier = style[8]
|
9
|
+
mod_open = modifier ? "<#{modifier}>" : ""
|
10
|
+
mod_close = modifier ? "</#{modifier}>" : ""
|
11
|
+
rx = /<span class="#{klass}">(?<cname>[^<]+?)<\/span>/
|
12
|
+
loop do
|
13
|
+
md = rx.match(code)
|
14
|
+
break if md.nil?
|
15
|
+
str = md[:cname]
|
16
|
+
result = code.sub!(rx, "<font color=#{color}>#{mod_open}#{str}#{mod_close}</font>")
|
17
|
+
break if result.nil?
|
27
18
|
end
|
19
|
+
end
|
28
20
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
code.gsub!(/<td/, "<td valign=top ")
|
38
|
-
code.gsub!(/ class="[^"]*?"/, "") # Get rid of remaining Pygments CSS
|
39
|
-
File.open("debug-pf2", "w") {|f| f.puts code }
|
40
|
-
lines = code.split("\n")
|
41
|
-
# lines.each {|line| line << "\n" }
|
42
|
-
n1 = lines.index {|x| x =~ /<pre>/ }
|
43
|
-
n2 = lines.index {|x| x =~ /<\/pre>/ }
|
44
|
-
# FIXME ?
|
45
|
-
n1 ||= 0
|
46
|
-
n2 ||= -1
|
47
|
-
lines[n1].sub!(/ 1$/, " 1 ")
|
48
|
-
(n1+1).upto(n2) {|n| lines[n].replace(" " + lines[n] + " ") }
|
49
|
-
code = lines.join("\n")
|
50
|
-
File.open("debug-pf3", "w") {|f| f.puts code }
|
51
|
-
code
|
21
|
+
def self._codebar_color(lexer)
|
22
|
+
color = case lexer
|
23
|
+
when :elixir
|
24
|
+
"#fc88fc"
|
25
|
+
when :ruby
|
26
|
+
"#fc8888"
|
27
|
+
else
|
28
|
+
raise "Unknown lexer"
|
52
29
|
end
|
30
|
+
end
|
53
31
|
|
32
|
+
def self.pyg_finalize(code, lexer=:elixir)
|
33
|
+
Styles.each_pair {|klass, style| pyg_change(code, klass, style) }
|
34
|
+
code.sub!(/<pre>/, "<pre>\n")
|
35
|
+
code.gsub!(/<span class="[np]">/, "")
|
36
|
+
code.gsub!(/<\/span>/, "")
|
37
|
+
color = _codebar_color(lexer)
|
38
|
+
code.sub!(/<td class="linenos"/, "<td width=2%></td><td width=5% bgcolor=#{color}")
|
39
|
+
code.gsub!(/<td/, "<td valign=top ")
|
40
|
+
code.gsub!(/ class="[^"]*?"/, "") # Get rid of remaining Pygments CSS
|
41
|
+
lines = code.split("\n")
|
42
|
+
n1 = lines.index {|x| x =~ /<pre>/ }
|
43
|
+
n2 = lines.index {|x| x =~ /<\/pre>/ }
|
44
|
+
# FIXME ?
|
45
|
+
n1 ||= 0
|
46
|
+
n2 ||= -1
|
47
|
+
lines[n1].sub!(/ 1$/, " 1 ")
|
48
|
+
(n1+1).upto(n2) {|n| lines[n].replace(" " + lines[n] + " ") }
|
49
|
+
code = lines.join("\n")
|
50
|
+
code
|
51
|
+
end
|
54
52
|
|
55
53
|
def _process_code(text)
|
56
|
-
File.open("debug-pc1", "w") {|f| f.puts text }
|
57
54
|
lines = text.split("\n")
|
58
55
|
lines = lines.select {|x| x !~ /##~ omit/ }
|
59
56
|
@refs = {}
|
@@ -66,7 +63,6 @@ File.open("debug-pc1", "w") {|f| f.puts text }
|
|
66
63
|
end
|
67
64
|
lines.map! {|line| " " + line }
|
68
65
|
text2 = lines.join("\n")
|
69
|
-
File.open("debug-pc2", "w") {|f| f.puts text2 }
|
70
66
|
text.replace(text2)
|
71
67
|
end
|
72
68
|
|
@@ -86,34 +82,6 @@ def _colorize!(code, lexer=:elixir)
|
|
86
82
|
result
|
87
83
|
end
|
88
84
|
|
89
|
-
def OLD_ruby
|
90
|
-
file = @_args.first
|
91
|
-
if file.nil?
|
92
|
-
code = "# Ruby code\n"
|
93
|
-
_body {|line| code << line + "\n" }
|
94
|
-
else
|
95
|
-
code = "# Ruby code\n\n" + ::File.read(file)
|
96
|
-
end
|
97
|
-
|
98
|
-
_process_code(code)
|
99
|
-
html = _colorize(code, :ruby)
|
100
|
-
_out "\n#{html}\n "
|
101
|
-
end
|
102
|
-
|
103
|
-
def OLD_elixir
|
104
|
-
file = @_args.first
|
105
|
-
if file.nil?
|
106
|
-
code = ""
|
107
|
-
_body {|line| code << line + "\n" }
|
108
|
-
else
|
109
|
-
code = ::File.read(file)
|
110
|
-
end
|
111
|
-
|
112
|
-
_process_code(code)
|
113
|
-
html = _colorize(code, :elixir)
|
114
|
-
_out "\n#{html}\n "
|
115
|
-
end
|
116
|
-
|
117
85
|
def fragment
|
118
86
|
lang = @_args.empty? ? :elixir : @_args.first.to_sym # ruby or elixir
|
119
87
|
@_args = []
|
data/plugin/tutorial.rb
CHANGED
@@ -52,7 +52,6 @@ def inout(args = nil, body = nil)
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def put_table(src, exp)
|
55
|
-
STDERR.puts "put_table: #{[src, exp].inspect}"
|
56
55
|
t1 = ::File.readlines(src) rescue (abort "Fail - src = #{src} t1 = #{src}")
|
57
56
|
t2 = ::File.readlines(exp) rescue (abort "Fail - src = #{exp} t2 = #{out}")
|
58
57
|
t1 = t1.map {|x| " " + x.sub(/ +$/,"").gsub(/_/, "\\_") }.join
|
@@ -0,0 +1,14 @@
|
|
1
|
+
/Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:121:in `handle_dotcmd': Name 'foobar' is unknown (RuntimeError)
|
2
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:73:in `process_line'
|
3
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:61:in `block in process_file'
|
4
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `loop'
|
5
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `process_file'
|
6
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/standard.rb:210:in `dot_include'
|
7
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:95:in `handle_dotcmd'
|
8
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:73:in `process_line'
|
9
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:61:in `block in process_file'
|
10
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `loop'
|
11
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `process_file'
|
12
|
+
from ../../../bin/livetext:86:in `block in <main>'
|
13
|
+
from ../../../bin/livetext:57:in `loop'
|
14
|
+
from ../../../bin/livetext:57:in `<main>'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
ACTUAL | EXPECTED
|
2
|
+
This is my This is my
|
3
|
+
source file source file
|
4
|
+
which includes file2 here: which includes file2 here:
|
5
|
+
This is file2 This is file2
|
6
|
+
which has an error which has an error
|
7
|
+
about an unknown command about an unknown command
|
8
|
+
in line 5 in line 5
|
9
|
+
> <p>
|
10
|
+
>
|
11
|
+
> And this is file2 line 7.
|
12
|
+
> And here we are
|
13
|
+
> back in the
|
14
|
+
> original file.
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:140:in `check_disallowed': Error: name 'to_s' is invalid (DisallowedName)
|
2
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/standard.rb:142:in `dot_def'
|
3
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:95:in `handle_dotcmd'
|
4
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:73:in `process_line'
|
5
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:61:in `block in process_file'
|
6
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `loop'
|
7
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `process_file'
|
8
|
+
from ../../../bin/livetext:86:in `block in <main>'
|
9
|
+
from ../../../bin/livetext:57:in `loop'
|
10
|
+
from ../../../bin/livetext:57:in `<main>'
|
File without changes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/Users/Hal/Dropbox/topx/git/livetext/lib/userapi.rb:92:in `_body': Expected .end, found end of file (RuntimeError)
|
2
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/standard.rb:48:in `comment'
|
3
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:95:in `handle_dotcmd'
|
4
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:73:in `process_line'
|
5
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:61:in `block in process_file'
|
6
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `loop'
|
7
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `process_file'
|
8
|
+
from ../../../bin/livetext:86:in `block in <main>'
|
9
|
+
from ../../../bin/livetext:57:in `loop'
|
10
|
+
from ../../../bin/livetext:57:in `<main>'
|
File without changes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:144:in `check_file_exists': Error: file 'nosuchfile.txt' not found (FileNotFound)
|
2
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/standard.rb:252:in `copy'
|
3
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:95:in `handle_dotcmd'
|
4
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:73:in `process_line'
|
5
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:61:in `block in process_file'
|
6
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `loop'
|
7
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `process_file'
|
8
|
+
from ../../../bin/livetext:86:in `block in <main>'
|
9
|
+
from ../../../bin/livetext:57:in `loop'
|
10
|
+
from ../../../bin/livetext:57:in `<main>'
|
File without changes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:144:in `check_file_exists': Error: file 'nosuchinc.lt3' not found (FileNotFound)
|
2
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/standard.rb:209:in `dot_include'
|
3
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:95:in `handle_dotcmd'
|
4
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:73:in `process_line'
|
5
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:61:in `block in process_file'
|
6
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `loop'
|
7
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `process_file'
|
8
|
+
from ../../../bin/livetext:86:in `block in <main>'
|
9
|
+
from ../../../bin/livetext:57:in `loop'
|
10
|
+
from ../../../bin/livetext:57:in `<main>'
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:34:in `find_file': No such mixin 'nosuchthing' (RuntimeError)
|
2
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/parser/mixin.rb:12:in `initialize'
|
3
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/parser/mixin.rb:16:in `new'
|
4
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/parser/mixin.rb:16:in `get_module'
|
5
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/standard.rb:231:in `mixin'
|
6
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:95:in `handle_dotcmd'
|
7
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:73:in `process_line'
|
8
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:61:in `block in process_file'
|
9
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `loop'
|
10
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `process_file'
|
11
|
+
from ../../../bin/livetext:86:in `block in <main>'
|
12
|
+
from ../../../bin/livetext:57:in `loop'
|
13
|
+
from ../../../bin/livetext:57:in `<main>'
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:34:in `find_file': No such mixin 'nonexistent' (RuntimeError)
|
2
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/handler/import.rb:9:in `initialize'
|
3
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/handler/import.rb:13:in `new'
|
4
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/handler/import.rb:13:in `get_module'
|
5
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/standard.rb:243:in `import'
|
6
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:95:in `handle_dotcmd'
|
7
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:73:in `process_line'
|
8
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:61:in `block in process_file'
|
9
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `loop'
|
10
|
+
from /Users/Hal/Dropbox/topx/git/livetext/lib/helpers.rb:58:in `process_file'
|
11
|
+
from ../../../bin/livetext:86:in `block in <main>'
|
12
|
+
from ../../../bin/livetext:57:in `loop'
|
13
|
+
from ../../../bin/livetext:57:in `<main>'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Testing some more functions here...
|
2
|
+
<p>
|
3
|
+
|
4
|
+
Here I am calling a function with
|
5
|
+
a colon parameter...
|
6
|
+
<p>
|
7
|
+
|
8
|
+
<p>
|
9
|
+
|
10
|
+
Next let's <b>do*</b> something with our parameter:
|
11
|
+
<p>
|
12
|
+
|
13
|
+
I'll call these variants...
|
14
|
+
<p>
|
15
|
+
|
16
|
+
"Motel" spelled backwards is letom :)
|
17
|
+
<p>
|
18
|
+
|
19
|
+
"lamina" reversed is animal
|
20
|
+
<p>
|
21
|
+
|
22
|
+
I can also use the erutaef tekcarb here.
|
23
|
+
<p>
|
24
|
+
|
25
|
+
If I don't use a parameter for [Error evaluating $$reverse()] - it gives
|
26
|
+
me an error. (Bug or feature??)
|
27
|
+
<p>
|
28
|
+
|
29
|
+
What if a function doesn't use parameters at all, but
|
30
|
+
we pass them? Hmm...
|
31
|
+
<p>
|
32
|
+
|
33
|
+
Now we succeed and succeed some more
|
34
|
+
and finally we succeed in life.
|
35
|
+
<p>
|
36
|
+
|
37
|
+
But can we succeed, when our beds are burning?
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Testing some more functions here...
|
2
|
+
|
3
|
+
.func just_do_it
|
4
|
+
item = param
|
5
|
+
# Do "something" with the parameter...
|
6
|
+
return "" # parameter disappears!
|
7
|
+
.end
|
8
|
+
|
9
|
+
Here I am calling a function $$just_do_it:foobar with
|
10
|
+
a colon parameter...
|
11
|
+
|
12
|
+
|
13
|
+
Next let's *do* something with our parameter:
|
14
|
+
|
15
|
+
.func reverse
|
16
|
+
param.reverse # just reverse it
|
17
|
+
.end
|
18
|
+
|
19
|
+
I'll call these variants...
|
20
|
+
|
21
|
+
"Motel" spelled backwards is $$reverse:motel :)
|
22
|
+
|
23
|
+
"lamina" reversed is $$reverse:lamina
|
24
|
+
|
25
|
+
I can also use the $$reverse[bracket feature] here.
|
26
|
+
|
27
|
+
If I don't use a parameter for $$reverse - it gives
|
28
|
+
me an error. (Bug or feature??)
|
29
|
+
|
30
|
+
What if a function doesn't use parameters at all, but
|
31
|
+
we pass them? Hmm...
|
32
|
+
|
33
|
+
.func meditate
|
34
|
+
"succeed" # just replaces params with this verb
|
35
|
+
.end
|
36
|
+
|
37
|
+
Now we $$meditate:slowly and $$meditate some more
|
38
|
+
and finally we $$meditate[on various things] in life.
|
39
|
+
|
40
|
+
But can we $$meditate, when our beds are burning?
|
data/test/snapshots/subset.txt
CHANGED
@@ -19,26 +19,21 @@
|
|
19
19
|
|
20
20
|
# Note that QUIT (on a line by itself) will stop processing the file
|
21
21
|
|
22
|
-
x error_no_such_inc # Output BEFORE error doesn't get passed through ("leading" output)
|
23
|
-
x error_no_such_copy # ^ Same behavior as error_no_such_inc
|
24
|
-
x error_no_such_mixin # ^ Same behavior as error_missing_end
|
25
|
-
x error_invalid_name # ^ Same behavior as error_no_such_inc
|
26
|
-
x error_missing_end # Output is duplicated somehow. Look for: puts @body or puts @main.body
|
27
|
-
x error_inc_line_num # Forgot what's wrong here
|
28
|
-
|
29
|
-
# Dummy command .icanhaz works like .mixin or .import
|
30
|
-
|
31
|
-
x icanhaz # "Leading" output doesn't get generated (same as error_no_such_inc)
|
32
|
-
icanhaz2 # works?
|
33
22
|
|
34
23
|
# Others (usually passing):
|
35
24
|
|
36
25
|
# import/include/mixin, others...
|
37
26
|
|
27
|
+
x error_no_such_inc # Output BEFORE error doesn't get passed through ("leading" output)
|
28
|
+
x error_no_such_copy # ^ Same behavior as error_no_such_inc
|
29
|
+
x error_no_such_mixin # ^ Same behavior as error_missing_end
|
38
30
|
simple_copy #
|
39
|
-
|
31
|
+
simple_import #
|
40
32
|
simple_include #
|
41
33
|
simple_mixin #
|
34
|
+
x import # "Leading" output doesn't get generated (same as error_no_such_inc)
|
35
|
+
import2 #
|
36
|
+
|
42
37
|
|
43
38
|
# raw input
|
44
39
|
|
@@ -72,10 +67,14 @@ x simple_import # not working yet (but *could* sub in .icanhaz)
|
|
72
67
|
error_line_num #
|
73
68
|
error_mismatched_end #
|
74
69
|
error_name_not_permitted #
|
70
|
+
x error_invalid_name # ^ Same behavior as error_no_such_inc
|
71
|
+
x error_missing_end # Output is duplicated somehow. Look for: puts @body or puts @main.body
|
72
|
+
x error_inc_line_num # Forgot what's wrong here
|
75
73
|
|
76
74
|
# functions
|
77
75
|
|
78
76
|
functions #
|
77
|
+
more_functions #
|
79
78
|
|
80
79
|
# More/misc...
|
81
80
|
|
File without changes
|