livetext 0.9.47 → 0.9.48

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1f67c2785b935c3c940db118d04f6613e186df48b4473659e14c69089e23a35
4
- data.tar.gz: 6b08485471ca1c9aa2d44a83d9e5670f876999e70f3c20e975caa8fb3aadc2ac
3
+ metadata.gz: 91574e23cbcbe19d5c06d7c1fbbe8fbbe33ca29b06511da502b532bbb28519c6
4
+ data.tar.gz: 553612fc90e8a6f3676158c3e98997415d0b568fb811fc9d273f8a2ae47478b0
5
5
  SHA512:
6
- metadata.gz: 1becbb55d5267f754ee0c3dacc3c894fc6814aefd71386aaf0bc3f77f4dbefe76554d42ca78ade718e027b96874616219582dfcb0a4295eae10aac12bff11481
7
- data.tar.gz: f169d21ca5e99b17869e10836fe4b4ae39cc5a239408562d95a3928e89b954f42184b2b51c8603e9d7570f3578acd81761417c56be7217942c7f4a8624089e8c
6
+ metadata.gz: 909f58be5cd6ee9d11262bb7213d2fab733d379ac678953c0e0225486cdc7a24152b8f5e5b208f2522bf4ea629abd9597c14b3cce1988b19c89b3b92d96f729b
7
+ data.tar.gz: e6e9aaec3cba4d466601d9b4d2f2d96bbb3c3697640684d96c23d70b41843d6a5674a4f41e659355df45a72c59842f7e91df44c76455a430425836db17f1e8e7
@@ -2,59 +2,8 @@
2
2
  # Class Livetext reopened (top level).
3
3
 
4
4
  class Livetext
5
-
6
5
  include Helpers
7
6
 
8
- class Variables # FIXME - split out into file as Livetext::Variables
9
- attr_reader :vars
10
-
11
- def initialize(hash = {}) # Livetext::Variables
12
- @vars = {}
13
- hash.each_pair do |k, v|
14
- sym = k.to_sym
15
- str = k.to_s
16
- @vars[sym] = v
17
- @vars[str] = v
18
- end
19
- end
20
-
21
- def inspect
22
- syms = @vars.keys.select {|x| x.is_a? Symbol }
23
- out = "\nVariables:"
24
- syms.each do |sym|
25
- out << " #{sym}: #{@vars[sym].inspect}\n"
26
- end
27
- out
28
- end
29
-
30
- def [](var)
31
- @vars[var.to_sym]
32
- end
33
-
34
- def []=(var, value)
35
- @vars[var.to_sym] = value
36
- end
37
-
38
- def get(var)
39
- @vars[var.to_sym] || "[#{var} is undefined]"
40
- end
41
-
42
- def set(var, value)
43
- @vars[var.to_sym] = value.to_s
44
- end
45
-
46
- def setvars(pairs)
47
- pairs = pairs.to_a if pairs.is_a?(Hash)
48
- pairs.each do |var, value|
49
- api.setvar(var, value)
50
- end
51
- end
52
-
53
- def to_a
54
- @vars.to_a
55
- end
56
- end
57
-
58
7
  Vars = Variables.new
59
8
 
60
9
  TTY = ::File.open("/dev/tty", "w")
@@ -8,6 +8,8 @@ class Livetext::Expansion
8
8
  Lbrack = "\\["
9
9
  Colon = ":"
10
10
 
11
+ Formatter = ::Livetext::Formatter
12
+
11
13
  def initialize(instance) # Livetext::Expansion
12
14
  @live = instance
13
15
  end
@@ -1,4 +1,4 @@
1
- module Formatter
1
+ module Livetext::Formatter
2
2
 
3
3
  def self.format(str) # FIXME - unneeded?
4
4
  str = str.chomp
@@ -15,188 +15,188 @@ module Formatter
15
15
  # Brackt: bits
16
16
  #
17
17
 
18
- class Delimited
19
- def initialize(str, marker, tag) # Delimited
20
- @str, @marker, @tag = str.dup, marker, tag
21
- @buffer = ""
22
- @cdata = ""
23
- @state = :INITIAL
24
- end
18
+ end
25
19
 
