Module: Streamd
- Defined in:
- lib/streamd.rb,
lib/streamd/version.rb,
lib/streamd/renderer.rb
Defined Under Namespace
Classes: FixedStyle, Renderer
Constant Summary collapse
- VERSION =
"0.1.3"
Class Method Summary collapse
Class Method Details
.print(stream) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/streamd.rb', line 6 def self.print(stream) whole = "" live = TTY::Live.new renderer = Renderer.create enum = Enumerator.new do |e| in_code_block = false stream.each do |chunk| curr = "" chunk.each_char do |char| whole << char if whole =~ /\n[\s\t]*`{3}\w*\n\z/ in_code_block = whole.scan(/\n[\s\t]*`{3}\w*\n/).size.odd? curr << char if in_code_block code_sign = curr.index(/[\s\t]*`{3}\w*\n\z/) e << [curr[0...code_sign], true] curr = curr[code_sign..-1] else e << [curr, true] curr = "" end next end if whole =~ /\n[\n\s\t]*\n[^\n]\z/ && !in_code_block e << [curr, true] curr = char next end curr << char end e << [curr, false] end end # name = 0 current = "" enum.each do |chunk, neo| current << chunk next if current.strip.empty? styled = if current =~ /^\|/ renderer.render(current) else Glamour.render(current, style: 'dracula', width: 180, preserve_newlines: true) end styled = case when current =~ /\A[\s\t]*`{3}/ " " + styled.gsub(/\A[\s\n]*(\e\[[0-9;]*m[\s\n]*\e\[0m[\s\n]*)+/m, '').gsub(/(\e\[[0-9;]*m[\s\n]*\e\[0m[\s\n]*)+[\s\n]*\Z/m, '').strip when current =~ /\A\*\*\*/ || current =~ /\A---/ || current =~ /\A___/ styled.gsub(/\e\[[0-9;]*m[\s\n]*\e\[0m/m, '').strip when current =~ /^\|/ styled.each_line.map{|l| " #{l}"}.join else " " + styled.gsub(/\e\[[0-9;]*m[\s\n]*\e\[0m/m, '').strip end # File.open("/tmp/streamd.current.#{name}.txt", 'w'){|f| f.puts current} live.update(styled) if neo # name += 1 puts "\n\n" live = TTY::Live.new current.clear end end puts "\n\n" whole end |