flatrack 0.0.1.dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 069be5f2f4982c44837bc6529a43e087c9abeee2
4
+ data.tar.gz: e50462d7742e4c32eba46b4dc0e4ed7067db24c3
5
+ SHA512:
6
+ metadata.gz: 87476f39909af938c08d85c1021ea22593566edd9e4c160d90c602feabb06f8f03fd1f37459fb47b251e4934212fc3003cdfc01c9ed0baf3512057bfc8be4dcc
7
+ data.tar.gz: 2fa43b09d45be828162c4fb3552767cb0f86d306b815d95ad21a038881879ad2acce95d0b571b15e15feb5e1abf541494a36c9dd5f9b9832ca8e7a21862979c7
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in flatrack-rack.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,61 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ flatrack (0.0.1)
5
+ activesupport
6
+ coffee-script
7
+ rack
8
+ rake
9
+ sass
10
+ sprockets
11
+ thor
12
+
13
+ GEM
14
+ remote: https://rubygems.org/
15
+ specs:
16
+ activesupport (4.0.2)
17
+ i18n (~> 0.6, >= 0.6.4)
18
+ minitest (~> 4.2)
19
+ multi_json (~> 1.3)
20
+ thread_safe (~> 0.1)
21
+ tzinfo (~> 0.3.37)
22
+ atomic (1.1.14)
23
+ coffee-script (2.2.0)
24
+ coffee-script-source
25
+ execjs
26
+ coffee-script-source (1.6.3)
27
+ diff-lcs (1.2.5)
28
+ execjs (2.0.2)
29
+ hike (1.2.3)
30
+ i18n (0.6.9)
31
+ minitest (4.7.5)
32
+ multi_json (1.8.2)
33
+ rack (1.5.2)
34
+ rake (10.1.0)
35
+ rspec (2.14.1)
36
+ rspec-core (~> 2.14.0)
37
+ rspec-expectations (~> 2.14.0)
38
+ rspec-mocks (~> 2.14.0)
39
+ rspec-core (2.14.7)
40
+ rspec-expectations (2.14.4)
41
+ diff-lcs (>= 1.1.3, < 2.0)
42
+ rspec-mocks (2.14.4)
43
+ sass (3.2.12)
44
+ sprockets (2.10.1)
45
+ hike (~> 1.2)
46
+ multi_json (~> 1.0)
47
+ rack (~> 1.0)
48
+ tilt (~> 1.1, != 1.3.0)
49
+ thor (0.18.1)
50
+ thread_safe (0.1.3)
51
+ atomic
52
+ tilt (1.4.1)
53
+ tzinfo (0.3.38)
54
+
55
+ PLATFORMS
56
+ ruby
57
+
58
+ DEPENDENCIES
59
+ bundler (~> 1.5)
60
+ flatrack!
61
+ rspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Jason Waldrip
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Flat::Rack
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'flat-rack'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install flat-rack
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( http://github.com/<my-github-username>/flat-rack/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/flatrack ADDED
File without changes
data/flatrack.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'flatrack/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "flatrack"
8
+ spec.version = FlatRack::VERSION
9
+ spec.authors = ["Jason Waldrip"]
10
+ spec.email = ["jason@waldrip.net"]
11
+ spec.summary = 'A template based flat rack site'
12
+ spec.homepage = "https://github.com/jwaldrip/flatrack"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.files = Dir.glob File.join __dir__, '**', '*'
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'rack'
22
+ spec.add_dependency 'activesupport'
23
+ spec.add_dependency 'sass'
24
+ spec.add_dependency 'sprockets'
25
+ spec.add_dependency 'thor'
26
+ spec.add_dependency 'coffee-script'
27
+ spec.add_dependency 'rake'
28
+
29
+ spec.add_development_dependency 'bundler', '~> 1.5'
30
+ spec.add_development_dependency 'rspec'
31
+ end
@@ -0,0 +1,12 @@
1
+ module FlatRack
2
+ App = Rack::Builder.app do
3
+ map '/assets' do
4
+ run FlatRack.assets
5
+ end
6
+
7
+ map '/' do
8
+ use Rack::Static, urls: ["/favicon.ico", "assets"], root: "public"
9
+ run ->(env){ Request.new(env).response }
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ module FlatRack
2
+ module AssetExtensions
3
+
4
+ def asset_path(path, options={})
5
+ File.join('assets', path.to_s)
6
+ end
7
+
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+ require 'flatrack'
3
+ require 'rake/asset_tasks'
4
+
5
+ Rake::AssetTasks.new do |t|
6
+ t.environment = FlatRack.assets
7
+ t.output = "./public/assets"
8
+ t.assets = %w( application.js application.css )
9
+ end
@@ -0,0 +1,21 @@
1
+ module FlatRack
2
+ module Renderer
3
+ class Base
4
+
5
+ attr_reader :contents
6
+
7
+ def self.renders(ext = nil)
8
+ @renders = ext.to_sym
9
+ end
10
+
11
+ def self.renders?(ext)
12
+ @renders == ext.to_sym
13
+ end
14
+
15
+ def initialize(file)
16
+ @contents = File.read file
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ module FlatRack
2
+ module Renderer
3
+ extend self
4
+ extend ActiveSupport::Autoload
5
+
6
+ autoload :Base
7
+
8
+ def find(file)
9
+ template = (Dir[File.join 'pages', "#{file}*"] + Dir[File.join 'layouts', "#{file}*"]).first
10
+ raise FileNotFound, "could not find #{file}" unless template
11
+ ext = File.extname(template).sub(/\./, '')
12
+
13
+ Base.descendants.find { |descendant| descendant.renders?(ext) } ||
14
+ raise(RendererNotFound, "could not find a renderer for #{file}")
15
+
16
+ klass = const_get(name.split('_').map(&:capitalize).join, false)
17
+ klass.new template
18
+ rescue NameError, TypeError
19
+ raise RendererNotFound, "could not find a renderer for #{file}"
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,49 @@
1
+ module FlatRack
2
+ class Request
3
+
4
+ DEFAULT_FORMAT = 'html'
5
+
6
+ attr_reader :env, :rack_request
7
+
8
+ def initialize(env)
9
+ @rack_request = Rack::Request.new(env)
10
+ @env = env
11
+ end
12
+
13
+ def path
14
+ env['REQUEST_PATH']
15
+ end
16
+
17
+ def headers
18
+ env.reduce({}) do |hash, (key, value)|
19
+ next hash unless /^HTTP_(?<name>.+)/ =~ key
20
+ hash.merge name.downcase.to_sym => value
21
+ end
22
+ end
23
+
24
+ def params
25
+ rack_request.params.with_indifferent_access
26
+ end
27
+
28
+ def format
29
+ (ext = File.extname path).empty? ? DEFAULT_FORMAT : ext.sub(/\./, '')
30
+ end
31
+
32
+ def response
33
+ Response.new(self).render
34
+ rescue RendererNotFound
35
+ respond_with_error(500)
36
+ rescue FileNotFound
37
+ respond_with_error(404)
38
+ end
39
+
40
+ private
41
+
42
+ def respond_with_error(code)
43
+ Response.new(self).render(file: "#{code}.html", status: code)
44
+ rescue FileNotFound
45
+ Response.new(self).render(text: code, status: code)
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,75 @@
1
+ module FlatRack
2
+ class Response
3
+ class ViewContext
4
+
5
+ def initialize(response)
6
+ @response = response
7
+ end
8
+
9
+ def get_binding
10
+ binding
11
+ end
12
+
13
+ def path
14
+ @response.request.path
15
+ end
16
+
17
+ def params
18
+ @response.request.params
19
+ end
20
+
21
+ def files
22
+ Dir.glob(File.join 'pages', path, '*').map do |file|
23
+ File.basename File.basename(file, '.*'), '.*'
24
+ end - [DEFAULT_FILE]
25
+ end
26
+
27
+ def image_tag(uri, options = {})
28
+ uri = File.join('/assets', uri.to_s) + '.js' if uri.is_a? Symbol
29
+ html_tag(:img, { src: uri }.merge(options))
30
+ end
31
+
32
+ def javascript_tag(uri)
33
+ uri = File.join('/assets', uri.to_s) + '.js' if uri.is_a? Symbol
34
+ html_tag(:script, src: uri){ nil }
35
+ end
36
+
37
+ def stylesheet_tag(uri)
38
+ uri = File.join('/assets', uri.to_s) + '.css' if uri.is_a? Symbol
39
+ html_tag(:link, rel: 'stylesheet', type: 'text/css', href: uri)
40
+ end
41
+
42
+ def page_stylesheet_tag
43
+ file = @response.send(:file_for, path.to_s)
44
+ base_path = File.join File.dirname(file), File.basename(file, '.*')
45
+ stylesheet_tag base_path if stylesheet_exists?(base_path)
46
+ end
47
+
48
+ def link_to(name, link, options={})
49
+ link = [link, options.delete(:params).to_param].join('?') if options[:params].is_a?(Hash) && options[:params].present?
50
+ html_tag(:a, { href: link }.merge(options) ){ name }
51
+ end
52
+
53
+ def html_tag(tag, options={}, &block)
54
+ [].tap do |lines|
55
+ lines << "<#{tag} " + options.map{ |k, v| "#{k}=\"#{v}\"" }.join(' ') + (block_given? ? ">" : "/>")
56
+ if block_given?
57
+ lines << yield
58
+ lines << "</#{tag}>"
59
+ end
60
+ end.compact.join("\n")
61
+ end
62
+
63
+ private
64
+
65
+ def stylesheet_exists?(name)
66
+ FlatRack.assets[name]
67
+ end
68
+
69
+ def javascript_exists?(name)
70
+ FlatRack.assets[name]
71
+ end
72
+
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,75 @@
1
+ module FlatRack
2
+ class Response
3
+
4
+ autoload :ViewContext, 'flatrack/response/view_context'
5
+
6
+ DEFAULT_FILE = 'index'
7
+ CONTENT_TYPES = {
8
+ html: 'text/html',
9
+ rb: 'text/html'
10
+ }
11
+
12
+ attr_reader :request
13
+
14
+ def initialize(request)
15
+ @request = request
16
+ end
17
+
18
+ def render(options={})
19
+ file, text, status, layout = options.values_at(:file, :text, :status, :layout)
20
+ set_content_type
21
+ status ||= 200
22
+ if text
23
+ render_text text, status: status
24
+ else
25
+ render_file file, status: status, layout: layout
26
+ end
27
+ end
28
+
29
+ def headers
30
+ @headers ||= {}
31
+ end
32
+
33
+ def body
34
+ @body ||= []
35
+ end
36
+
37
+ def set_content_type
38
+ headers['Content-Type'] = CONTENT_TYPES[request.format.to_sym]
39
+ end
40
+
41
+ private
42
+
43
+ def render_file(file = nil, options={})
44
+ status, layout = options.values_at(:status, :layout)
45
+ layout ||= :layout
46
+ file ||= file_for(request.path)
47
+ contents = renderer_for(file).render(view_context)
48
+ contents = layout_for(layout).render(view_context){ contents } if layout
49
+ self.body << contents
50
+ [status, headers, body]
51
+ end
52
+
53
+ def render_text(text = '', options={})
54
+ status = options[:status]
55
+ [status, headers, [text.to_s]]
56
+ end
57
+
58
+ def file_for(path)
59
+ File.directory?(File.join 'pages', path) ? File.join(path, DEFAULT_FILE) : path
60
+ end
61
+
62
+ def renderer_for(file)
63
+ Renderer.find file
64
+ end
65
+
66
+ def layout_for(file)
67
+ Renderer.find File.join("#{file}.#{request.format}")
68
+ end
69
+
70
+ def view_context
71
+ @view_context ||= ViewContext.new(self)
72
+ end
73
+
74
+ end
75
+ end
@@ -0,0 +1,3 @@
1
+ module FlatRack
2
+ VERSION = "0.0.1.dev"
3
+ end
data/lib/flatrack.rb ADDED
@@ -0,0 +1,37 @@
1
+ require 'flatrack/version'
2
+ require 'sprockets'
3
+ require 'active_support/all'
4
+
5
+ module FlatRack
6
+ extend ActiveSupport::Autoload
7
+
8
+ autoload :Renderer
9
+ autoload :Request
10
+ autoload :Response
11
+ autoload :App
12
+ autoload :AssetExtensions
13
+
14
+ RendererNotFound = Class.new(StandardError)
15
+ FileNotFound = Class.new StandardError
16
+
17
+ FORMATS = {
18
+ 'html' => 'text/html',
19
+ 'rb' => 'text/html'
20
+ }
21
+
22
+ def self.assets
23
+ @assets ||= begin
24
+ Sprockets::Environment.new.tap do |environment|
25
+ environment.append_path 'assets/images'
26
+ environment.append_path 'assets/javascripts'
27
+ environment.append_path 'assets/stylesheets'
28
+ environment.context_class.class_eval { include AssetExtensions }
29
+ end
30
+ end
31
+ end
32
+
33
+ I18n.enforce_available_locales = false
34
+
35
+ Dir.glob(File.expand_path File.join __FILE__, '../../renderers/**/*.rb').each { |f| require f }
36
+
37
+ end
@@ -0,0 +1,106 @@
1
+ require 'rake'
2
+ require 'rake/tasklib'
3
+ require 'flatrack'
4
+ require 'logger'
5
+
6
+ module Rake
7
+ # Simple Sprockets compilation Rake task macro.
8
+ #
9
+ # Rake::AssetTasks.new
10
+ #
11
+ class AssetTasks < Rake::TaskLib
12
+
13
+ attr_reader :environment
14
+ attr_reader :index
15
+ attr_reader :manifest
16
+ attr_reader :output
17
+ attr_reader :keep
18
+
19
+ # Number of old assets to keep.
20
+
21
+ # Logger to use during rake tasks. Defaults to using stderr.
22
+ #
23
+ # t.logger = Logger.new($stdout)
24
+ #
25
+ attr_accessor :logger
26
+
27
+ # Returns logger level Integer.
28
+ def log_level
29
+ @logger.level
30
+ end
31
+
32
+ # Set logger level with constant or symbol.
33
+ #
34
+ # t.log_level = Logger::INFO
35
+ # t.log_level = :debug
36
+ #
37
+ def log_level=(level)
38
+ if level.is_a?(Integer)
39
+ @logger.level = level
40
+ else
41
+ @logger.level = Logger.const_get(level.to_s.upcase)
42
+ end
43
+ end
44
+
45
+ def initialize
46
+ @environment = FlatRack.assets
47
+ @logger = Logger.new($stderr)
48
+ @logger.level = Logger::INFO
49
+ @index = environment.index
50
+ @output = "./public/assets"
51
+ @manifest = Sprockets::Manifest.new(index, output)
52
+ @keep = 2
53
+ define
54
+ end
55
+
56
+ def assets
57
+ Dir['assets/**/*.*'].map do |file|
58
+ file_basename = File.basename file
59
+ file = file.split('.').tap(&:pop).join('.') if file_basename.split('.').size > 2
60
+ File.expand_path(file).sub(/(#{environment.paths.join('|')})\//,'')
61
+ end
62
+ end
63
+
64
+ # Define tasks
65
+ def define
66
+ namespace :assets do
67
+ desc 'precompile assets'
68
+ task :precompile do
69
+ with_logger do
70
+ manifest.compile(assets)
71
+ end
72
+ end
73
+
74
+ desc "Remove all assets"
75
+ task :clobber do
76
+ with_logger do
77
+ manifest.clobber
78
+ end
79
+ end
80
+
81
+ desc "Clean old assets"
82
+ task :clean do
83
+ with_logger do
84
+ manifest.clean(keep)
85
+ end
86
+ end
87
+
88
+ end
89
+ end
90
+
91
+ private
92
+
93
+ # Sub out environment logger with our rake task logger that
94
+ # writes to stderr.
95
+ def with_logger
96
+ if env = manifest.environment
97
+ old_logger = env.logger
98
+ env.logger = @logger
99
+ end
100
+ yield
101
+ ensure
102
+ env.logger = old_logger if env
103
+ end
104
+
105
+ end
106
+ end
data/renderers/erb.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'flatrack/renderer/base'
2
+
3
+ class FlatRack::Renderer::ERB < FlatRack::Renderer::Base
4
+
5
+ renders :erb
6
+
7
+ def render(context = binding, &block)
8
+ ::ERB.new(contents).result(context, &block)
9
+ end
10
+
11
+ end
data/renderers/html.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'flatrack/renderer/base'
2
+
3
+ class FlatRack::Renderer::Html < FlatRack::Renderer::Base
4
+
5
+ renders :html
6
+
7
+ def render(*args)
8
+ contents
9
+ end
10
+
11
+ end
data/renderers/rb.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'flatrack/renderer/base'
2
+
3
+ class FlatRack::Renderer::Rb < FlatRack::Renderer::Base
4
+
5
+ renders :rb
6
+
7
+ def render(context)
8
+ result = nil
9
+ evaluator = Thread.start do
10
+ $SAFE = 3
11
+ result = eval contents, context
12
+ end
13
+ nil while evaluator.alive?
14
+ result
15
+ end
16
+
17
+ end
@@ -0,0 +1,9 @@
1
+ $:.unshift File.expand_path File.dirname(__FILE__)
2
+
3
+ require 'flatrack'
4
+
5
+ RSpec.configure do |config|
6
+ config.treat_symbols_as_metadata_keys_with_true_values = true
7
+ config.run_all_when_everything_filtered = true
8
+ config.filter_run :focus
9
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flatrack
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.dev
5
+ platform: ruby
6
+ authors:
7
+ - Jason Waldrip
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sass
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sprockets
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: thor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: coffee-script
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: bundler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.5'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.5'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description:
140
+ email:
141
+ - jason@waldrip.net
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - "./Gemfile"
147
+ - "./Gemfile.lock"
148
+ - "./LICENSE.txt"
149
+ - "./README.md"
150
+ - "./Rakefile"
151
+ - "./bin/flatrack"
152
+ - "./flatrack.gemspec"
153
+ - "./lib/flatrack.rb"
154
+ - "./lib/flatrack/app.rb"
155
+ - "./lib/flatrack/asset_extensions.rb"
156
+ - "./lib/flatrack/rake/tasks.rb"
157
+ - "./lib/flatrack/renderer.rb"
158
+ - "./lib/flatrack/renderer/base.rb"
159
+ - "./lib/flatrack/request.rb"
160
+ - "./lib/flatrack/response.rb"
161
+ - "./lib/flatrack/response/view_context.rb"
162
+ - "./lib/flatrack/version.rb"
163
+ - "./lib/rake/asset_tasks.rb"
164
+ - "./renderers/erb.rb"
165
+ - "./renderers/html.rb"
166
+ - "./renderers/rb.rb"
167
+ - "./spec/spec_helper.rb"
168
+ homepage: https://github.com/jwaldrip/flatrack
169
+ licenses:
170
+ - MIT
171
+ metadata: {}
172
+ post_install_message:
173
+ rdoc_options: []
174
+ require_paths:
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">"
184
+ - !ruby/object:Gem::Version
185
+ version: 1.3.1
186
+ requirements: []
187
+ rubyforge_project:
188
+ rubygems_version: 2.2.0
189
+ signing_key:
190
+ specification_version: 4
191
+ summary: A template based flat rack site
192
+ test_files: []