26
- def status(where)
27
- if $debug
28
- STDERR.printf "%-11s %-7s #{@marker.inspect} \n #{' '*11} state = %-8s str = %-20s buffer = %-20s cdata = %-20s\n",
29
- where, self.class, @state, @str.inspect, @buffer.inspect, @cdata.inspect
30
- end
31
- end
20
+ class Livetext::Formatter::Delimited
21
+ def initialize(str, marker, tag) # Delimited
22
+ @str, @marker, @tag = str.dup, marker, tag
23
+ @buffer = ""
24
+ @cdata = ""
25
+ @state = :INITIAL
26
+ end
32
27
 
33
- def front
34
- @str[0]
28
+ def status(where)
29
+ if $debug
30
+ STDERR.printf "%-11s %-7s #{@marker.inspect} \n #{' '*11} state = %-8s str = %-20s buffer = %-20s cdata = %-20s\n",
31
+ where, self.class, @state, @str.inspect, @buffer.inspect, @cdata.inspect
35
32
  end
33
+ end
36
34
 
37
- def grab(n=1)
38
- char = @str.slice!(0..(n-1)) # grab n chars
39
- char
40
- end
35
+ def front
36
+ @str[0]
37
+ end
41
38
 
42
- def grab_terminator
43
- @state = :LOOPING
44
- # goes onto buffer by default
45
- # Don't? what if searching for space_marker?
46
- # @buffer << grab
47
- end
39
+ def grab(n=1)
40
+ char = @str.slice!(0..(n-1)) # grab n chars
41
+ char
42
+ end
48
43
 
49
- def eol?
50
- @str.empty?
51
- end
44
+ def grab_terminator
45
+ @state = :LOOPING
46
+ # goes onto buffer by default
47
+ # Don't? what if searching for space_marker?
48
+ # @buffer << grab
49
+ end
52
50
 
53
- def space?
54
- front == " "
55
- end
51
+ def eol?
52
+ @str.empty?
53
+ end
56
54
 
57
- def escape?
58
- front == "\\"
59
- end
55
+ def space?
56
+ front == " "
57
+ end
60
58
 
61
- def terminated?
62
- space? # Will be overridden except in Single
63
- end
59
+ def escape?
60
+ front == "\\"
61
+ end
64
62
 
65
- def marker?
66
- @str.start_with?(@marker)
67
- end
63
+ def terminated?
64
+ space? # Will be overridden except in Single
65
+ end
68
66
 
69
- def space_marker?
70
- @str.start_with?(" " + @marker)
71
- end
67
+ def marker?
68
+ @str.start_with?(@marker)
69
+ end
72
70
 
73
- def wrap(text)
74
- if text.empty?
75
- result = @marker
76
- result = "" if @marker[1] == "["
77
- return result
78
- end
79
- "<#{@tag}>#{text}</#{@tag}>"
71
+ def space_marker?
72
+ @str.start_with?(" " + @marker)
73
+ end
74
+
75
+ def wrap(text)
76
+ if text.empty?
77
+ result = @marker
78
+ result = "" if @marker[1] == "["
79
+ return result
80
80
  end
81
-
82
- def initial
83
- n = @marker.length
84
- case
85
- when escape?
86
- grab # backslash
87
- @buffer << grab # char
88
- when space_marker?
89
- @buffer << grab # append the space
90
- grab(n) # eat the marker
91
- @state = :CDATA
92
- when marker?
93
- grab(n) # Eat the marker
94
- @state = :CDATA
95
- when eol?
96
- @state = :FINAL
97
- else
98
- @state = :BUFFER
99
- end
81
+ "<#{@tag}>#{text}</#{@tag}>"
82
+ end
83
+
84
+ def initial
85
+ n = @marker.length
86
+ case
87
+ when escape?
88
+ grab # backslash
89
+ @buffer << grab # char
90
+ when space_marker?
91
+ @buffer << grab # append the space
92
+ grab(n) # eat the marker
93
+ @state = :CDATA
94
+ when marker?
95
+ grab(n) # Eat the marker
96
+ @state = :CDATA
97
+ when eol?
98
+ @state = :FINAL
99
+ else
100
+ @state = :BUFFER
100
101
  end
102
+ end
101
103
 
