Class: Livetext::UserAPI
Overview
Encapsulate the UserAPI as a class
Constant Summary
collapse
- KBD =
File.new("/dev/tty", "r")
- TTY =
File.new("/dev/tty", "w")
- DotSpace =
Livetext::Sigil + Livetext::Space
". "
Constants included
from Standard
Standard::SimpleFormats
Constants included
from Helpers
Helpers::Comment, Helpers::DollarDot, Helpers::DotCmd, Helpers::ESCAPING, Helpers::Sigil, Helpers::Space
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Standard
#backtrace, #banner, #bits, #br, #cinclude, #cleanup, #comment, #copy, #dlist, #dot_def, #dot_include, #errout, #func, #h1, #h2, #h3, #h4, #h5, #h6, #heading, #heredoc, #heredoc!, #image, #import, #inherit, #link, #list, #list!, #mixin, #mono, #newpage, #nopara, #nopass, #para, #quit, #r, #raw, #reflection, #say, #seek, #set, #shell, #shell!, #table, #ttyout, #variables, #variables!, #xtable
Methods included from Helpers
#check_disallowed, #check_file_exists, #escape_html, #find_file, #friendly_error, #get_name_data, #grab_file, #graceful_error, #handle_dollar_dot, #handle_dotcmd, #handle_scomment, #invoke_dotcmd, #onoff, #process_file, #process_line, #read_variables, rx, #search_upward, #set_variables, #setfile, #setfile!, #showme
Constructor Details
#initialize(live) ⇒ UserAPI
17
18
19
20
21
22
|
# File 'lib/livetext/userapi.rb', line 17
def initialize(live)
@live = live
@vars = live.vars
@html = HTML.new(self)
@expander = Livetext::Expansion.new(live)
end
|
Instance Attribute Details
Returns the value of attribute args.
15
16
17
|
# File 'lib/livetext/userapi.rb', line 15
def args
@args
end
|
Returns the value of attribute data.
15
16
17
|
# File 'lib/livetext/userapi.rb', line 15
def data
@data
end
|
Instance Method Details
24
25
26
|
# File 'lib/livetext/userapi.rb', line 24
def api
@live.api
end
|
#body(raw = false) ⇒ Object
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
# File 'lib/livetext/userapi.rb', line 129
def body(raw=false)
lines = []
end_found = false
loop do
@line = @live.nextline
break if @line.nil?
@line.chomp!
break if end?(@line)
next if (@line)
@line = format(@line) unless raw
lines << @line
end
raise "Expected .end, found end of file" unless end?(@line)
optional_blank_line
return lines unless block_given?
lines.each {|line| yield line }
end
|
#body_text(raw = false) ⇒ Object
147
148
149
|
# File 'lib/livetext/userapi.rb', line 147
def body_text(raw=false)
raw_body.join("\n")
end
|
#check_existence(file, msg) ⇒ Object
71
72
73
|
# File 'lib/livetext/userapi.rb', line 71
def check_existence(file, msg)
STDERR.puts msg unless File.exist?(file)
end
|
101
102
103
|
# File 'lib/livetext/userapi.rb', line 101
def (str)
str.index(DotSpace) == 0
end
|
#debug(*args) ⇒ Object
215
216
217
|
# File 'lib/livetext/userapi.rb', line 215
def debug(*args)
TTY.puts *args if @live.debug
end
|
#debug=(val) ⇒ Object
211
212
213
|
# File 'lib/livetext/userapi.rb', line 211
def debug=(val)
@live.debug = val
end
|
40
41
42
|
# File 'lib/livetext/userapi.rb', line 40
def dot
@live
end
|
#dump(file = nil) ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/livetext/userapi.rb', line 28
def dump(file = nil)
file ||= ::STDOUT
file.puts @live.body
rescue => err
TTY.puts "#dump had an error: #{err.inspect}"
end
|
#end?(str) ⇒ Boolean
110
111
112
113
|
# File 'lib/livetext/userapi.rb', line 110
def end?(str)
return true if str == ".end" || str =~ / *\$\.end/
return false
end
|
#err(*args) ⇒ Object
197
198
199
|
# File 'lib/livetext/userapi.rb', line 197
def err(*args)
STDERR.puts *args
end
|
#expand_functions(str) ⇒ Object
55
56
57
|
# File 'lib/livetext/userapi.rb', line 55
def expand_functions(str)
@expander.expand_functions(str)
end
|
#expand_variables(str) ⇒ Object
51
52
53
|
# File 'lib/livetext/userapi.rb', line 51
def expand_variables(str)
@expander.expand_variables(str)
end
|
163
164
165
166
|
# File 'lib/livetext/userapi.rb', line 163
def format(line)
line2 = @expander.format(line)
line2
end
|
#handle_escapes(str, set) ⇒ Object
155
156
157
158
159
160
161
|
# File 'lib/livetext/userapi.rb', line 155
def handle_escapes(str, set)
str = str.dup
set.each_char do |ch|
str.gsub!("\\#{ch}", ch)
end
str
end
|
36
37
38
|
# File 'lib/livetext/userapi.rb', line 36
def html
@html
end
|
#include_file(file) ⇒ Object
44
45
46
47
48
49
|
# File 'lib/livetext/userapi.rb', line 44
def include_file(file)
api.data = file
api.args = [file]
api.dot_include
end
|
#optional_blank_line ⇒ Object
94
95
96
97
98
99
|
# File 'lib/livetext/userapi.rb', line 94
def optional_blank_line
peek = @live.peek_nextline
return if peek.nil?
@line = @live.nextline if peek =~ /^ *$/
return true
end
|
#out(str = "", file = nil) ⇒ Object
181
182
183
184
185
186
187
|
# File 'lib/livetext/userapi.rb', line 181
def out(str = "", file = nil)
return if str.nil?
return file.puts str unless file.nil?
str.gsub!("\b ", "")
@live.body << str
@live.body << "\n" unless str.end_with?("\n")
end
|
#out!(str = "") ⇒ Object
189
190
191
|
# File 'lib/livetext/userapi.rb', line 189
def out!(str = "")
@live.body << str
end
|
#passthru(line) ⇒ Object
168
169
170
171
172
173
174
175
176
177
178
179
|
# File 'lib/livetext/userapi.rb', line 168
def passthru(line)
return if @live.nopass
if line == "\n"
unless @live.nopara
out "<p>"
out
end
else
text = @expander.format(line.chomp)
out text
end
end
|
#print(*args) ⇒ Object
206
207
208
209
|
# File 'lib/livetext/userapi.rb', line 206
def print(*args)
@live.api.out! *args
end
|
#puts(*args) ⇒ Object
201
202
203
204
|
# File 'lib/livetext/userapi.rb', line 201
def puts(*args)
@live.api.out *args
end
|
#raw_body(tag = "__EOF__") ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/livetext/userapi.rb', line 115
def raw_body(tag = "__EOF__")
lines = []
@live.save_location = @live.sources.last
loop do
@line = @live.nextline
break if @line.nil?
break if @line.chomp.strip == tag
lines << @line
end
optional_blank_line
return lines unless block_given?
lines.each {|line| yield line }
end
|
#raw_body! ⇒ Object
151
152
153
|
# File 'lib/livetext/userapi.rb', line 151
def raw_body!
raw_body(Livetext::Sigil).join("\n")
end
|
#setvar(var, val) ⇒ Object
59
60
61
|
# File 'lib/livetext/userapi.rb', line 59
def setvar(var, val)
@live.vars.set(var, val)
end
|
#setvars(pairs) ⇒ Object
63
64
65
66
67
68
69
|
# File 'lib/livetext/userapi.rb', line 63
def setvars(pairs)
pairs = pairs.to_a
pairs.each do |var, value|
@live.vars.set(var, value)
end
end
|
#trailing?(char) ⇒ Boolean
105
106
107
108
|
# File 'lib/livetext/userapi.rb', line 105
def trailing?(char)
return true if ["\n", " ", nil].include?(char)
return false
end
|
#tty(*args) ⇒ Object
193
194
195
|
# File 'lib/livetext/userapi.rb', line 193
def tty(*args)
TTY.puts *args
end
|
90
91
92
|
# File 'lib/livetext/userapi.rb', line 90
def vars
@vars
end
|