Sha256: 2e873133797981f823052fe41910ef12b0f516de103203c9a9074aabad768d92
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 KB
Contents
module Devcenter::Previewer class WebApp < Sinatra::Base set :logging, false set connections: [] set :public_folder, File.dirname(__FILE__) set :views, File.join(File.dirname(__FILE__), 'views') helpers do include Devcenter::Helpers end get '/favicon.ico' do end get '/stream', provides: 'text/event-stream' do stream :keep_open do |conn| settings.connections << conn conn.callback { settings.connections.delete(conn) } # connection closed properly conn.errback do # connection closed due to an error conn.close settings.connections.delete(conn) end end end get '/:slug' do src_path = File.join(Dir.pwd, "#{params[:slug]}.md") @article = parse_article(src_path) erb :article end def parse_article(src_path) article = OpenStruct.new src = IO.read(src_path) metadata_yaml, article.content = src.split(/\r*\n\r*\n/, 2) article.metadata = OpenStruct.new YAML.load(metadata_yaml) begin article.html = ::Devcenter::MdParser.to_html(article.content) rescue Exception => e article.error = e.to_s end article end def self.send_server_event settings.connections.each do |conn| conn << "data: reload\n\n" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
devcenter-0.0.2 | lib/devcenter/previewer/web_app.rb |
devcenter-0.0.1 | lib/devcenter/previewer/web_app.rb |