livetext 0.9.30 → 0.9.31
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 +1 -1
- data/lib/livetext/expansion.rb +15 -13
- data/lib/livetext/formatter.rb +206 -87
- data/lib/livetext/helpers.rb +24 -13
- data/lib/livetext/standard.rb +62 -57
- data/lib/livetext/userapi.rb +13 -2
- data/lib/livetext/version.rb +1 -1
- data/plugin/bookish.rb +1 -1
- data/test/extra/README.txt +149 -0
- data/test/extra/bracketed.rb +121 -0
- data/test/extra/bracketed.txt +44 -0
- data/test/extra/double.rb +121 -0
- data/test/extra/double.txt +44 -0
- data/test/extra/functions.rb +148 -0
- data/test/extra/functions.txt +58 -0
- data/test/extra/single.rb +139 -0
- data/test/extra/single.txt +52 -0
- data/test/extra/testgen.rb +104 -0
- data/test/{snapshots/bootstrap_menu/expected-error.txt → extra/variables..rb} +0 -0
- data/test/extra/variables.rb +94 -0
- data/test/extra/variables.txt +35 -0
- data/test/snapshots/basic_formatting/expected-output.txt +2 -1
- data/test/snapshots/import_bookish/toc.tmp +0 -0
- data/test/snapshots/mixin_bookish/toc.tmp +0 -0
- data/test/snapshots/simple_vars/source.lt3 +1 -1
- data/test/snapshots/subset.txt +0 -2
- data/test/unit/all.rb +1 -2
- metadata +17 -9
- data/test/snapshots/bootstrap_menu/expected-output.txt +0 -4
- data/test/snapshots/bootstrap_menu/source.lt3 +0 -17
- data/test/snapshots/error_inc_line_num/README.txt +0 -20
- data/test/snapshots/error_invalid_name/foo +0 -5
- data/test/unit/lineparser.rb +0 -359
- data/test/unit/new_lineparser.rb +0 -359
@@ -0,0 +1,104 @@
|
|
1
|
+
# In theory, test run could cross midnight...
|
2
|
+
RX_DATE = "[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}"
|
3
|
+
RX_TIME = "[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}"
|
4
|
+
RX_USER = "[[:alnum:]]+"
|
5
|
+
RX_PATH = "(\\\/[[:alnum:]]+)+\\\/?"
|
6
|
+
RX_VERS = "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$"
|
7
|
+
|
8
|
+
TestLines = []
|
9
|
+
|
10
|
+
def fix_regex(str)
|
11
|
+
str.gsub!(/RX_DATE/, RX_DATE)
|
12
|
+
str.gsub!(/RX_TIME/, RX_TIME)
|
13
|
+
str.gsub!(/RX_USER/, RX_USER)
|
14
|
+
str.gsub!(/RX_PATH/, RX_PATH)
|
15
|
+
str.gsub!(/RX_VERS/, RX_VERS)
|
16
|
+
str
|
17
|
+
end
|
18
|
+
|
19
|
+
abort "Need filename.txt" unless ARGV.size == 1
|
20
|
+
|
21
|
+
filename = ARGV.first
|
22
|
+
basename = filename.sub(/\.txt$/, "")
|
23
|
+
classname = basename.capitalize
|
24
|
+
rubycode = basename + ".rb"
|
25
|
+
|
26
|
+
puts "Writing: #{rubycode}"
|
27
|
+
output = File.new(rubycode, "w")
|
28
|
+
|
29
|
+
test_stanzas = File.new(filename)
|
30
|
+
loop do
|
31
|
+
items = []
|
32
|
+
loop do
|
33
|
+
items << test_stanzas.gets.chomp
|
34
|
+
break if items.last =~ /^-----/
|
35
|
+
end
|
36
|
+
|
37
|
+
TestLines << items
|
38
|
+
break if test_stanzas.eof?
|
39
|
+
end
|
40
|
+
|
41
|
+
output.puts <<~RUBY
|
42
|
+
require 'minitest/autorun'
|
43
|
+
|
44
|
+
require 'livetext'
|
45
|
+
|
46
|
+
# Just another testing class. Chill.
|
47
|
+
|
48
|
+
class TestingLivetext#{classname} < MiniTest::Test
|
49
|
+
|
50
|
+
def setup
|
51
|
+
@live = Livetext.new
|
52
|
+
end
|
53
|
+
|
54
|
+
def check_match(exp, actual)
|
55
|
+
if exp.is_a? Regexp
|
56
|
+
assert_match(exp, actual, "actual does not match expected")
|
57
|
+
else
|
58
|
+
assert_equal(exp, actual, "actual != expected")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
RUBY
|
63
|
+
|
64
|
+
TestLines.each.with_index do |stanza, num|
|
65
|
+
init = nil
|
66
|
+
ix = stanza.find_index {|x| x =~ /^init: / }
|
67
|
+
if ix
|
68
|
+
init = stanza[ix].sub(/^init: /, "")
|
69
|
+
stanza.delete_at(ix)
|
70
|
+
end
|
71
|
+
|
72
|
+
desc, src, exp = *stanza
|
73
|
+
slug = desc.downcase
|
74
|
+
slug.gsub!(/[^[[:alpha:]]]/, "_")
|
75
|
+
slug.gsub!(/__/, "_")
|
76
|
+
src = src[1..-2] # strip off quotes
|
77
|
+
src.gsub!("\\n", "\n")
|
78
|
+
exp.gsub!("\\n", "\n")
|
79
|
+
if exp[0] == "/"
|
80
|
+
exp = fix_regex(exp)
|
81
|
+
exp = Regexp.compile(exp[1..-2])
|
82
|
+
else
|
83
|
+
exp = exp[1..-2]
|
84
|
+
end
|
85
|
+
init = "# No special initialization" unless init
|
86
|
+
|
87
|
+
# Generate tests...
|
88
|
+
name = "test_#{basename}_#{'%03d' % (num + 1)}_#{slug}"
|
89
|
+
method_source = <<~RUBY
|
90
|
+
def #{name}
|
91
|
+
# #{desc}
|
92
|
+
#{init}
|
93
|
+
src = #{src.inspect}
|
94
|
+
exp = #{exp.inspect}
|
95
|
+
actual = @live.api.format(src)
|
96
|
+
check_match(exp, actual)
|
97
|
+
end
|
98
|
+
RUBY
|
99
|
+
lines = method_source.split("\n")
|
100
|
+
lines.map! {|x| " " + x }
|
101
|
+
method_source = lines.join("\n")
|
102
|
+
output.puts method_source + "\n "
|
103
|
+
end
|
104
|
+
output.puts "\nend"
|
File without changes
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
|
3
|
+
require 'livetext'
|
4
|
+
|
5
|
+
# Just another testing class. Chill.
|
6
|
+
|
7
|
+
class TestingLivetextVariables < MiniTest::Test
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@live = Livetext.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def check_match(exp, actual)
|
14
|
+
if exp.is_a? Regexp
|
15
|
+
assert_match(exp, actual, "actual does not match expected")
|
16
|
+
else
|
17
|
+
assert_equal(exp, actual, "actual != expected")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_variables_001_simple_variable
|
22
|
+
# Simple variable
|
23
|
+
# No special initialization
|
24
|
+
src = "User name is $User, and all is well"
|
25
|
+
exp = /is [[:alnum:]]+, and/
|
26
|
+
actual = @live.api.format(src)
|
27
|
+
check_match(exp, actual)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_variables_002_simple_user_variable
|
31
|
+
# Simple user variable
|
32
|
+
@live.api.setvar(:whatever, "some var value")
|
33
|
+
src = "This is $whatever"
|
34
|
+
exp = "This is some var value"
|
35
|
+
actual = @live.api.format(src)
|
36
|
+
check_match(exp, actual)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_variables_003_test_undefined_variable
|
40
|
+
# Test undefined variable
|
41
|
+
# No special initialization
|
42
|
+
src = "foo.bar is $foo.bar, apparently."
|
43
|
+
exp = /undefined/
|
44
|
+
actual = @live.api.format(src)
|
45
|
+
check_match(exp, actual)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_variables_004_variables_user_and_version
|
49
|
+
# Variables $User and $Version
|
50
|
+
# No special initialization
|
51
|
+
src = "I am user $User using Livetext v. $Version"
|
52
|
+
exp = /user [[:alnum:]]+ using Livetext v. [[:digit:]]+.[[:digit:]]+.[[:digit:]]+$/
|
53
|
+
actual = @live.api.format(src)
|
54
|
+
check_match(exp, actual)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_variables_005_undefined_variable
|
58
|
+
# Undefined variable
|
59
|
+
# No special initialization
|
60
|
+
src = "Here is $no.such.var's value"
|
61
|
+
exp = "Here is [no.such.var is undefined]'s value"
|
62
|
+
actual = @live.api.format(src)
|
63
|
+
check_match(exp, actual)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_variables_006_escaped_variable_name
|
67
|
+
# Escaped variable name
|
68
|
+
# No special initialization
|
69
|
+
src = "The backslash means that \\$gamma is not a variable"
|
70
|
+
exp = "The backslash means that $gamma is not a variable"
|
71
|
+
actual = @live.api.format(src)
|
72
|
+
check_match(exp, actual)
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_variables_007_backslash_dollar_dollar
|
76
|
+
# Backslash dollar dollar
|
77
|
+
@live.api.setvar(:amount, 2.37)
|
78
|
+
src = "Observe: \\$$amount is not a function"
|
79
|
+
exp = "Observe: $2.37 is not a function"
|
80
|
+
actual = @live.api.format(src)
|
81
|
+
check_match(exp, actual)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_variables_008_period_after_variable_name
|
85
|
+
# Period after variable name
|
86
|
+
@live.api.setvar(:pi, 3.14159)
|
87
|
+
src = "Pi is roughly $pi."
|
88
|
+
exp = "Pi is roughly 3.14159."
|
89
|
+
actual = @live.api.format(src)
|
90
|
+
check_match(exp, actual)
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Simple variable
|
2
|
+
"User name is $User, and all is well"
|
3
|
+
/is RX_USER, and/
|
4
|
+
-------------------------------------------------
|
5
|
+
Simple user variable
|
6
|
+
init: @live.api.setvar(:whatever, "some var value")
|
7
|
+
"This is $whatever"
|
8
|
+
"This is some var value"
|
9
|
+
-------------------------------------------------
|
10
|
+
Test undefined variable
|
11
|
+
"foo.bar is $foo.bar, apparently."
|
12
|
+
/undefined/
|
13
|
+
-------------------------------------------------
|
14
|
+
Variables $User and $Version
|
15
|
+
"I am user $User using Livetext v. $Version"
|
16
|
+
/user RX_USER using Livetext v. RX_VERS/
|
17
|
+
-------------------------------------------------
|
18
|
+
Undefined variable
|
19
|
+
"Here is $no.such.var's value"
|
20
|
+
"Here is [no.such.var is undefined]'s value"
|
21
|
+
-------------------------------------------------
|
22
|
+
Escaped variable name
|
23
|
+
"The backslash means that \$gamma is not a variable"
|
24
|
+
"The backslash means that $gamma is not a variable"
|
25
|
+
-------------------------------------------------
|
26
|
+
Backslash dollar dollar
|
27
|
+
init: @live.api.setvar(:amount, 2.37)
|
28
|
+
"Observe: \$$amount is not a function"
|
29
|
+
"Observe: $2.37 is not a function"
|
30
|
+
-------------------------------------------------
|
31
|
+
Period after variable name
|
32
|
+
init: @live.api.setvar(:pi, 3.14159)
|
33
|
+
"Pi is roughly $pi."
|
34
|
+
"Pi is roughly 3.14159."
|
35
|
+
-------------------------------------------------
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Here are examples of <b>boldface</b>
|
2
2
|
and <i>italics</i>
|
3
|
-
and <
|
3
|
+
and <tt>code</tt>
|
4
4
|
as well as <b>more complex</b> examples
|
5
5
|
of <i>italicized text</i>
|
6
6
|
and <tt>code font</tt>.
|
@@ -9,4 +9,5 @@ and <tt>code font</tt>.
|
|
9
9
|
Here are some random punctuation marks:
|
10
10
|
; # . * _ ` : @ % ^ & $
|
11
11
|
<p>
|
12
|
+
|
12
13
|
No need to escape these: * _ `
|
File without changes
|
File without changes
|
data/test/snapshots/subset.txt
CHANGED
data/test/unit/all.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: livetext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.31
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A smart text processor extensible in Ruby
|
14
14
|
email: rubyhacker@gmail.com
|
@@ -61,6 +61,19 @@ files:
|
|
61
61
|
- plugin/pyggish.rb
|
62
62
|
- plugin/tutorial.rb
|
63
63
|
- test/all.rb
|
64
|
+
- test/extra/README.txt
|
65
|
+
- test/extra/bracketed.rb
|
66
|
+
- test/extra/bracketed.txt
|
67
|
+
- test/extra/double.rb
|
68
|
+
- test/extra/double.txt
|
69
|
+
- test/extra/functions.rb
|
70
|
+
- test/extra/functions.txt
|
71
|
+
- test/extra/single.rb
|
72
|
+
- test/extra/single.txt
|
73
|
+
- test/extra/testgen.rb
|
74
|
+
- test/extra/variables..rb
|
75
|
+
- test/extra/variables.rb
|
76
|
+
- test/extra/variables.txt
|
64
77
|
- test/snapshots.rb
|
65
78
|
- test/snapshots/basic_formatting/expected-error.txt
|
66
79
|
- test/snapshots/basic_formatting/expected-output.txt
|
@@ -68,9 +81,6 @@ files:
|
|
68
81
|
- test/snapshots/block_comment/expected-error.txt
|
69
82
|
- test/snapshots/block_comment/expected-output.txt
|
70
83
|
- test/snapshots/block_comment/source.lt3
|
71
|
-
- test/snapshots/bootstrap_menu/expected-error.txt
|
72
|
-
- test/snapshots/bootstrap_menu/expected-output.txt
|
73
|
-
- test/snapshots/bootstrap_menu/source.lt3
|
74
84
|
- test/snapshots/comments_ignored_1/expected-error.txt
|
75
85
|
- test/snapshots/comments_ignored_1/expected-output.txt
|
76
86
|
- test/snapshots/comments_ignored_1/source.lt3
|
@@ -81,13 +91,11 @@ files:
|
|
81
91
|
- test/snapshots/def_method/expected-error.txt
|
82
92
|
- test/snapshots/def_method/expected-output.txt
|
83
93
|
- test/snapshots/def_method/source.lt3
|
84
|
-
- test/snapshots/error_inc_line_num/README.txt
|
85
94
|
- test/snapshots/error_inc_line_num/expected-output.txt
|
86
95
|
- test/snapshots/error_inc_line_num/file2.lt3
|
87
96
|
- test/snapshots/error_inc_line_num/match-error.txt
|
88
97
|
- test/snapshots/error_inc_line_num/source.lt3
|
89
98
|
- test/snapshots/error_invalid_name/expected-output.txt
|
90
|
-
- test/snapshots/error_invalid_name/foo
|
91
99
|
- test/snapshots/error_invalid_name/match-error.txt
|
92
100
|
- test/snapshots/error_invalid_name/source.lt3
|
93
101
|
- test/snapshots/error_line_num/expected-output.txt
|
@@ -134,9 +142,11 @@ files:
|
|
134
142
|
- test/snapshots/import_bookish/expected-error.txt
|
135
143
|
- test/snapshots/import_bookish/expected-output.txt
|
136
144
|
- test/snapshots/import_bookish/source.lt3
|
145
|
+
- test/snapshots/import_bookish/toc.tmp
|
137
146
|
- test/snapshots/mixin_bookish/expected-error.txt
|
138
147
|
- test/snapshots/mixin_bookish/expected-output.txt
|
139
148
|
- test/snapshots/mixin_bookish/source.lt3
|
149
|
+
- test/snapshots/mixin_bookish/toc.tmp
|
140
150
|
- test/snapshots/more_complex_vars/expected-error.txt
|
141
151
|
- test/snapshots/more_complex_vars/expected-output.txt
|
142
152
|
- test/snapshots/more_complex_vars/source.lt3
|
@@ -184,8 +194,6 @@ files:
|
|
184
194
|
- test/snapshots/var_into_func/source.lt3
|
185
195
|
- test/unit/all.rb
|
186
196
|
- test/unit/html.rb
|
187
|
-
- test/unit/lineparser.rb
|
188
|
-
- test/unit/new_lineparser.rb
|
189
197
|
- test/unit/parser.rb
|
190
198
|
- test/unit/parser/all.rb
|
191
199
|
- test/unit/parser/general.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
.nopara
|
2
|
-
|
3
|
-
.mixin bootstrap_menu
|
4
|
-
|
5
|
-
.menu
|
6
|
-
.menu_link "Home", "http://fake.com/home"
|
7
|
-
.menu_dropdown "Blog"
|
8
|
-
.menu_dropdown_link "Home", "http://fake.com/blog"
|
9
|
-
.menu_dropdown_link "Design", "http://fake.com/design"
|
10
|
-
.menu_dropdown_link "HTML", "http://fake.com/html"
|
11
|
-
.menu_dropdown_link "CSS", "http://fake.com/css"
|
12
|
-
.menu_dropdown_link "Javascript", "http://fake.com/jscript"
|
13
|
-
.menu_dropdown "Work"
|
14
|
-
.menu_dropdown_item "Web Design", "http://fake.com/webdes"
|
15
|
-
.menu_dropdown_item "Typography", "http://fake.com/typog"
|
16
|
-
.menu_dropdown_item "Front-end", "http://fake.com/fronten"
|
17
|
-
.menu_link "About", "http://fake.com/about"
|
@@ -1,20 +0,0 @@
|
|
1
|
-
---- File: source.lt3
|
2
|
-
|
3
|
-
This is my
|
4
|
-
source file
|
5
|
-
which includes file2 here:
|
6
|
-
.include file2.lt3
|
7
|
-
|
8
|
-
And here we are
|
9
|
-
back in the
|
10
|
-
original file.
|
11
|
-
|
12
|
-
--- File: file2.lt3
|
13
|
-
|
14
|
-
This is file2
|
15
|
-
which has an error
|
16
|
-
about an unknown command
|
17
|
-
in line 5
|
18
|
-
.foobar
|
19
|
-
|
20
|
-
And this is file2 line 7.
|