livetext 0.6.4 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dsl/bookish.rb +0 -1
- data/lib/livetext.rb +52 -58
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f706dc4d367cb931a999a1ba4918fbb46981a57
|
4
|
+
data.tar.gz: 5c0d148218f148c2f8e99877b8d331e3385bbfef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0e6c42f2b8a91c4d2fce8e03e0bba6f1ad60afd82edb0323566b45b48088b11b381655213c2ff969e8b6f2c73e2d16951d0429f410aee712e6bd09a016ce415
|
7
|
+
data.tar.gz: 6d9e96b0d091dfbc94bcdea217305aff01bc230c43c44f0b2e1cbd509b00b83a130dd97d7f36b30907af0be2b871a441260c1060a8b475e43f68e8e30126550c
|
data/dsl/bookish.rb
CHANGED
data/lib/livetext.rb
CHANGED
@@ -15,7 +15,7 @@ class Enumerator
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class Livetext
|
18
|
-
VERSION = "0.6.
|
18
|
+
VERSION = "0.6.5"
|
19
19
|
|
20
20
|
Space = " "
|
21
21
|
|
@@ -42,13 +42,9 @@ class Livetext
|
|
42
42
|
scomment = rx(sigil, Livetext::Space) # apply these in order
|
43
43
|
sname = rx(sigil)
|
44
44
|
case
|
45
|
-
when line =~ scomment
|
46
|
-
|
47
|
-
|
48
|
-
handle_sname(sigil, line)
|
49
|
-
else
|
50
|
-
obj = @main # Livetext::Objects[sigil]
|
51
|
-
obj._passthru(line)
|
45
|
+
when line =~ scomment; handle_scomment(sigil, line)
|
46
|
+
when line =~ sname; handle_sname(sigil, line)
|
47
|
+
else @main._passthru(line)
|
52
48
|
end
|
53
49
|
end
|
54
50
|
|
@@ -60,7 +56,7 @@ class Livetext
|
|
60
56
|
end
|
61
57
|
source = file.each_line
|
62
58
|
@main = Livetext::System.new(source)
|
63
|
-
|
59
|
+
# @main._switch_file(fname)
|
64
60
|
@main.file = fname
|
65
61
|
@main.lnum = 0
|
66
62
|
|
@@ -87,34 +83,32 @@ class Livetext
|
|
87
83
|
Livetext::Disallowed.include?(name.to_sym)
|
88
84
|
end
|
89
85
|
|
90
|
-
def self._get_name(
|
86
|
+
def self._get_name(sigil, line)
|
91
87
|
blank = line.index(" ") || line.index("\n")
|
92
88
|
name = line[1..(blank-1)]
|
93
|
-
abort "#{
|
94
|
-
|
89
|
+
abort "#{@main.where}: Name '#{name}' is not permitted" if _disallowed?(name)
|
90
|
+
@main._data = line[(blank+1)..-1]
|
95
91
|
name = "_def" if name == "def"
|
96
92
|
name = "_include" if name == "include"
|
97
|
-
abort "#{
|
93
|
+
abort "#{@main.where}: mismatched 'end'" if name == "end"
|
98
94
|
name
|
99
95
|
end
|
100
96
|
|
101
97
|
def self.handle_sname(sigil, line)
|
102
|
-
|
103
|
-
|
104
|
-
#
|
105
|
-
|
106
|
-
# return
|
107
|
-
# end
|
108
|
-
|
109
|
-
if name == "notes" # FIXME wtf
|
110
|
-
obj.notes
|
111
|
-
else
|
112
|
-
obj.send(name)
|
98
|
+
name = _get_name(sigil, line)
|
99
|
+
unless @main.respond_to?(name)
|
100
|
+
raise "'#{name}' is unknown"
|
101
|
+
return
|
113
102
|
end
|
103
|
+
|
104
|
+
@main.send(name)
|
105
|
+
|
114
106
|
rescue => err
|
115
|
-
STDERR.puts "ERROR on #{
|
116
|
-
|
107
|
+
STDERR.puts "ERROR on #{@main.file} line #{@main.lnum} : #{err}"
|
108
|
+
# STDERR.puts " self = #{self.inspect} @main = #{@main.inspect}"
|
109
|
+
STDERR.puts " sources = #{@main.source_files.inspect}"
|
117
110
|
STDERR.puts err.backtrace
|
111
|
+
STDERR.puts "--- Methods = #{(@main.methods - Object.methods).sort}\n "
|
118
112
|
end
|
119
113
|
|
120
114
|
end
|
@@ -463,10 +457,12 @@ module Livetext::Standard
|
|
463
457
|
_optional_blank_line
|
464
458
|
end
|
465
459
|
|
466
|
-
def
|
460
|
+
def _switch_file(fname)
|
461
|
+
::STDERR.puts " switching to #{fname}, pushing #@file"
|
467
462
|
@source_files ||= []
|
468
463
|
@source_files.push(@file)
|
469
464
|
@file = fname
|
465
|
+
::STDERR.puts " sources = #{@source_files.inspect}"
|
470
466
|
@file
|
471
467
|
end
|
472
468
|
|
@@ -477,7 +473,7 @@ module Livetext::Standard
|
|
477
473
|
def _include
|
478
474
|
file = _args.first
|
479
475
|
lines = ::File.readlines(file)
|
480
|
-
|
476
|
+
_switch_file(file)
|
481
477
|
# STDERR.puts "_include: ****** Set @file = #@file"
|
482
478
|
lines.each {|line| _debug " inc: #{line}" }
|
483
479
|
rem = @input.remaining
|
@@ -489,7 +485,7 @@ module Livetext::Standard
|
|
489
485
|
|
490
486
|
def include!
|
491
487
|
file = _args.first
|
492
|
-
|
488
|
+
_switch_file(file)
|
493
489
|
existing = File.exist?(file)
|
494
490
|
return if not existing
|
495
491
|
lines = ::File.readlines(file)
|
@@ -510,14 +506,12 @@ module Livetext::Standard
|
|
510
506
|
_check_existence(file)
|
511
507
|
|
512
508
|
@_mixins << file
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
newmod.
|
518
|
-
|
519
|
-
Object.const_set(name.capitalize, newmod)
|
520
|
-
newmod.instance_eval(File.read(file))
|
509
|
+
_switch_file(file)
|
510
|
+
modname = name.capitalize
|
511
|
+
string = "module ::#{modname}\n" + File.read(file) + "\nend"
|
512
|
+
eval(string)
|
513
|
+
newmod = Object.const_get("::" + modname)
|
514
|
+
Livetext.main.extend(newmod) # CRAP
|
521
515
|
init = "init_#{name}"
|
522
516
|
self.send(init) if self.respond_to? init
|
523
517
|
_optional_blank_line
|
@@ -532,7 +526,7 @@ module Livetext::Standard
|
|
532
526
|
raise "No such file: #{name}.rb found" unless File.exist?(file)
|
533
527
|
|
534
528
|
@_mixins << file
|
535
|
-
|
529
|
+
_switch_file(file)
|
536
530
|
main = Livetext.main
|
537
531
|
m0 = main.methods.reject {|x| x.to_s[0] == "_" }
|
538
532
|
self.class.class_eval(::File.read(file))
|
@@ -546,7 +540,7 @@ module Livetext::Standard
|
|
546
540
|
|
547
541
|
def copy
|
548
542
|
file = _args.first
|
549
|
-
|
543
|
+
_switch_file(file)
|
550
544
|
text = ::File.readlines(file)
|
551
545
|
@output.puts text
|
552
546
|
_optional_blank_line
|
@@ -590,9 +584,7 @@ module Livetext::Standard
|
|
590
584
|
delim = "~~"
|
591
585
|
_puts "<table>"
|
592
586
|
_body do |line|
|
593
|
-
# TTY.puts "Line = #{line}"
|
594
587
|
line = _formatting(line)
|
595
|
-
# TTY.puts "Line = #{line}\n "
|
596
588
|
term, defn = line.split(delim)
|
597
589
|
_puts "<tr>"
|
598
590
|
_puts "<td width=3%><td width=10%>#{term}</td><td>#{defn}</td>"
|
@@ -608,18 +600,19 @@ class Livetext
|
|
608
600
|
end
|
609
601
|
|
610
602
|
|
611
|
-
class Livetext::System < BasicObject
|
603
|
+
class Livetext::System # < BasicObject
|
612
604
|
include ::Kernel
|
613
605
|
include ::Livetext::Helpers
|
614
606
|
include ::Livetext::Standard
|
615
607
|
|
616
|
-
attr_accessor :file, :lnum
|
608
|
+
attr_accessor :file, :lnum, :source_files
|
617
609
|
|
618
610
|
def initialize(input = ::STDIN, output = ::STDOUT)
|
619
611
|
@input = input
|
620
612
|
@output = output
|
621
613
|
@vars = {}
|
622
614
|
@_mixins = []
|
615
|
+
@source_files = []
|
623
616
|
@_outdir = "."
|
624
617
|
@_file_num = 0
|
625
618
|
@_nopass = false
|
@@ -632,22 +625,23 @@ class Livetext::System < BasicObject
|
|
632
625
|
"Line #@lnum of #@file"
|
633
626
|
end
|
634
627
|
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
628
|
+
# def method_missing(name, *args)
|
629
|
+
# ::TTY.puts "MM: #{name}"
|
630
|
+
# name = "_def" if name.to_s == "def"
|
631
|
+
# name = "_include" if name.to_s == "include"
|
632
|
+
# @main.send(name, *args)
|
633
|
+
# # $mods.reverse.each do |mod|
|
634
|
+
# # if mod.respond_to?(name)
|
635
|
+
# # mod.send(name, *args)
|
636
|
+
# # return
|
637
|
+
# # end
|
638
|
+
# # end
|
639
|
+
# _puts " Error: Method '#{name}' is not defined (from method_missing)"
|
640
|
+
# puts caller.map {|x| " " + x }
|
641
|
+
# exit
|
642
|
+
# end
|
649
643
|
|
650
|
-
|
644
|
+
end
|
651
645
|
|
652
646
|
if $0 == __FILE__
|
653
647
|
Livetext.handle_file(ARGV[0] || STDIN)
|