Sha256: 8ad9bf568a7dd15b0011e4a5f7079d2aa4899ca80368a32635623d7c0fe86ca1

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

VITREOUS_FOLDER = ENV['VITREOUS_FOLDER']
Mustache.template_path = "#{VITREOUS_FOLDER}/template"
Mustache.template_extension = 'html'

module Vitreous
  module Share
    class LocalStructure
      def self.base_uri
        "/local/file"
      end
    end
  end
end

module Vitreous
  module Standalone
    class App < Sinatra::Base  
      # assets
      get "/assets/*" do |asset|
        send_file "#{VITREOUS_FOLDER}/template/assets/#{asset}"
      end
  
      # file
      get "#{Vitreous::Share::LocalStructure.base_uri}/*" do |file|
        send_file "#{VITREOUS_FOLDER}/website/#{file}"
      end
  
      # element
      get '/*' do |resource|
        structure = Vitreous::Share::LocalStructure.new( "/#{VITREOUS_FOLDER}/website" )
        indexer   = Vitreous::Share::Indexer.new( structure.generate )
        index     = Vitreous::Share::Element.new( indexer.generate[0] )
        element   = Vitreous::Share::IndexSearcher.search( index, "/#{resource}" )
    
        raise Sinatra::NotFound  if element.nil?
  
        Mustache.render(
          File.read( "#{VITREOUS_FOLDER}/template/layout.html" ),
          { 
            :domain       => 'mydomain.com', 
            :index        => index, 
            :element      => element,
            :assets_path  => "/assets"
          }
        )
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vitreous_standalone-0.0.5 lib/vitreous/standalone/app.rb