livetext 0.9.37 → 0.9.38
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/lib/livetext/standard.rb +6 -5
- data/lib/livetext/version.rb +1 -1
- data/plugin/{bookish.rb → booktool.rb} +30 -3
- data/plugin/{pyggish.rb → codetool.rb} +27 -32
- metadata +4 -5
- data/plugin/calibre.rb +0 -26
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dd459c3fa75665b383b8056baa8af5ee9bae77a3abcaeba153b11c422b2f0418
|
|
4
|
+
data.tar.gz: 6f3674f4f5f5408e1b7fbffe45631ebbc0c43abbc624f1ba6ade1232e33d10f3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 49baee92ae2d7a5ef1337ef98258e416014c954a07d5574f697def625c41e06f7cdaa297ca6cc9a88f3cb3dc4f7c58b589aab889f9bb30d67ba4bf583a52c4f7
|
|
7
|
+
data.tar.gz: 6bff41c9c3128a5de6a58f1e81985e35ec3563acbdc133f24427e21c86aca2b475ac0dc1da7967b6e10f92203beab44750ae2ae47bb36a164dfddc62b506c5b9
|
data/lib/livetext/standard.rb
CHANGED
|
@@ -94,7 +94,7 @@ module Livetext::Standard
|
|
|
94
94
|
loop do
|
|
95
95
|
line = lines.next
|
|
96
96
|
line = api.format(line)
|
|
97
|
-
str = line[0] == " " ? line :
|
|
97
|
+
str = line[0] == " " ? line : html.tag(:li, line)
|
|
98
98
|
api.out str
|
|
99
99
|
end
|
|
100
100
|
end
|
|
@@ -120,7 +120,7 @@ module Livetext::Standard
|
|
|
120
120
|
def say(args = nil, body = nil)
|
|
121
121
|
data = args || api.args.join(" ")
|
|
122
122
|
str = api.format(data)
|
|
123
|
-
TTY.puts
|
|
123
|
+
TTY.puts str
|
|
124
124
|
api.optional_blank_line
|
|
125
125
|
end
|
|
126
126
|
|
|
@@ -128,7 +128,8 @@ module Livetext::Standard
|
|
|
128
128
|
str = api.format(api.data)
|
|
129
129
|
num = str.length
|
|
130
130
|
decor = "-"*num + "\n"
|
|
131
|
-
|
|
131
|
+
api.tty decor + str + "\n" + decor
|
|
132
|
+
api.optional_blank_line
|
|
132
133
|
end
|
|
133
134
|
|
|
134
135
|
def quit(args = nil, body = nil)
|
|
@@ -334,8 +335,8 @@ module Livetext::Standard
|
|
|
334
335
|
api.body do |line|
|
|
335
336
|
line = api.format(line)
|
|
336
337
|
term, defn = line.split(delim)
|
|
337
|
-
api.out
|
|
338
|
-
api.out
|
|
338
|
+
api.out html.tag(:dt, term)
|
|
339
|
+
api.out html.tag(:dd, defn)
|
|
339
340
|
end
|
|
340
341
|
end
|
|
341
342
|
api.optional_blank_line
|
data/lib/livetext/version.rb
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
def epub(args = nil, body = nil)
|
|
4
|
+
api.tty "======== Entering epub"
|
|
5
|
+
out = api.format(api.args[0])
|
|
6
|
+
src = api.args[1]
|
|
7
|
+
api.tty "======== epub: src = #{src}"
|
|
8
|
+
@cover = api.args[2]
|
|
9
|
+
if ::File.directory?(src)
|
|
10
|
+
files = ::Dir["#{src}/*"].grep /\.html$/
|
|
11
|
+
files = files.sort # why is this necessary now?
|
|
12
|
+
cmd = "cat #{files.join(' ')} >TEMP.html"
|
|
13
|
+
system(cmd)
|
|
14
|
+
else
|
|
15
|
+
raise "Not supported yet"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
cmd = "ebook-convert "
|
|
19
|
+
cmd << "TEMP.html #{out}.epub "
|
|
20
|
+
cmd << "--cover #@cover " if @cover
|
|
21
|
+
system(cmd)
|
|
22
|
+
|
|
23
|
+
system("links -dump TEMP.html >/tmp/links.out")
|
|
24
|
+
str = `wc -w /tmp/links.out`
|
|
25
|
+
nw = str.split[0]
|
|
26
|
+
puts "Approx words: #{nw}"
|
|
27
|
+
# ::FileUtils.rm("TEMP.html")
|
|
28
|
+
end
|
|
29
|
+
|
|
1
30
|
def hardbreaks(args = nil, body = nil)
|
|
2
31
|
@hard = false
|
|
3
32
|
@hard = true unless api.args.first == "off"
|
|
@@ -296,7 +325,7 @@ rescue => err
|
|
|
296
325
|
exit
|
|
297
326
|
end
|
|
298
327
|
|
|
299
|
-
def
|
|
328
|
+
def init_booktool
|
|
300
329
|
@_file_num = 0
|
|
301
330
|
@toc_file = "toc.tmp"
|
|
302
331
|
@toc = ::File.new(@toc_file, "w")
|
|
@@ -347,10 +376,8 @@ def _prep_next_output(args)
|
|
|
347
376
|
*title = args # _next_output(tag, num)
|
|
348
377
|
title = title.join(" ")
|
|
349
378
|
slug = _slug(title)
|
|
350
|
-
api.tty "title = #{title.inspect}"
|
|
351
379
|
@_file_num += 1
|
|
352
380
|
fname = "#{'%03d' % @_file_num}-#{slug}.html"
|
|
353
|
-
api.tty "slug, fnum, fname= #{[slug, @_file_num, fname].inspect}"
|
|
354
381
|
fname
|
|
355
382
|
end
|
|
356
383
|
|
|
@@ -86,7 +86,7 @@ def self.pyg_finalize(code, lexer=:elixir)
|
|
|
86
86
|
lang = api.args.empty? ? :elixir : api.args.first.to_sym # ruby or elixir
|
|
87
87
|
api.args = []
|
|
88
88
|
lines = api.body(true) # .to_a # raw
|
|
89
|
-
result = send(lang, lines)
|
|
89
|
+
result = send("format_#{lang}", lines)
|
|
90
90
|
api.out result
|
|
91
91
|
api.out "\n"
|
|
92
92
|
api.optional_blank_line
|
|
@@ -94,14 +94,6 @@ def self.pyg_finalize(code, lexer=:elixir)
|
|
|
94
94
|
STDERR.puts "fragment Error: #{__method__} err = #{err}\n#{err.backtrace.join("\n")}"
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
def dammit(args = nil, body = nil)
|
|
98
|
-
lines = api.body(true)
|
|
99
|
-
api.out "BODY:"
|
|
100
|
-
lines.each {|x| api.out x }
|
|
101
|
-
api.out "END BODY"
|
|
102
|
-
api.optional_blank_line
|
|
103
|
-
end
|
|
104
|
-
|
|
105
97
|
def code # FIXME ?
|
|
106
98
|
text = ""
|
|
107
99
|
api.body {|line| api.out " " + line }
|
|
@@ -138,26 +130,7 @@ end
|
|
|
138
130
|
File.write("#{dir}/elixir.css", css)
|
|
139
131
|
end
|
|
140
132
|
|
|
141
|
-
|
|
142
|
-
def format_ruby(source, theme = "Github", back = "black")
|
|
143
|
-
# theme/back not used now
|
|
144
|
-
formatter = Rouge::Formatters::HTML.new
|
|
145
|
-
lexer = Rouge::Lexers::Ruby.new
|
|
146
|
-
body = formatter.format(lexer.lex(source))
|
|
147
|
-
text = "<div class=rb_highlight>#{body}</div>"
|
|
148
|
-
text
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def format_elixir(source, theme = "Github", back = "black")
|
|
152
|
-
# theme/back not used now
|
|
153
|
-
formatter = Rouge::Formatters::HTML.new
|
|
154
|
-
lexer = Rouge::Lexers::Elixir.new
|
|
155
|
-
body = formatter.format(lexer.lex(source))
|
|
156
|
-
text = "<div class=ex_highlight>#{body}</div>"
|
|
157
|
-
text
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def xruby
|
|
133
|
+
def ruby(args = nil, body = nil)
|
|
161
134
|
file = api.args.first
|
|
162
135
|
code = nil
|
|
163
136
|
if file.nil?
|
|
@@ -171,7 +144,7 @@ end
|
|
|
171
144
|
api.out html
|
|
172
145
|
end
|
|
173
146
|
|
|
174
|
-
def
|
|
147
|
+
def elixir(args = nil, body = nil)
|
|
175
148
|
file = api.args.first
|
|
176
149
|
code = nil
|
|
177
150
|
if file.nil?
|
|
@@ -184,7 +157,29 @@ end
|
|
|
184
157
|
api.out html
|
|
185
158
|
end
|
|
186
159
|
|
|
187
|
-
def
|
|
160
|
+
def format_ruby(lines, theme = "Github", back = "black")
|
|
161
|
+
# theme/back not used now
|
|
162
|
+
source = lines
|
|
163
|
+
source = source.join("\n") if source.is_a?(Array)
|
|
164
|
+
formatter = Rouge::Formatters::HTML.new
|
|
165
|
+
lexer = Rouge::Lexers::Ruby.new
|
|
166
|
+
body = formatter.format(lexer.lex(source))
|
|
167
|
+
text = "<div class=rb_highlight>#{body}</div>"
|
|
168
|
+
text
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def format_elixir(lines, theme = "Github", back = "black")
|
|
172
|
+
# theme/back not used now
|
|
173
|
+
source = lines
|
|
174
|
+
source = source.join("\n") if source.is_a?(Array)
|
|
175
|
+
formatter = Rouge::Formatters::HTML.new
|
|
176
|
+
lexer = Rouge::Lexers::Elixir.new
|
|
177
|
+
body = formatter.format(lexer.lex(source))
|
|
178
|
+
text = "<div class=ex_highlight>#{body}</div>"
|
|
179
|
+
text
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def __ruby(lines)
|
|
188
183
|
theme = :Github # default
|
|
189
184
|
source = lines.join("\n")
|
|
190
185
|
formatter = Rouge::Formatters::HTML.new
|
|
@@ -214,7 +209,7 @@ rescue => err
|
|
|
214
209
|
end
|
|
215
210
|
|
|
216
211
|
|
|
217
|
-
def
|
|
212
|
+
def __elixir(lines)
|
|
218
213
|
theme = :Github # default
|
|
219
214
|
source = lines.join("\n")
|
|
220
215
|
formatter = Rouge::Formatters::HTML.new
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: livetext
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.38
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hal Fulton
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-03-
|
|
11
|
+
date: 2023-03-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: A smart text processor extensible in Ruby
|
|
14
14
|
email: rubyhacker@gmail.com
|
|
@@ -52,13 +52,12 @@ files:
|
|
|
52
52
|
- lib/livetext/userapi.rb
|
|
53
53
|
- lib/livetext/version.rb
|
|
54
54
|
- livetext.gemspec
|
|
55
|
-
- plugin/
|
|
55
|
+
- plugin/booktool.rb
|
|
56
56
|
- plugin/bootstrap_menu.rb
|
|
57
|
-
- plugin/
|
|
57
|
+
- plugin/codetool.rb
|
|
58
58
|
- plugin/livemagick.rb
|
|
59
59
|
- plugin/markdown.rb
|
|
60
60
|
- plugin/misc/navbar.rb
|
|
61
|
-
- plugin/pyggish.rb
|
|
62
61
|
- plugin/tutorial.rb
|
|
63
62
|
- test/all.rb
|
|
64
63
|
- test/extra/README.txt
|
data/plugin/calibre.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
|
|
3
|
-
def epub!(args = nil, body = nil)
|
|
4
|
-
out = api.format(api.args[0])
|
|
5
|
-
src = api.args[1]
|
|
6
|
-
@cover = api.args[2]
|
|
7
|
-
if ::File.directory?(src)
|
|
8
|
-
files = ::Dir["#{src}/*"].grep /\.html$/
|
|
9
|
-
files = files.sort # why is this necessary now?
|
|
10
|
-
cmd = "cat #{files.join(' ')} >TEMP.html"
|
|
11
|
-
system(cmd)
|
|
12
|
-
else
|
|
13
|
-
raise "Not supported yet"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
cmd = "ebook-convert "
|
|
17
|
-
cmd << "TEMP.html #{out}.epub "
|
|
18
|
-
cmd << "--cover #@cover " if @cover
|
|
19
|
-
system(cmd)
|
|
20
|
-
|
|
21
|
-
system("links -dump TEMP.html >/tmp/links.out")
|
|
22
|
-
str = `wc -w /tmp/links.out`
|
|
23
|
-
nw = str.split[0]
|
|
24
|
-
puts "Approx words: #{nw}"
|
|
25
|
-
# ::FileUtils.rm("TEMP.html")
|
|
26
|
-
end
|