102
- def buffer
103
- @buffer << grab
104
- @state = :LOOPING
105
- end
104
+ def buffer
105
+ @buffer << grab
106
+ @state = :LOOPING
107
+ end
106
108
 
107
- def cdata
108
- case
109
- when eol?
110
- if @cdata.empty?
111
- @buffer << @marker unless @marker[1] == "["
112
- else
113
- @buffer << wrap(@cdata)
114
- end
115
- @state = :FINAL
116
- when terminated?
117
- @buffer << wrap(@cdata)
118
- grab_terminator # "*a *b" case???
119
- @cdata = ""
120
- @state = :LOOPING
109
+ def cdata
110
+ case
111
+ when eol?
112
+ if @cdata.empty?
113
+ @buffer << @marker unless @marker[1] == "["
121
114
  else
122
- @cdata << grab
123
- @state = :CDATA
115
+ @buffer << wrap(@cdata)
124
116
  end
117
+ @state = :FINAL
118
+ when terminated?
119
+ @buffer << wrap(@cdata)
120
+ grab_terminator # "*a *b" case???
121
+ @cdata = ""
122
+ @state = :LOOPING
123
+ else
124
+ @cdata << grab
125
+ @state = :CDATA
125
126
  end
127
+ end
126
128
 
127
- def looping
128
- n = @marker.length
129
- case
130
- when escape?
131
- grab # backslash
132
- @buffer << grab # char
133
- when space_marker?
134
- @buffer << grab # append the space
135
- grab(n) # eat the marker
136
- @state = :CDATA
137
- when eol?
138
- @state = :FINAL
139
- else # includes marker not preceded by space!
140
- @buffer << grab
141
- end
129
+ def looping
130
+ n = @marker.length
131
+ case
132
+ when escape?
133
+ grab # backslash
134
+ @buffer << grab # char
135
+ when space_marker?
136
+ @buffer << grab # append the space
137
+ grab(n) # eat the marker
138
+ @state = :CDATA
139
+ when eol?
140
+ @state = :FINAL
141
+ else # includes marker not preceded by space!
142
+ @buffer << grab
142
143
  end
144
+ end
143
145
 
144
- def handle
145
- loop do
146
- break if @state == :FINAL
147
- meth = @state.downcase
148
- send(meth)
149
- end
150
- return @buffer
151
- end
152
-
153
- def self.process(str)
154
- bold = self.new(str, "*", "b")
155
- sb = bold.handle
156
- # return sb
157
- ital = self.new(sb, "_", "i")
158
- si = ital.handle
159
- code = self.new(si, "`", "tt")
160
- sc = code.handle
161
- stri = self.new(sc, "~", "strike")
162
- si = stri.handle
163
- si
146
+ def handle
147
+ loop do
148
+ break if @state == :FINAL
149
+ meth = @state.downcase
150
+ send(meth)
164
151
  end
152
+ return @buffer
165
153
  end
166
154
 
167
- class Single < Delimited
168
- # Yeah, this one is that simple
155
+ def self.process(str)
156
+ bold = self.new(str, "*", "b")
157
+ sb = bold.handle
158
+ # return sb
159
+ ital = self.new(sb, "_", "i")
160
+ si = ital.handle
161
+ code = self.new(si, "`", "tt")
162
+ sc = code.handle
163
+ stri = self.new(sc, "~", "strike")
164
+ si = stri.handle
165
+ si
169
166
  end
167
+ end
170
168
 
171
- class Double < Delimited
172
- def initialize(str, sigil, tag) # Double
173
- super
174
- # Convention: marker is "**", sigil is "*"
175
- @marker = sigil + sigil
176
- end
169
+ class Livetext::Formatter::Single < Livetext::Formatter::Delimited
170
+ # Yeah, this one is that simple
171
+ end
177
172
 
178
- def terminated?
179
- terms = [" ", ".", ","]
180
- terms.include?(front)
181
- end
173
+ class Livetext::Formatter::Double < Livetext::Formatter::Delimited
174
+ def initialize(str, sigil, tag) # Double
175
+ super
176
+ # Convention: marker is "**", sigil is "*"
177
+ @marker = sigil + sigil
182
178
  end
183
179
 
