Class: Livetext
- Inherits:
-
Object
show all
- Includes:
- Helpers
- Defined in:
- lib/livetext/more.rb,
lib/livetext/paths.rb,
lib/livetext/version.rb,
lib/livetext/skeleton.rb
Overview
Class Livetext skeleton (top level).
Defined Under Namespace
Modules: Handler, Helpers, ParsingConstants, Standard
Classes: CmdData, Expansion, Functions, LineParser, ParseGeneral, ParseSet, UserAPI, Variables
Constant Summary
collapse
- Vars =
Variables.new
- TTY =
::File.open("/dev/tty", "w")
- Path =
self.get_path
- Plugins =
self.get_path("../plugin")
- Imports =
self.get_path("../imports")
- VERSION =
"0.9.35"
Constants included
from Helpers
Helpers::Comment, Helpers::DollarDot, Helpers::DotCmd, Helpers::ESCAPING, Helpers::Sigil, Helpers::Space
Class Attribute Summary collapse
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Helpers
#check_disallowed, #check_file_exists, #debug, #escape_html, #find_file, #friendly_error, #get_name_data, #grab_file, #handle_dollar_dot, #handle_dotcmd, #handle_scomment, #include_file, #invoke_dotcmd, #onoff, #process_file, #process_line, #read_variables, rx, #search_upward, #set_variables, #setfile, #setfile!, #setvar, #showme
Constructor Details
#initialize(output = ::STDOUT) ⇒ Livetext
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/livetext/more.rb', line 123
def initialize(output = ::STDOUT)
@source = nil
@_mixins = []
@_imports = []
@_outdir = "."
@no_puts = output.nil?
@body = ""
@main = Processor.new(self, output)
@indentation = [0]
@_vars = Livetext::Vars
@api = UserAPI.new(self)
initial_vars
end
|
Class Attribute Details
53
54
55
|
# File 'lib/livetext/more.rb', line 53
def output
@output
end
|
Instance Attribute Details
Returns the value of attribute body.
50
51
52
|
# File 'lib/livetext/more.rb', line 50
def body
@body
end
|
#indentation ⇒ Object
Returns the value of attribute indentation.
50
51
52
|
# File 'lib/livetext/more.rb', line 50
def indentation
@indentation
end
|
Returns the value of attribute main.
48
49
50
|
# File 'lib/livetext/more.rb', line 48
def main
@main
end
|
Returns the value of attribute nopara.
49
50
51
|
# File 'lib/livetext/more.rb', line 49
def nopara
@nopara
end
|
Returns the value of attribute nopass.
49
50
51
|
# File 'lib/livetext/more.rb', line 49
def nopass
@nopass
end
|
Returns the value of attribute sources.
48
49
50
|
# File 'lib/livetext/more.rb', line 48
def sources
@sources
end
|
Class Method Details
.customize(mix: [], call: [], vars: {}) ⇒ Object
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/livetext/more.rb', line 99
def self.customize(mix: [], call: [], vars: {})
obj = self.new
mix = Array(mix)
call = Array(call)
mix.each do |lib|
obj.invoke_dotcmd(:mixin, lib.dup)
end
call.each {|cmd| obj.main.send(cmd[1..-1]) }
obj.api.setvars(vars)
obj
end
|
.get_path(dir = "") ⇒ Object
4
5
6
7
|
# File 'lib/livetext/paths.rb', line 4
def self.get_path(dir = "")
path = File.join(File.dirname(__FILE__), dir)
File.expand_path(path)
end
|
.interpolate(str) ⇒ Object
60
61
62
63
64
65
|
# File 'lib/livetext/more.rb', line 60
def self.interpolate(str)
expand = Livetext::Expansion.new(self)
str2 = expand.expand_variables(str)
str3 = expand.expand_function_calls(str2)
str3
end
|
Instance Method Details
137
138
139
|
# File 'lib/livetext/more.rb', line 137
def api
@api
end
|
#api=(obj) ⇒ Object
141
142
143
|
# File 'lib/livetext/more.rb', line 141
def api=(obj)
@api = obj
end
|
#customize(mix: [], call: [], vars: {}) ⇒ Object
113
114
115
116
117
118
119
120
121
|
# File 'lib/livetext/more.rb', line 113
def customize(mix: [], call: [], vars: {})
mix = Array(mix)
call = Array(call)
mix.each {|lib| mixin(lib) }
call.each {|cmd| @main.send(cmd[1..-1]) }
api.setvars(vars)
self
end
|
#dump(file = nil) ⇒ Object
87
88
89
90
91
92
|
# File 'lib/livetext/more.rb', line 87
def dump(file = nil)
file ||= ::STDOUT
file.puts @body
rescue => err
TTY.puts "#dump had an error: #{err.inspect}"
end
|
#graceful_error(err) ⇒ Object
94
95
96
97
|
# File 'lib/livetext/more.rb', line 94
def graceful_error(err)
dump
raise err
end
|
#initial_vars ⇒ Object
145
146
147
148
149
|
# File 'lib/livetext/more.rb', line 145
def initial_vars
@api.setvar(:User, `whoami`.chomp)
@api.setvar(:Version, Livetext::VERSION)
end
|
71
72
73
|
# File 'lib/livetext/more.rb', line 71
def nextline
@main.nextline
end
|
#peek_nextline ⇒ Object
67
68
69
|
# File 'lib/livetext/more.rb', line 67
def peek_nextline
@main.peek_nextline
end
|
#save_location ⇒ Object
79
80
81
|
# File 'lib/livetext/more.rb', line 79
def save_location
@save_location
end
|
#save_location=(where) ⇒ Object
83
84
85
|
# File 'lib/livetext/more.rb', line 83
def save_location=(where)
@save_location = where
end
|
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
# File 'lib/livetext/more.rb', line 151
def transform(text)
setfile!("(string)")
enum = text.each_line
front = text.match(/.*?\n/).to_a.first.chomp rescue ""
@main.source(enum, "STDIN: '#{front}...'", 0)
loop do
line = @main.nextline
break if line.nil?
process_line(line)
end
result = @body
result
end
|
56
57
58
|
# File 'lib/livetext/more.rb', line 56
def vars
@_vars
end
|
EXPERIMENTAL and incomplete
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
# File 'lib/livetext/more.rb', line 167
def xform(*args, file: nil, text: nil, vars: {})
case
when file && text.nil?
xform_file(file)
when file.nil? && text
transform(text)
when file.nil? && text.nil?
raise "Must specify file or text"
when file && text
raise "Cannot specify file and text"
end
self.process_file(file)
self.body
end
|
182
183
184
185
186
187
|
# File 'lib/livetext/more.rb', line 182
def xform_file(file, vars: nil)
Livetext::Vars.replace(vars) unless vars.nil?
@_vars.replace(vars) unless vars.nil?
self.process_file(file)
self.body
end
|