Sha256: d7ecbe6a50e40835cb7c82b145ff07ba1620a54fb4172de381f8945681de4b54

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

require 'sinatra/base'
require 'alephant/models/renderer'
require 'alephant/views/preview'
require 'faraday'
require 'json'
require 'uri'

module Alephant
  module Preview
    class Server < Sinatra::Base

      get '/preview/:id/:region/?:fixture?' do
        render_preview
      end

      get '/component/:id/?:fixture?' do
        render_component
      end

      def render_preview
        ::Alephant::Views::Preview.new(
          { region => render_component },
          preview_template_location
        ).render
      end

      def render_component
        Renderer.new(id, base_path).render(fixture_data)
      end

      private
      def region
        params['region']
      end

      def id
        params['id']
      end

      def fixture
        params['fixture'] || id
      end

      def fixture_data
        JSON.parse(File.open(fixture_location).read)
      end

      def base_path
        "#{Dir.pwd}/views"
      end

      def fixture_location
        "#{base_path}/fixtures/#{fixture}.json"
      end

      def preview_template_location
        "#{base_path}/templates/preview.mustache"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alephant-0.0.8.1-java lib/alephant/preview/server.rb
alephant-0.0.8-java lib/alephant/preview/server.rb