class Markedly::App
Public Class Methods
new(source, options = {})
click to toggle source
# File lib/markedly/app.rb, line 12 def initialize(source, options = {}) @document = Document.new(source, options) @options = options end
run!(source, options = {})
click to toggle source
# File lib/markedly/app.rb, line 8 def self.run!(source, options = {}) App.new(source, options).run! end
Public Instance Methods
run!()
click to toggle source
# File lib/markedly/app.rb, line 17 def run! @document.convert puts "Open '%s'" % @document.uri Launchy.open(@document.uri) EM.run do @channel = EM::Channel.new debug "Start WebSocket Server (ws://localhost:#{@document.port})" EM::WebSocket.start(host: '0.0.0.0', port: @document.port) do |ws| ws.onopen do subscriber = @channel.subscribe do |message| ws.send(message) end debug "client #{subscriber} connected" ws.onclose do @channel.unsubscribe(subscriber) debug "client #{subscriber} closed" end end end EM.defer do mtime = last_mtime = File.mtime(@document.source) loop do mtime = File.mtime(@document.source) if mtime > last_mtime puts "file modified" @document.convert @channel.push 'updated' end last_mtime = mtime sleep @options[:interval] end end end end
Private Instance Methods
debug(message)
click to toggle source
# File lib/markedly/app.rb, line 60 def debug(message) puts message if @options[:debug] end