livetext 0.6.4 → 0.6.5
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 +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)
|