vitreous_standalone 0.0.1

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.
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