class GfmLivePreview::Server

Public Instance Methods

render_document(ws, relative_path) click to toggle source
# File lib/gfm_live_preview/server.rb, line 17
def render_document(ws, relative_path)
  document = GfmLivePreview.read_file relative_path
  syntax_highlight! document
  doc = GitHub::Markdown.render_gfm document
  EM.next_tick { ws.send doc }
end
setup_websockets(request, relative_path = nil) click to toggle source
# File lib/gfm_live_preview/server.rb, line 24
def setup_websockets(request, relative_path = nil)
  request.websocket do |ws|
    ws.onopen do
      render_document ws, relative_path
      listener = Listen.to GfmLivePreview.root do 
        render_document ws, relative_path
      end
      listener.start
      settings.sockets << ws
    end
    ws.onclose do
      settings.sockets.delete ws
    end
  end
end
syntax_highlight!(str) click to toggle source
# File lib/gfm_live_preview/server.rb, line 8
def syntax_highlight! str
  SyntaxHighlighter.highlight! str do |string, hexcolor|
    "<span style=\"color:##{hexcolor}\">#{string}</span>"
  end
rescue => e
  puts "Exception during syntax highlighting: #{e}"
  e.backtrace.each do |line| puts line; end
end