term-slides 0.18.0 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
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