184
- class Bracketed < Delimited
185
- def initialize(str, sigil, tag) # Bracketed
186
- super
187
- # Convention: marker is "*[", sigil is "*"
188
- @marker = sigil + "["
189
- end
180
+ def terminated?
181
+ terms = [" ", ".", ","]
182
+ terms.include?(front)
183
+ end
184
+ end
190
185
 
191
- def terminated?
192
- front == "]" || eol?
193
- end
186
+ class Livetext::Formatter::Bracketed < Livetext::Formatter::Delimited
187
+ def initialize(str, sigil, tag) # Bracketed
188
+ super
189
+ # Convention: marker is "*[", sigil is "*"
190
+ @marker = sigil + "["
191
+ end
194
192
 
195
- def grab_terminator
196
- @state = :LOOPING
197
- grab
198
- end
193
+ def terminated?
194
+ front == "]" || eol?
199
195
  end
200
196
 
197
+ def grab_terminator
198
+ @state = :LOOPING
199
+ grab
200
+ end
201
201
  end
202
202
 
@@ -1,5 +1,5 @@
1
1
 
2
- module GlobalHelpers
2
+ module Livetext::GlobalHelpers
3
3
 
4
4
  def check_disallowed(name)
5
5
  raise DisallowedName(name) if disallowed?(name)
@@ -5,7 +5,7 @@ require_relative '../helpers'
5
5
 
6
6
  class Livetext::Handler::Import
7
7
  include Livetext::Helpers
8
- include GlobalHelpers
8
+ include Livetext::GlobalHelpers
9
9
 
10
10
  attr_reader :file
11
11
 
@@ -5,7 +5,7 @@ require_relative '../helpers'
5
5
 
6
6
  class Livetext::Handler::Mixin
7
7
  include Livetext::Helpers
8
- include GlobalHelpers
8
+ include Livetext::GlobalHelpers
9
9
 
10
10
  attr_reader :file
11
11
 
data/lib/livetext/html.rb CHANGED
@@ -1,4 +1,4 @@
1
- class HTML # FIXME - better as Livetext::HTML ?
1
+ class Livetext::HTML
2
2
 
3
3
  def initialize(api) # HTML
4
4
  raise "API is nil!" unless api
@@ -35,7 +35,7 @@ class Processor
35
35
  @indentation = @parent.indentation
36
36
  @_mixins = []
37
37
  @_imports = []
38
- @html = HTML.new(@parent.api)
38
+ @html = Livetext::HTML.new(@parent.api)
39
39
  end
40
40
 
41
41
  def api
@@ -3,10 +3,19 @@ require_relative 'parser/string' # FIXME eh, should fix this
3
3
  # Class Livetext skeleton (top level).
4
4
 
5
5
  class Livetext
6
+ class Variables
7
+ end
8
+
6
9
  module Handler
7
10
  end
8
11
 
9
- module ParsingConstants
12
+ module Formatter
13
+ end
14
+
15
+ class HTML
16
+ end
17
+
18
+ class ParsingConstants
10
19
  end
11
20
 
12
21
  class LineParser < StringParser
@@ -11,8 +11,6 @@ make_exception(:FileNotFound, "Error: file '%1' not found")
11
11
  # Module Standard comprises most of the standard or "common" methods.
12
12
 
13
13
  module Livetext::Standard
14
-
15
- # include HTMLHelper
16
14
  include Livetext::Helpers
17
15
 
18
16
  TTY = ::File.open("/dev/tty", "w")
@@ -16,7 +16,7 @@ class Livetext::UserAPI
16
16
  def initialize(live) # Livetext::UserAPI
17
17
  @live = live
18
18
  @vars = live.vars
19
- @html = HTML.new(self)
19
+ @html = Livetext::HTML.new(self)
20
20
  @expander = Livetext::Expansion.new(live)
21
21
  end
22
22
 
