Module: Livetext::Standard
- Included in:
- Processor
- Defined in:
- lib/standard.rb
Constant Summary collapse
- SimpleFormats =
Move this?
{ b: %w[<b> </b>], i: %w[<i> </i>], t: ["<font size=+1><tt>", "</tt></font>"], s: %w[<strike> </strike>] }
Instance Attribute Summary collapse
-
#_data ⇒ Object
readonly
Returns the value of attribute _data.
Instance Method Summary collapse
- #_append(name) ⇒ Object
- #_def ⇒ Object
- #_include ⇒ Object
- #_next_output(tag = "sec", num = nil) ⇒ Object
- #_output(name) ⇒ Object
- #_seek(file) ⇒ Object
- #append ⇒ Object
- #backtrace ⇒ Object
- #banner ⇒ Object
-
#bits ⇒ Object
dumb name - bold, italic, teletype, striketrough.
- #br ⇒ Object
- #cleanup ⇒ Object
- #comment ⇒ Object
- #copy ⇒ Object
- #data=(val) ⇒ Object
- #debug ⇒ Object
- #dlist ⇒ Object
- #errout ⇒ Object
- #func ⇒ Object
- #heading ⇒ Object
- #heredoc ⇒ Object
- #inherit ⇒ Object
- #invoke(str) ⇒ Object
- #link ⇒ Object
-
#mixin ⇒ Object
def include! # FIXME huh? file = @_args.first return unless File.exist?(file).
- #mono ⇒ Object
- #newpage ⇒ Object
- #next_output ⇒ Object
- #nopara ⇒ Object
- #nopass ⇒ Object
- #old_dlist ⇒ Object
- #outdir ⇒ Object
-
#outdir! ⇒ Object
FIXME ?.
- #output ⇒ Object
- #para ⇒ Object
- #passthru ⇒ Object
- #quit ⇒ Object
- #r ⇒ Object
- #raw ⇒ Object
- #say ⇒ Object
- #seek ⇒ Object
- #set ⇒ Object
- #shell ⇒ Object
- #shell! ⇒ Object
-
#xtable ⇒ Object
Borrowed from bookish - FIXME.
Instance Attribute Details
#_data ⇒ Object (readonly)
Returns the value of attribute _data.
9 10 11 |
# File 'lib/standard.rb', line 9 def _data @_data end |
Instance Method Details
#_append(name) ⇒ Object
100 101 102 103 104 105 |
# File 'lib/standard.rb', line 100 def _append(name) @_outdir ||= "." # FIXME @output.close unless @output == STDOUT @output = File.open(@_outdir + "/" + name, "a") @output.puts "<meta charset='UTF-8'>\n\n" end |
#_def ⇒ Object
141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/standard.rb', line 141 def _def name = @_args[0] str = "def #{name}\n" raise "Illegal name '#{name}'" if _disallowed?(name) str += _body_text(true) str += "\nend\n" eval str rescue => err _error!(err) # puts @body end |
#_include ⇒ Object
212 213 214 215 216 217 218 |
# File 'lib/standard.rb', line 212 def _include file = @_args.first _check_existence(file, "No such include file '#{file}'") @parent.process_file(file) _optional_blank_line end |
#_next_output(tag = "sec", num = nil) ⇒ Object
134 135 136 137 138 139 |
# File 'lib/standard.rb', line 134 def _next_output(tag = "sec", num = nil) @_file_num = num ? num : @_file_num + 1 @_file_num = @_file_num.to_i name = "#{'%03d' % @_file_num}-#{tag}.html" _output(name) end |
#_output(name) ⇒ Object
93 94 95 96 97 98 |
# File 'lib/standard.rb', line 93 def _output(name) @_outdir ||= "." # FIXME @output.close unless @output == STDOUT @output = File.open(@_outdir + "/" + name, "w") @output.puts "<meta charset='UTF-8'>\n\n" end |
#_seek(file) ⇒ Object
192 193 194 195 196 197 198 199 200 201 |
# File 'lib/standard.rb', line 192 def _seek(file) if File.exist?(file) return file else Dir.chdir("..") { _seek(file) unless Dir.pwd == "/" } end return nil rescue return nil end |
#append ⇒ Object
113 114 115 116 |
# File 'lib/standard.rb', line 113 def append file = @_args[0] _append(file) end |
#backtrace ⇒ Object
25 26 27 28 29 |
# File 'lib/standard.rb', line 25 def backtrace arg = @_args.first @backtrace = true @backtrace = false if arg == "off" end |
#banner ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/standard.rb', line 67 def str = _format(@_data) n = str.length - 1 puts "-"*n puts str puts "-"*n end |
#bits ⇒ Object
dumb name - bold, italic, teletype, striketrough
17 18 19 20 21 22 23 |
# File 'lib/standard.rb', line 17 def bits # dumb name - bold, italic, teletype, striketrough b0, b1, i0, i1, t0, t1, s0, s1 = *@_args SimpleFormats[:b] = [b0, b1] SimpleFormats[:i] = [i0, i1] SimpleFormats[:t] = [t0, t1] SimpleFormats[:s] = [s0, s1] end |
#br ⇒ Object
402 403 404 405 406 407 |
# File 'lib/standard.rb', line 402 def br n = _args.first || "1" out = "" n.to_i.times { out << "<br>" } _out out end |
#cleanup ⇒ Object
124 125 126 127 128 129 130 131 132 |
# File 'lib/standard.rb', line 124 def cleanup @_args.each do |item| if ::File.directory?(item) system("rm -f #{item}/*") else ::FileUtils.rm(item) end end end |
#comment ⇒ Object
31 32 33 |
# File 'lib/standard.rb', line 31 def comment _body end |
#copy ⇒ Object
269 270 271 272 273 274 |
# File 'lib/standard.rb', line 269 def copy file = @_args.first _check_existence(file, "No such file '#{file}' to copy") _out grab_file(file) _optional_blank_line end |
#data=(val) ⇒ Object
11 12 13 14 15 |
# File 'lib/standard.rb', line 11 def data=(val) @_data = val @_args = val.split rescue [] @_mixins = [] end |
#debug ⇒ Object
285 286 287 288 289 |
# File 'lib/standard.rb', line 285 def debug arg = @_args.first self._debug = true self._debug = false if arg == "off" end |
#dlist ⇒ Object
342 343 344 345 346 347 348 349 350 351 352 |
# File 'lib/standard.rb', line 342 def dlist delim = _args.first _out "<dl>" _body do |line| line = _format(line) term, defn = line.split(delim) _out "<dt>#{term}</dt>" _out "<dd>#{defn}</dd>" end _out "</dl>" end |
#errout ⇒ Object
57 58 59 |
# File 'lib/standard.rb', line 57 def errout TTY.puts @_data end |
#func ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/standard.rb', line 41 def func funcname = @_args[0] _error! "Illegal name '#{funcname}'" if _disallowed?(funcname) func_def = " def \#{funcname}(param)\n \#{_body_text(true)}\n end\n" Livetext::Functions.class_eval func_def end |
#heading ⇒ Object
321 322 323 324 325 |
# File 'lib/standard.rb', line 321 def heading _print "<center><font size=+1><b>" _print @_data _print "</b></font></center>" end |
#heredoc ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/standard.rb', line 169 def heredoc var = @_args[0] str = _body_text s2 = "" str.each_line do |s| s2 << s.chomp + "<br>" end indent = @parent.indentation.last indented = " " * indent # s2 = "" # str.each_line do |line| # if line.start_with?(indented) # line.replace(line[indent..-1]) # else # STDERR.puts "Error? heredoc not indented?" # return # end # s2 << line # end @parent._setvar(var, s2.chomp) _optional_blank_line end |
#inherit ⇒ Object
220 221 222 223 224 225 226 227 228 229 |
# File 'lib/standard.rb', line 220 def inherit file = @_args.first upper = "../#{file}" good = (File.exist?(upper) || File.exist?(file)) _error!("File #{file} not found (local or parent)") unless good @parent.process_file(upper) if File.exist?(upper) @parent.process_file(file) if File.exist?(file) _optional_blank_line end |
#invoke(str) ⇒ Object
332 333 |
# File 'lib/standard.rb', line 332 def invoke(str) end |
#link ⇒ Object
367 368 369 370 371 |
# File 'lib/standard.rb', line 367 def link url = _args.first text = _args[2..-1].join(" ") _out "<a href='#{url}'>#{text}</a>" end |
#mixin ⇒ Object
def include! # FIXME huh?
file = @_args.first
return unless File.exist?(file)
lines = @parent.process_file(file)
#? File.delete(file)
_optional_blank_line
end
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
# File 'lib/standard.rb', line 240 def mixin name = @_args.first # Expect a module name file = "#{Plugins}/" + name.downcase + ".rb" return if @_mixins.include?(name) file = "./#{name}.rb" unless File.exist?(file) if File.exist?(file) # Just keep going... else if File.(".") != "/" Dir.chdir("..") { mixin } return end end @_mixins << name meths = grab_file(file) modname = name.gsub("/","_").capitalize string = "module ::#{modname}\n#{meths}\nend" # puts "===========" # string.each_line.with_index {|line, i| puts "#{'%3d' % (i+1)} : #{line}" } # puts "===========" eval(string) newmod = Object.const_get("::" + modname) self.extend(newmod) init = "init_#{name}" self.send(init) if self.respond_to? init _optional_blank_line end |
#mono ⇒ Object
335 336 337 338 339 340 |
# File 'lib/standard.rb', line 335 def mono _out "<pre>" _body(true) {|line| _out line } _out "</pre>" _optional_blank_line end |
#newpage ⇒ Object
327 328 329 330 |
# File 'lib/standard.rb', line 327 def newpage _out '<p style="page-break-after:always;"></p>' _out "<p/>" end |
#next_output ⇒ Object
118 119 120 121 122 |
# File 'lib/standard.rb', line 118 def next_output tag, num = @_args _next_output(tag, num) _optional_blank_line end |
#nopara ⇒ Object
317 318 319 |
# File 'lib/standard.rb', line 317 def nopara @_nopara = true end |
#nopass ⇒ Object
302 303 304 |
# File 'lib/standard.rb', line 302 def nopass @_nopass = true end |
#old_dlist ⇒ Object
354 355 356 357 358 359 360 361 362 363 364 365 |
# File 'lib/standard.rb', line 354 def old_dlist delim = _args.first _out "<table>" _body do |line| line = _format(line) term, defn = line.split(delim) _out "<tr>" _out "<td width=3%><td width=10%>#{term}</td><td>#{defn}</td>" _out "</tr>" end _out "</table>" end |
#outdir ⇒ Object
80 81 82 83 |
# File 'lib/standard.rb', line 80 def outdir @_outdir = @_args.first _optional_blank_line end |
#outdir! ⇒ Object
FIXME ?
85 86 87 88 89 90 91 |
# File 'lib/standard.rb', line 85 def outdir! # FIXME ? @_outdir = @_args.first raise "No output directory specified" if @_outdir.nil? raise "No output directory specified" if @_outdir.empty? system("rm -f #@_outdir/*.html") _optional_blank_line end |
#output ⇒ Object
107 108 109 110 111 |
# File 'lib/standard.rb', line 107 def output name = @_args.first _debug "Redirecting output to: #{name}" _output(name) end |
#para ⇒ Object
306 307 308 309 310 311 312 313 314 315 |
# File 'lib/standard.rb', line 306 def para # FIXME - add check for args size (helpers); _onoff helper?? onoff = _args.first case onoff when nil; @_nopara = false when "on"; @_nopara = false when "off"; @_nopara = true else _error!("Unknown arg '#{onoff}'") end end |
#passthru ⇒ Object
291 292 293 294 295 296 297 298 299 300 |
# File 'lib/standard.rb', line 291 def passthru # FIXME - add check for args size (helpers); _onoff helper?? onoff = _args.first case onoff when nil; @_nopass = false when "on"; @_nopass = false when "off"; @_nopass = true else _error!("Unknown arg '#{onoff}'") end end |
#quit ⇒ Object
75 76 77 78 |
# File 'lib/standard.rb', line 75 def quit @output.close exit end |
#r ⇒ Object
276 277 278 |
# File 'lib/standard.rb', line 276 def r _out @_data # No processing at all end |
#raw ⇒ Object
280 281 282 283 |
# File 'lib/standard.rb', line 280 def raw # No processing at all (terminate with __EOF__) _raw_body {|x| _out x } # no formatting end |
#say ⇒ Object
61 62 63 64 65 |
# File 'lib/standard.rb', line 61 def say str = _format(@_data) TTY.puts str _optional_blank_line end |
#seek ⇒ Object
203 204 205 206 207 208 209 210 |
# File 'lib/standard.rb', line 203 def seek # like include, but search upward as needed file = @_args.first file = _seek(file) _error!(file, "No such include file '#{file}'") unless file @parent.process_file(file) _optional_blank_line end |
#set ⇒ Object
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/standard.rb', line 153 def set assigns = @_data.chomp.split(/, */) # Do a better way? # FIXME *Must* allow for vars/functions assigns.each do |a| var, val = a.split("=") var.strip! val.strip! val = val[1..-2] if val[0] == ?" && val[-1] == ?" val = val[1..-2] if val[0] == ?' && val[-1] == ?' val = FormatLine.var_func_parse(val) @parent._setvar(var, val) end _optional_blank_line end |
#shell ⇒ Object
35 36 37 38 39 |
# File 'lib/standard.rb', line 35 def shell cmd = @_data _errout("Running: #{cmd}") system(cmd) end |
#shell! ⇒ Object
52 53 54 55 |
# File 'lib/standard.rb', line 52 def shell! cmd = @_data system(cmd) end |
#xtable ⇒ Object
Borrowed from bookish - FIXME
373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 |
# File 'lib/standard.rb', line 373 def xtable # Borrowed from bookish - FIXME title = @_data delim = " :: " _out "<br><center><table width=90% cellpadding=5>" lines = _body(true) maxw = nil lines.each do |line| line = _format(line) line.gsub!(/\n+/, "<br>") cells = line.split(delim) wide = cells.map {|x| x.length } maxw = [0] * cells.size maxw = maxw.map.with_index {|x, i| [x, wide[i]].max } end sum = maxw.inject(0, :+) maxw.map! {|x| (x/sum*100).floor } lines.each do |line| cells = line.split(delim) _out "<tr>" cells.each.with_index do |cell, i| _out " <td valign=top>#{cell}</td>" end _out "</tr>" end _out "</table></center>" end |