vitreous_standalone 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'sinatra'
4
+ gem 'dropbox'
5
+ gem 'dummy_dropbox'
6
+ gem 'json'
7
+ gem 'mustache'
8
+
9
+ group 'test' do
10
+ gem 'ruby-debug19'
11
+ gem 'rack-test'
12
+ gem 'mocha'
13
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,57 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ archive-tar-minitar (0.5.2)
5
+ columnize (0.3.2)
6
+ dropbox (1.2.3)
7
+ json (>= 1.2.0)
8
+ mechanize (>= 1.0.0)
9
+ multipart-post (>= 1.0)
10
+ oauth (>= 0.3.6)
11
+ dummy_dropbox (0.0.2)
12
+ dropbox
13
+ json (1.5.1)
14
+ linecache19 (0.5.11)
15
+ ruby_core_source (>= 0.1.4)
16
+ mechanize (1.0.0)
17
+ nokogiri (>= 1.2.1)
18
+ mocha (0.9.12)
19
+ multipart-post (1.1.0)
20
+ mustache (0.12.0)
21
+ nokogiri (1.4.4)
22
+ oauth (0.4.4)
23
+ rack (1.2.1)
24
+ rack-test (0.5.7)
25
+ rack (>= 1.0)
26
+ ruby-debug-base19 (0.11.24)
27
+ columnize (>= 0.3.1)
28
+ linecache19 (>= 0.5.11)
29
+ ruby_core_source (>= 0.1.4)
30
+ ruby-debug19 (0.11.6)
31
+ columnize (>= 0.3.1)
32
+ linecache19 (>= 0.5.11)
33
+ ruby-debug-base19 (>= 0.11.19)
34
+ ruby_core_source (0.1.4)
35
+ archive-tar-minitar (>= 0.5.2)
36
+ sinatra (1.1.2)
37
+ rack (~> 1.1)
38
+ tilt (~> 1.2)
39
+ tilt (1.2.2)
40
+ webrat (0.7.3)
41
+ nokogiri (>= 1.2.0)
42
+ rack (>= 1.0)
43
+ rack-test (>= 0.5.3)
44
+
45
+ PLATFORMS
46
+ ruby
47
+
48
+ DEPENDENCIES
49
+ dropbox
50
+ dummy_dropbox
51
+ json
52
+ mocha
53
+ mustache
54
+ rack-test
55
+ ruby-debug19
56
+ sinatra
57
+ webrat
data/Manifest ADDED
@@ -0,0 +1,19 @@
1
+ Gemfile
2
+ Gemfile.lock
3
+ README.md
4
+ Rakefile
5
+ bin/vitreous_standalone
6
+ lib/vitreous_standalone.rb
7
+ lib/vitreous_standalone/app.rb
8
+ lib/vitreous_standalone/element.rb
9
+ lib/vitreous_standalone/element_mustache.rb
10
+ lib/vitreous_standalone/indexer.rb
11
+ test/fixtures/responses/collection.txt
12
+ test/fixtures/responses/element.txt
13
+ test/fixtures/responses/show.txt
14
+ test/fixtures/vitreous_folder/template/assets/nyc.png
15
+ test/fixtures/vitreous_folder/template/assets/style.css
16
+ test/fixtures/vitreous_folder/template/layout.html
17
+ test/fixtures/vitreous_folder/website/folder/file.jpg
18
+ test/fixtures/vitreous_folder/website/folder/file.txt
19
+ Manifest
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Vitreous Standalone
2
+
3
+ _Vitreous_ standalone version to try your _Vitreous folder_
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('vitreous_standalone', '0.0.1') do |p|
6
+ p.description = "Vitreous standalone server"
7
+ p.url = "http://github.com/fguillen/VitreousStandalone"
8
+ p.author = "Fernando Guillen & Juan Jose Vidal"
9
+ p.email = ["fguillen.mail@gmail.com", "juanjicho@gmail.com "]
10
+ p.ignore_pattern = ['test/*']
11
+ p.development_dependencies = ['mocha', 'rack-test']
12
+ p.runtime_dependencies = ['sinatra', 'dropbox', 'dummy_dropbox', 'json', 'mustache']
13
+ end
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ if ARGV.size != 1
5
+ puts "use: $ vitreous_standalone <path to your Vitreous folder>"
6
+ exit 1
7
+ end
8
+
9
+ ENV['VITREOUS_FOLDER'] = ARGV[0]
10
+
11
+ begin
12
+ require 'vitreous_standalone'
13
+ rescue LoadError
14
+ require 'rubygems'
15
+ require 'vitreous_standalone'
16
+ end
17
+
18
+ puts "XXX: ENV['VITREOUS_FOLDER']: #{ENV['VITREOUS_FOLDER']}"
19
+
20
+ puts "Starting Vitreous standalone"
21
+
22
+ VitreousStandalone.run!
@@ -0,0 +1,46 @@
1
+ VITREOUS_FOLDER = ENV['VITREOUS_FOLDER']
2
+ Mustache.template_path = "#{VITREOUS_FOLDER}/template"
3
+ Mustache.template_extension = 'html'
4
+
5
+ class Vitreous::Dropbox::Indexer
6
+ def dropbox_public_path
7
+ ""
8
+ end
9
+ end
10
+
11
+ class VitreousStandalone < Sinatra::Base
12
+ # assets
13
+ get "/assets/*" do |asset|
14
+ send_file "#{VITREOUS_FOLDER}/template/assets/#{asset}"
15
+ end
16
+
17
+ # file
18
+ get "/website/*" do |file|
19
+ send_file "#{VITREOUS_FOLDER}/website/#{file}"
20
+ end
21
+
22
+ # resource
23
+ get '/*' do |resource|
24
+ DummyDropbox.root_path = VITREOUS_FOLDER
25
+ dropbox_session = ::Dropbox::Session.new('key', 'secret')
26
+ indexer = Vitreous::Dropbox::Indexer.new( dropbox_session, '/website' )
27
+ index = Element.from_json indexer.create_index
28
+
29
+ resource = "/#{resource}"
30
+ element = resource == '/' ? index : index.search( resource )
31
+
32
+ raise Sinatra::NotFound if element.nil?
33
+
34
+
35
+
36
+ Mustache.render(
37
+ File.read( "#{VITREOUS_FOLDER}/template/layout.html" ),
38
+ {
39
+ :domain => 'mydomain.com',
40
+ :index => ElementMustache.new( index ),
41
+ :element => ElementMustache.new( element ),
42
+ :assets_path => "/assets"
43
+ }
44
+ )
45
+ end
46
+ end
@@ -0,0 +1,45 @@
1
+ class Element < Mustache
2
+ attr_accessor :elements
3
+ attr_accessor :title
4
+ attr_accessor :slug
5
+ attr_accessor :link
6
+ attr_accessor :type
7
+ attr_accessor :meta
8
+
9
+ def initialize( opts = {} )
10
+ @title = opts[:title]
11
+ @slug = opts[:slug]
12
+ @link = opts[:link]
13
+ @type = opts[:type]
14
+ @meta = opts[:meta] || {}
15
+ @elements = []
16
+ end
17
+
18
+ def search( link )
19
+ return self if link == self.link
20
+
21
+ self.elements.each do |element|
22
+ found = element.search( link )
23
+ return found if found
24
+ end
25
+
26
+ return nil
27
+ end
28
+
29
+ def self.from_json( hash )
30
+ element =
31
+ Element.new(
32
+ :title => hash['title'],
33
+ :slug => hash['slug'],
34
+ :link => hash['link'],
35
+ :type => hash['type'],
36
+ :meta => hash['meta']
37
+ )
38
+
39
+ hash['elements'].each do |element_hash|
40
+ element.elements << Element.from_json( element_hash )
41
+ end
42
+
43
+ return element
44
+ end
45
+ end
@@ -0,0 +1,73 @@
1
+ class ElementMustache < Mustache
2
+ def initialize( element )
3
+ @element = element
4
+ end
5
+
6
+ def respond_to?( method_name )
7
+ if(
8
+ @element.meta.has_key?( method_name ) ||
9
+ @element.meta.has_key?( method_name.to_s ) ||
10
+ super.respond_to?( method_name ) ||
11
+ (method_name.to_s =~ /\?$/ && method_name.to_s != 'has_key?')
12
+ )
13
+ return true
14
+ end
15
+
16
+ super
17
+ end
18
+
19
+ def method_missing( method_name, *args, &block )
20
+
21
+ # jumping {{#meta}}
22
+ if @element.meta.has_key? method_name
23
+ return @element.meta[method_name]
24
+ end
25
+
26
+ if @element.meta.has_key? method_name.to_s
27
+ return @element.meta[method_name.to_s]
28
+ end
29
+
30
+ # asking if has a key
31
+ if method_name.to_s =~ /\?$/ && method_name.to_s != 'has_key?'
32
+ return ( @element.meta.has_key?( method_name.to_s.gsub(/\?$/,'').to_sym ) || @element.meta.has_key?( method_name.to_s.gsub(/\?$/,'') ) )
33
+ end
34
+
35
+ super
36
+ end
37
+
38
+ def title
39
+ @element.title
40
+ end
41
+
42
+ def link
43
+ @element.link
44
+ end
45
+
46
+ def slug
47
+ @element.slug
48
+ end
49
+
50
+ def meta
51
+ @element.meta
52
+ end
53
+
54
+ def collection?
55
+ @element.type == 'collection'
56
+ end
57
+
58
+ def item?
59
+ @element.type == 'item'
60
+ end
61
+
62
+ def elements
63
+ @element.elements.map { |e| ElementMustache.new( e ) }
64
+ end
65
+
66
+ def collections
67
+ @element.elements.select { |e| e.type == 'collection' }.map { |e| ElementMustache.new( e ) }
68
+ end
69
+
70
+ def items
71
+ @element.elements.select { |e| e.type == 'item' }.map { |e| ElementMustache.new( e ) }
72
+ end
73
+ end
@@ -0,0 +1,87 @@
1
+ module Vitreous
2
+ module Dropbox
3
+ class Indexer
4
+ TXT_EXTENSIONS = /^(txt|md|html|meta)$/
5
+
6
+ attr_accessor :session
7
+
8
+ def initialize( session, root_path = nil )
9
+ @session = session
10
+ @root_path = root_path
11
+ end
12
+
13
+ def create_index
14
+ dropbox_root = @session.entry( @root_path )
15
+ dropbox_root_elements = dropbox_root.list.to_a
16
+ return self.create_element( dropbox_root.path, dropbox_root_elements )
17
+ end
18
+
19
+ def create_element( dropbox_element_path, dropbox_elements )
20
+ dropbox_element = @session.entry( dropbox_element_path )
21
+
22
+ # Basic data
23
+ element = Element.new
24
+ element.type = dropbox_element.metadata.directory? ? 'collection' : 'item'
25
+ element.title = Vitreous::Dropbox::Indexer.path_to_title( dropbox_element.path )
26
+ element.slug = Vitreous::Dropbox::Indexer.path_to_slug( dropbox_element.path )
27
+ element.link = Vitreous::Dropbox::Indexer.path_to_link( dropbox_element.path, @root_path )
28
+
29
+ # Files metadata
30
+ file_name = File.basename( dropbox_element.path, File.extname( dropbox_element.path ) )
31
+
32
+ dropbox_files_same_name = dropbox_elements.select do |e|
33
+ file_name == File.basename( e.path, File.extname( e.path ) ) &&
34
+ !e.directory?
35
+ end
36
+
37
+ dropbox_files_same_name.each do |e|
38
+ ext_name = File.extname( e.path ).gsub( '.', '' )
39
+ if( ext_name =~ TXT_EXTENSIONS )
40
+ element.meta[ext_name] = @session.download( e.path )
41
+ else
42
+ element.meta[ext_name] = "#{self.dropbox_public_path}#{e.path.gsub( /^\/Public\//, '' )}"
43
+ end
44
+ end
45
+
46
+ # In case directory then recursion
47
+ if( element.type == 'collection' )
48
+ dropbox_elements = dropbox_element.list.to_a
49
+ Vitreous::Dropbox::Indexer.clean_directory_metadata( file_name, dropbox_elements )
50
+
51
+ dropbox_elements.each do |e|
52
+ # jump files with same name of elements already digested
53
+ next if element.elements.map(&:link).include?( Vitreous::Dropbox::Indexer.path_to_link( e.path, @root_path ) )
54
+ element.elements << self.create_element( e.path, dropbox_elements )
55
+ end
56
+ end
57
+
58
+ return element
59
+ end
60
+
61
+ def self.path_to_title( path )
62
+ return File.basename( path, File.extname( path ) ).gsub( /^0\d*\s/, '' )
63
+ end
64
+
65
+ def self.path_to_slug( path )
66
+ return Vitreous::Dropbox::Indexer.path_to_title(path).downcase.gsub(/[^a-z0-9 -_]/,"").gsub('_', '-').gsub(/[ ]+/,"-")
67
+ end
68
+
69
+ def self.path_to_link( path, root_path )
70
+ path = path.gsub( root_path, '' )
71
+ link = path.split('/').map { |e| Vitreous::Dropbox::Indexer.path_to_slug( e ) }.join('/')
72
+ return link
73
+ end
74
+
75
+ # clean file elements that are metadata of a directory
76
+ def self.clean_directory_metadata( file_name, dropbox_elements )
77
+ dropbox_elements.delete_if do |e1|
78
+ !e1.directory? && dropbox_elements.any? { |e2| e2.directory? && file_name == File.basename( e2.path ) }
79
+ end
80
+ end
81
+
82
+ def dropbox_public_path
83
+ "http://dl.dropbox.com/u/#{@session.account.uid}"
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'sinatra/base'
3
+ require 'mustache'
4
+ require 'yaml'
5
+ require 'dropbox'
6
+ require 'dummy_dropbox'
7
+ require File.expand_path "#{File.dirname(__FILE__)}/vitreous_standalone/element.rb"
8
+ require File.expand_path "#{File.dirname(__FILE__)}/vitreous_standalone/indexer.rb"
9
+ require File.expand_path "#{File.dirname(__FILE__)}/vitreous_standalone/element_mustache.rb"
10
+ require File.expand_path "#{File.dirname(__FILE__)}/vitreous_standalone/app.rb"
@@ -0,0 +1,6 @@
1
+ collection: folder
2
+ item: file
3
+
4
+ element title: folder
5
+ element jpg:
6
+ element txt:
@@ -0,0 +1,6 @@
1
+ collection: folder
2
+ item: file
3
+
4
+ element title: file
5
+ element jpg: /website/folder/file.jpg
6
+ element txt: This is my text
@@ -0,0 +1,6 @@
1
+ collection: folder
2
+ item: file
3
+
4
+ element title: website
5
+ element jpg:
6
+ element txt:
@@ -0,0 +1 @@
1
+ body{ font-size: 24px; }
@@ -0,0 +1,14 @@
1
+ {{#index}}
2
+ {{#collections}}
3
+ collection: {{title}}
4
+ {{#items}}
5
+ item: {{title}}
6
+ {{/items}}
7
+ {{/collections}}
8
+ {{/index}}
9
+
10
+ {{#element}}
11
+ element title: {{title}}
12
+ element jpg: {{jpg}}
13
+ element txt: {{txt}}
14
+ {{/element}}
@@ -0,0 +1 @@
1
+ This is my text
@@ -0,0 +1,51 @@
1
+ ENV['VITREOUS_FOLDER'] = "#{File.dirname(__FILE__)}/fixtures/vitreous_folder"
2
+
3
+ require File.expand_path "#{File.dirname(__FILE__)}/../lib/vitreous_standalone.rb"
4
+ require 'rack/test'
5
+ require 'test/unit'
6
+ require 'mocha'
7
+
8
+ FIXTURES_PATH = "#{File.dirname(__FILE__)}/fixtures"
9
+
10
+ class ThimblSingingTest < Test::Unit::TestCase
11
+ include Rack::Test::Methods
12
+
13
+ def app
14
+ VitreousStandalone.new
15
+ end
16
+
17
+ def test_show_root
18
+ get '/'
19
+ # puts last_response.body
20
+ assert_equal File.read( "#{FIXTURES_PATH}/responses/show.txt" ), last_response.body
21
+ end
22
+
23
+ def test_show_collection
24
+ get '/folder'
25
+ assert_equal File.read( "#{FIXTURES_PATH}/responses/collection.txt" ), last_response.body
26
+ end
27
+
28
+ def test_show_element
29
+ get '/folder/file'
30
+ assert_equal File.read( "#{FIXTURES_PATH}/responses/element.txt" ), last_response.body
31
+ end
32
+
33
+ def test_404
34
+ get '/not_exists'
35
+ assert_equal 404, last_response.status
36
+ end
37
+
38
+ def test_assets
39
+ get '/assets/nyc.png'
40
+ assert_equal 'image/png', last_response.content_type
41
+ assert_equal 3728, last_response.content_length
42
+ end
43
+
44
+ def test_file
45
+ get '/website/folder/file.jpg'
46
+ assert_equal 'image/jpeg', last_response.content_type
47
+ assert_equal 750, last_response.content_length
48
+ end
49
+
50
+
51
+ end
@@ -0,0 +1,54 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{vitreous_standalone}
5
+ s.version = "0.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Fernando Guillen & Juan Jose Vidal"]
9
+ s.date = %q{2011-02-23}
10
+ s.default_executable = %q{vitreous_standalone}
11
+ s.description = %q{Vitreous standalone server}
12
+ s.email = ["fguillen.mail@gmail.com", "juanjicho@gmail.com "]
13
+ s.executables = ["vitreous_standalone"]
14
+ s.extra_rdoc_files = ["README.md", "bin/vitreous_standalone", "lib/vitreous_standalone.rb", "lib/vitreous_standalone/app.rb", "lib/vitreous_standalone/element.rb", "lib/vitreous_standalone/element_mustache.rb", "lib/vitreous_standalone/indexer.rb"]
15
+ s.files = ["Gemfile", "Gemfile.lock", "README.md", "Rakefile", "bin/vitreous_standalone", "lib/vitreous_standalone.rb", "lib/vitreous_standalone/app.rb", "lib/vitreous_standalone/element.rb", "lib/vitreous_standalone/element_mustache.rb", "lib/vitreous_standalone/indexer.rb", "test/fixtures/responses/collection.txt", "test/fixtures/responses/element.txt", "test/fixtures/responses/show.txt", "test/fixtures/vitreous_folder/template/assets/nyc.png", "test/fixtures/vitreous_folder/template/assets/style.css", "test/fixtures/vitreous_folder/template/layout.html", "test/fixtures/vitreous_folder/website/folder/file.jpg", "test/fixtures/vitreous_folder/website/folder/file.txt", "Manifest", "vitreous_standalone.gemspec", "test/vitreous_standalone_test.rb"]
16
+ s.homepage = %q{http://github.com/fguillen/VitreousStandalone}
17
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Vitreous_standalone", "--main", "README.md"]
18
+ s.require_paths = ["lib"]
19
+ s.rubyforge_project = %q{vitreous_standalone}
20
+ s.rubygems_version = %q{1.3.7}
21
+ s.summary = %q{Vitreous standalone server}
22
+ s.test_files = ["test/vitreous_standalone_test.rb"]
23
+
24
+ if s.respond_to? :specification_version then
25
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
+ s.specification_version = 3
27
+
28
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
29
+ s.add_runtime_dependency(%q<sinatra>, [">= 0"])
30
+ s.add_runtime_dependency(%q<dropbox>, [">= 0"])
31
+ s.add_runtime_dependency(%q<dummy_dropbox>, [">= 0"])
32
+ s.add_runtime_dependency(%q<json>, [">= 0"])
33
+ s.add_runtime_dependency(%q<mustache>, [">= 0"])
34
+ s.add_development_dependency(%q<mocha>, [">= 0"])
35
+ s.add_development_dependency(%q<rack-test>, [">= 0"])
36
+ else
37
+ s.add_dependency(%q<sinatra>, [">= 0"])
38
+ s.add_dependency(%q<dropbox>, [">= 0"])
39
+ s.add_dependency(%q<dummy_dropbox>, [">= 0"])
40
+ s.add_dependency(%q<json>, [">= 0"])
41
+ s.add_dependency(%q<mustache>, [">= 0"])
42
+ s.add_dependency(%q<mocha>, [">= 0"])
43
+ s.add_dependency(%q<rack-test>, [">= 0"])
44
+ end
45
+ else
46
+ s.add_dependency(%q<sinatra>, [">= 0"])
47
+ s.add_dependency(%q<dropbox>, [">= 0"])
48
+ s.add_dependency(%q<dummy_dropbox>, [">= 0"])
49
+ s.add_dependency(%q<json>, [">= 0"])
50
+ s.add_dependency(%q<mustache>, [">= 0"])
51
+ s.add_dependency(%q<mocha>, [">= 0"])
52
+ s.add_dependency(%q<rack-test>, [">= 0"])
53
+ end
54
+ end
metadata ADDED
@@ -0,0 +1,188 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vitreous_standalone
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Fernando Guillen & Juan Jose Vidal
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-02-23 00:00:00 +01:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: sinatra
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: dropbox
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :runtime
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: dummy_dropbox
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ type: :runtime
58
+ version_requirements: *id003
59
+ - !ruby/object:Gem::Dependency
60
+ name: json
61
+ prerelease: false
62
+ requirement: &id004 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ segments:
68
+ - 0
69
+ version: "0"
70
+ type: :runtime
71
+ version_requirements: *id004
72
+ - !ruby/object:Gem::Dependency
73
+ name: mustache
74
+ prerelease: false
75
+ requirement: &id005 !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ segments:
81
+ - 0
82
+ version: "0"
83
+ type: :runtime
84
+ version_requirements: *id005
85
+ - !ruby/object:Gem::Dependency
86
+ name: mocha
87
+ prerelease: false
88
+ requirement: &id006 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ type: :development
97
+ version_requirements: *id006
98
+ - !ruby/object:Gem::Dependency
99
+ name: rack-test
100
+ prerelease: false
101
+ requirement: &id007 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ segments:
107
+ - 0
108
+ version: "0"
109
+ type: :development
110
+ version_requirements: *id007
111
+ description: Vitreous standalone server
112
+ email:
113
+ - fguillen.mail@gmail.com
114
+ - "juanjicho@gmail.com "
115
+ executables:
116
+ - vitreous_standalone
117
+ extensions: []
118
+
119
+ extra_rdoc_files:
120
+ - README.md
121
+ - bin/vitreous_standalone
122
+ - lib/vitreous_standalone.rb
123
+ - lib/vitreous_standalone/app.rb
124
+ - lib/vitreous_standalone/element.rb
125
+ - lib/vitreous_standalone/element_mustache.rb
126
+ - lib/vitreous_standalone/indexer.rb
127
+ files:
128
+ - Gemfile
129
+ - Gemfile.lock
130
+ - README.md
131
+ - Rakefile
132
+ - bin/vitreous_standalone
133
+ - lib/vitreous_standalone.rb
134
+ - lib/vitreous_standalone/app.rb
135
+ - lib/vitreous_standalone/element.rb
136
+ - lib/vitreous_standalone/element_mustache.rb
137
+ - lib/vitreous_standalone/indexer.rb
138
+ - test/fixtures/responses/collection.txt
139
+ - test/fixtures/responses/element.txt
140
+ - test/fixtures/responses/show.txt
141
+ - test/fixtures/vitreous_folder/template/assets/nyc.png
142
+ - test/fixtures/vitreous_folder/template/assets/style.css
143
+ - test/fixtures/vitreous_folder/template/layout.html
144
+ - test/fixtures/vitreous_folder/website/folder/file.jpg
145
+ - test/fixtures/vitreous_folder/website/folder/file.txt
146
+ - Manifest
147
+ - vitreous_standalone.gemspec
148
+ - test/vitreous_standalone_test.rb
149
+ has_rdoc: true
150
+ homepage: http://github.com/fguillen/VitreousStandalone
151
+ licenses: []
152
+
153
+ post_install_message:
154
+ rdoc_options:
155
+ - --line-numbers
156
+ - --inline-source
157
+ - --title
158
+ - Vitreous_standalone
159
+ - --main
160
+ - README.md
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ segments:
169
+ - 0
170
+ version: "0"
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ segments:
177
+ - 1
178
+ - 2
179
+ version: "1.2"
180
+ requirements: []
181
+
182
+ rubyforge_project: vitreous_standalone
183
+ rubygems_version: 1.3.7
184
+ signing_key:
185
+ specification_version: 3
186
+ summary: Vitreous standalone server
187
+ test_files:
188
+ - test/vitreous_standalone_test.rb