@@ -0,0 +1,50 @@
1
+ class Livetext::Variables # FIXME - split out into file as Livetext::Variables
2
+ attr_reader :vars
3
+
4
+ def initialize(hash = {}) # Livetext::Variables
5
+ @vars = {}
6
+ hash.each_pair do |k, v|
7
+ sym = k.to_sym
8
+ str = k.to_s
9
+ @vars[sym] = v
10
+ @vars[str] = v
11
+ end
12
+ end
13
+
14
+ def inspect
15
+ syms = @vars.keys.select {|x| x.is_a? Symbol }
16
+ out = "\nVariables:"
17
+ syms.each do |sym|
18
+ out << " #{sym}: #{@vars[sym].inspect}\n"
19
+ end
20
+ out
21
+ end
22
+
23
+ def [](var)
24
+ @vars[var.to_sym]
25
+ end
26
+
27
+ def []=(var, value)
28
+ @vars[var.to_sym] = value
29
+ end
30
+
31
+ def get(var)
32
+ @vars[var.to_sym] || "[#{var} is undefined]"
33
+ end
34
+
35
+ def set(var, value)
36
+ @vars[var.to_sym] = value.to_s
37
+ end
38
+
39
+ def setvars(pairs)
40
+ pairs = pairs.to_a if pairs.is_a?(Hash)
41
+ pairs.each do |var, value|
42
+ api.setvar(var, value)
43
+ end
44
+ end
45
+
46
+ def to_a
47
+ @vars.to_a
48
+ end
49
+ end
50
+
@@ -2,5 +2,5 @@
2
2
  # Defining VERSION
3
3
 
4
4
  class Livetext
5
- VERSION = "0.9.47"
5
+ VERSION = "0.9.48"
6
6
  end
data/lib/livetext.rb CHANGED
@@ -1,19 +1,21 @@
1
1
 
2
- require_relative 'livetext/skeleton'
3
- require_relative 'livetext/version'
4
- require_relative 'livetext/helpers'
5
- require_relative 'livetext/more'
6
- require_relative 'livetext/paths'
2
+ if !defined?(Livetext)
3
+ require_relative 'livetext/skeleton'
4
+ require_relative 'livetext/version'
5
+ require_relative 'livetext/helpers'
6
+ require_relative 'livetext/variables'
7
+ require_relative 'livetext/core'
8
+ require_relative 'livetext/formatter'
9
+ require_relative 'livetext/paths'
7
10
 
8
- require_relative 'livetext/reopen'
9
-
10
- require_relative 'livetext/errors'
11
- require_relative 'livetext/standard'
12
- require_relative 'livetext/functions'
13
- require_relative 'livetext/userapi'
14
- require_relative 'livetext/formatter'
15
- require_relative 'livetext/processor'
16
-
17
- require_relative 'livetext/handler'
11
+ require_relative 'livetext/reopen'
18
12
 
13
+ require_relative 'livetext/errors'
14
+ require_relative 'livetext/standard'
15
+ require_relative 'livetext/functions'
16
+ require_relative 'livetext/userapi'
17
+ # require_relative 'livetext/formatter'
18
+ require_relative 'livetext/processor'
19
19
 
20
+ require_relative 'livetext/handler'
21
+ end
data/test/all.rb CHANGED
@@ -5,5 +5,8 @@
5
5
  # add_filter "/test/"
6
6
  # end
7
7
 
8
+ # FIXME - this file is broken - path issues
9
+
8
10
  require_relative 'unit/all'
11
+
9
12
  require_relative 'snapshots' # snapshots
@@ -11,6 +11,7 @@ The tests here include:
11
11
  double.txt Double sigil (see Formatting below)
12
12
  bracketed.txt Bracketed sigil (see Formatting below)
13
13
 
14
+ NOTE: These are moved under test/unit/ now.
14
15
 
15
16
  Variables:
16
17
  ----------
data/test/unit/all.rb CHANGED
@@ -2,3 +2,10 @@
2
2
  require_relative 'standard'
3
3
  require_relative 'parser' # nested
4
4
  require_relative 'html'
5
+
6
+ require_relative 'single'
7
+ require_relative 'double'
8
+ require_relative 'bracketed'
9
+ require_relative 'variables'
10
+ require_relative 'functions'
11
+
data/test/unit/html.rb CHANGED
@@ -12,7 +12,7 @@ class TestingLivetext < MiniTest::Test
12
12
 
13
13
  def test_wrapped
14
14
  live = Livetext.new
15
- html = HTML.new(live.api)
15
+ html = Livetext::HTML.new(live.api)
16
16
  str = "nothing much"
17
17
  assert_equal html.tag(:b, cdata: str), "<b>#{str}</b>"
