term-slides 0.18.0 → 0.19.0

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.
Files changed (4) hide show
  1. checksums.yaml +5 -5
  2. data/lib/term-slides.rb +26 -6
  3. data/lib/version.rb +1 -1
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6d1234ca33a415bca5dd9aba62741d7f2c4f9b70
4
- data.tar.gz: 11b0b665445477f48285ed678dda8f8647562246
2
+ SHA256:
3
+ metadata.gz: 9d362c970df8672173f69fae6cdc48ef8b80d2b21f8f5ea671e69799879d382a
4
+ data.tar.gz: 8e3140751d721f37b77dcab8ee80e84dd8d9c63c24d09ab9b91ff0e68ee01ffe
5
5
  SHA512:
6
- metadata.gz: 90c03ce724df9f639cbda8eeb4a33bebd5e10b1cc9f6043e16e051e6af78f269e254680b0dcf34daf736ee7847db8ee7cbd4283a32f3412ef34780a5c2d3316d
7
- data.tar.gz: 90448db815c28ab0a7970efb2386b7bf9f8fbf588208ac0f3b9b386d9f01da90f6a467f97cdec7b9da3a9ea00a53c5fa641f5b5e612de415f4522d1face66f06
6
+ metadata.gz: 707248d02a29b18c1f963ec5810543d93860411f123825f8cccf7a41705c46190e5c482ffec94d23e07b14847519e3b2e924f43976273b6b8abd7b6b5ce1aadf
7
+ data.tar.gz: 80d908633613e792e8d2d6fb4c181d103e20e6ff8dd08d46e9729b53dd8137557ba81d88bed1c4e1d67e6424e8f80c6d08661ed6521f1a017f89ce5a637ce525
@@ -20,14 +20,18 @@ module TermSlides
20
20
 
21
21
  class TTYRenderer
22
22
  def render_code code
23
- puts ::Rouge.highlight(code.content, code.format, 'terminal256')
23
+ puts center_block(code.content, ::Rouge.highlight(code.content, code.format, 'terminal256'))
24
24
  end
25
25
  def render_table table
26
26
  puts center(TTY::Table.new(table.headers, table.rows).render(:unicode))
27
27
  end
28
28
  def center text
29
+ center_block text, text
30
+ end
31
+ def center_block text, text_to_display
29
32
  width = HighLine.new.output_cols
30
- text.split("\n").map { |x| x.center(width) }.join("\n")
33
+ max = text.split("\n").map { |x| x.size }.max
34
+ text_to_display.split("\n").map { |x| " " * ((max > width ? 0 : (width - max))/2) + x }.join("\n")
31
35
  end
32
36
  def render_text text
33
37
  puts center(text.text)
@@ -137,10 +141,13 @@ module TermSlides
137
141
  end
138
142
  def build
139
143
  $i ||= 0
140
- path = Dir.tmpdir() + "/term_slide_graph#{$i}.png"
144
+ path = "term_slide_graph#{$i}.png"
141
145
  dot = 'dot'
142
146
  if find_executable dot
143
- `echo "#{@dot.gsub('"', '\\"')}" | #{dot} -Tpng > #{path}`
147
+ dot_contents = @dot.respond_to?(:call) ? @dot.call : @dot
148
+ input_path = "/tmp/graphviz-term-slides"
149
+ File.write(input_path, dot_contents)
150
+ `#{dot} #{input_path} -Tpng > #{path}`
144
151
  $i += 1
145
152
  end
146
153
  path
@@ -163,6 +170,9 @@ module TermSlides
163
170
 
164
171
  class Slide
165
172
  attr_accessor :name, :content, :renderer
173
+ def get_scaling_factor
174
+ @slides.scaling_factor
175
+ end
166
176
  def text s
167
177
  @content << Text.new(@renderer, s)
168
178
  end
@@ -179,7 +189,8 @@ module TermSlides
179
189
  def image src
180
190
  @content << Image.new(@renderer, src)
181
191
  end
182
- def initialize renderer, name, &block
192
+ def initialize renderer, name, slides, &block
193
+ @slides = slides
183
194
  @renderer = renderer
184
195
  @name = name
185
196
  @content = []
@@ -191,10 +202,12 @@ module TermSlides
191
202
  end
192
203
 
193
204
  class Slides
205
+ attr_accessor :scaling_factor
194
206
  def slide name, &block
195
- @slides << Slide.new(@renderer, name, &block)
207
+ @slides << Slide.new(@renderer, name, self, &block)
196
208
  end
197
209
  def initialize args, &block
210
+ @scaling_factor = 1
198
211
  @args = args
199
212
  if @args.size > 0 and @args[0] == "hovercraft"
200
213
  @renderer = HovercraftRenderer.new
@@ -232,19 +245,26 @@ module TermSlides
232
245
  end
233
246
  return
234
247
  end
248
+ print "\033[?25l"
235
249
  while true
236
250
  print `clear`
251
+
237
252
  puts "#{i + 1}/#{@slides.size}"
238
253
  @slides[i].render
239
254
  s = read_char
240
255
  if s == "q"
241
256
  break
257
+ elsif ["+"].include?(s)
258
+ @scaling_factor *= 1.1
259
+ elsif ["-"].include?(s)
260
+ @scaling_factor *= 0.9
242
261
  elsif ["p", "\e[D", "\e[A", "h", "k"].include?(s)
243
262
  i -= 1 if i > 0
244
263
  elsif ["n", "\e[C", "\e[B", "l", "j"].include?(s)
245
264
  i += 1 if i < (@slides.size - 1)
246
265
  end
247
266
  end
267
+ print "\033[?25h"
248
268
  end
249
269
  end
250
270
  end
@@ -1,5 +1,5 @@
1
1
  module Term
2
2
  module Slides
3
- VERSION = "0.18.0"
3
+ VERSION = "0.19.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: term-slides
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yazgoo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-17 00:00:00.000000000 Z
11
+ date: 2019-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  version: '0'
194
194
  requirements: []
195
195
  rubyforge_project:
196
- rubygems_version: 2.6.14
196
+ rubygems_version: 2.7.6.2
197
197
  signing_key:
198
198
  specification_version: 4
199
199
  summary: run presentations in your terminal