18
18
  assert_equal html.tag(:b, :i, cdata: str), "<b><i>#{str}</i></b>"
@@ -23,7 +23,7 @@ class TestingLivetext < MiniTest::Test
23
23
 
24
24
  def test_wrapped_extra
25
25
  live = Livetext.new
26
- html = HTML.new(live.api)
26
+ html = Livetext::HTML.new(live.api)
27
27
  str = "nothing much"
28
28
  assert_equal html.tag(:td, cdata: str, valign: :top),
29
29
  "<td valign='top'>#{str}</td>"
@@ -7,7 +7,6 @@ require 'livetext'
7
7
  # Just another testing class. Chill.
8
8
 
9
9
  class TestingLivetextSingle < MiniTest::Test
10
-
11
10
  def setup
12
11
  @live = Livetext.new
13
12
  end
@@ -131,11 +130,9 @@ class TestingLivetextSingle < MiniTest::Test
131
130
  def test_single_013_escaped_marker_is_ignored
132
131
  # Escaped marker is ignored
133
132
  # No special initialization
134
- src = "\\\\*escaped"
133
+ src = '\\' + "*escaped" # Note single quote
135
134
  exp = "*escaped"
136
135
  actual = @live.api.format(src)
137
136
  check_match(exp, actual)
138
137
  end
139
-
140
-
141
138
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: livetext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.47
4
+ version: 0.9.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
@@ -27,6 +27,7 @@ files:
27
27
  - imports/pyggish.rb
28
28
  - imports/tutorial.rb
29
29
  - lib/livetext.rb
30
+ - lib/livetext/core.rb
30
31
  - lib/livetext/errors.rb
31
32
  - lib/livetext/expansion.rb
32
33
  - lib/livetext/formatter.rb
@@ -37,7 +38,6 @@ files:
37
38
  - lib/livetext/handler/mixin.rb
38
39
  - lib/livetext/helpers.rb
39
40
  - lib/livetext/html.rb
40
- - lib/livetext/more.rb
41
41
  - lib/livetext/parser.rb
42
42
  - lib/livetext/parser/general.rb
43
43
  - lib/livetext/parser/set.rb
@@ -49,6 +49,7 @@ files:
49
49
  - lib/livetext/skeleton.rb
50
50
  - lib/livetext/standard.rb
51
51
  - lib/livetext/userapi.rb
52
+ - lib/livetext/variables.rb
52
53
  - lib/livetext/version.rb
53
54
  - livetext.gemspec
54
55
  - plugin/booktool.rb
@@ -60,16 +61,11 @@ files:
60
61
  - plugin/tutorial.rb
61
62
  - test/all.rb
62
63
  - test/extra/README.txt
63
- - test/extra/bracketed.rb
64
64
  - test/extra/bracketed.txt
65
- - test/extra/double.rb
66
65
  - test/extra/double.txt
67
- - test/extra/functions.rb
68
66
  - test/extra/functions.txt
69
- - test/extra/single.rb
70
67
  - test/extra/single.txt
71
68
  - test/extra/testgen.rb
72
- - test/extra/variables.rb
73
69
  - test/extra/variables.txt
74
70
  - test/snapshots.rb
75
71
  - test/snapshots/basic_formatting/expected-error.txt
@@ -191,6 +187,9 @@ files:
191
187
  - test/snapshots/var_into_func/expected-output.txt
192
188
  - test/snapshots/var_into_func/source.lt3
193
189
  - test/unit/all.rb
190
+ - test/unit/bracketed.rb
191
+ - test/unit/double.rb
192
+ - test/unit/functions.rb
194
193
  - test/unit/html.rb
195
194
  - test/unit/parser.rb
196
195
  - test/unit/parser/all.rb
@@ -198,8 +197,10 @@ files:
198
197
  - test/unit/parser/mixin.rb
199
198
  - test/unit/parser/set.rb
200
199
  - test/unit/parser/string.rb
200
+ - test/unit/single.rb
201
201
  - test/unit/standard.rb
202
202
  - test/unit/stringparser.rb
203
+ - test/unit/variables.rb
203
204
  homepage: https://github.com/Hal9000/livetext
204
205
  licenses:
205
206
  - Ruby
File without changes
File without changes
File without changes
File without changes