spinto 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source :rubygems
2
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,151 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rdoc'
4
+ require 'date'
5
+
6
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w[lib]))
7
+
8
+ #############################################################################
9
+ #
10
+ # Helper functions
11
+ #
12
+ #############################################################################
13
+
14
+ def name
15
+ @name ||= Dir['*.gemspec'].first.split('.').first
16
+ end
17
+
18
+ def version
19
+ line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
20
+ line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
21
+ end
22
+
23
+ def date
24
+ Date.today.to_s
25
+ end
26
+
27
+ def rubyforge_project
28
+ name
29
+ end
30
+
31
+ def gemspec_file
32
+ "#{name}.gemspec"
33
+ end
34
+
35
+ def gem_file
36
+ "#{name}-#{version}.gem"
37
+ end
38
+
39
+ def replace_header(head, header_name)
40
+ head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
41
+ end
42
+
43
+ #############################################################################
44
+ #
45
+ # Standard tasks
46
+ #
47
+ #############################################################################
48
+
49
+ task :default => [:test, :features]
50
+
51
+ require 'rake/testtask'
52
+ Rake::TestTask.new(:test) do |test|
53
+ if `which pygmentize` == ''
54
+ puts "You must have Pygments installed to run the tests."
55
+ exit 1
56
+ end
57
+ test.libs << 'lib' << 'test'
58
+ test.pattern = 'test/**/test_*.rb'
59
+ test.verbose = true
60
+ end
61
+
62
+ desc "Generate RCov test coverage and open in your browser"
63
+ task :coverage do
64
+ require 'rcov'
65
+ sh "rm -fr coverage"
66
+ sh "rcov test/test_*.rb"
67
+ sh "open coverage/index.html"
68
+ end
69
+
70
+ require 'rdoc/task'
71
+ Rake::RDocTask.new do |rdoc|
72
+ rdoc.rdoc_dir = 'rdoc'
73
+ rdoc.title = "#{name} #{version}"
74
+ rdoc.rdoc_files.include('README*')
75
+ rdoc.rdoc_files.include('lib/**/*.rb')
76
+ end
77
+
78
+ desc "Open an irb session preloaded with this library"
79
+ task :console do
80
+ sh "irb -rubygems -r ./lib/#{name}.rb"
81
+ end
82
+
83
+ #############################################################################
84
+ #
85
+ # Custom tasks (add your own tasks here)
86
+ #
87
+ #############################################################################
88
+
89
+ begin
90
+ require 'cucumber/rake/task'
91
+ Cucumber::Rake::Task.new(:features) do |t|
92
+ t.cucumber_opts = "--format progress"
93
+ end
94
+ rescue LoadError
95
+ desc 'Cucumber rake task not available'
96
+ task :features do
97
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
98
+ end
99
+ end
100
+
101
+ #############################################################################
102
+ #
103
+ # Packaging tasks
104
+ #
105
+ #############################################################################
106
+
107
+ task :release => :build do
108
+ unless `git branch` =~ /^\* master$/
109
+ puts "You must be on the master branch to release!"
110
+ exit!
111
+ end
112
+ sh "git commit --allow-empty -m 'Release #{version}'"
113
+ sh "git tag v#{version}"
114
+ sh "git push origin master"
115
+ sh "git push origin v#{version}"
116
+ sh "gem push pkg/#{name}-#{version}.gem"
117
+ end
118
+
119
+ task :build => :gemspec do
120
+ sh "mkdir -p pkg"
121
+ sh "gem build #{gemspec_file}"
122
+ sh "mv #{gem_file} pkg"
123
+ end
124
+
125
+ task :gemspec do
126
+ # read spec file and split out manifest section
127
+ spec = File.read(gemspec_file)
128
+ head, manifest, tail = spec.split(" # = MANIFEST =\n")
129
+
130
+ # replace name version and date
131
+ replace_header(head, :name)
132
+ replace_header(head, :version)
133
+ replace_header(head, :date)
134
+ #comment this out if your rubyforge_project has a different name
135
+ # replace_header(head, :rubyforge_project)
136
+
137
+ # determine file list from git ls-files
138
+ files = `git ls-files`.
139
+ split("\n").
140
+ sort.
141
+ reject { |file| file =~ /^\./ }.
142
+ reject { |file| file =~ /^(rdoc|pkg|coverage)/ }.
143
+ map { |file| " #{file}" }.
144
+ join("\n")
145
+
146
+ # piece file back together and write
147
+ manifest = " s.files = %w[\n#{files}\n ]\n"
148
+ spec = [head, manifest, tail].join(" # = MANIFEST =\n")
149
+ File.open(gemspec_file, 'w') { |io| io.write(spec) }
150
+ puts "Updated #{gemspec_file}"
151
+ end
@@ -0,0 +1,29 @@
1
+ # Build .coffee and .coffeescript files into
2
+ # Javascript.
3
+ #
4
+ # From: https://gist.github.com/959938
5
+ #
6
+
7
+ module Jekyll
8
+ require 'coffee-script'
9
+ class CoffeeScriptConverter < Converter
10
+ safe true
11
+ priority :normal
12
+
13
+ def matches(ext)
14
+ ext =~ /coffee/i
15
+ end
16
+
17
+ def output_ext(ext)
18
+ ".js"
19
+ end
20
+
21
+ def convert(content)
22
+ begin
23
+ CoffeeScript.compile content
24
+ rescue StandardError => e
25
+ puts "CoffeeScript error:" + e.message
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,87 @@
1
+ Jekyll::Post.class_eval do
2
+
3
+ def location_on_server
4
+ to_liquid['url']
5
+ end
6
+
7
+ def path_to_source
8
+ "/_posts/#{File.join(@name)}"
9
+ end
10
+
11
+ end
12
+
13
+ Jekyll::Page.class_eval do
14
+
15
+ # It is important that this is the same
16
+ # as the key used on the hash in the watcher.
17
+ def location_on_server
18
+ to_liquid['url']
19
+ end
20
+
21
+ def path_to_source
22
+ File.join(@dir, @name)
23
+ end
24
+
25
+ end
26
+
27
+ Jekyll::StaticFile.class_eval do
28
+
29
+ def location_on_server
30
+ File.join(@dir, @name)
31
+ end
32
+
33
+ def path_to_source
34
+ File.join(@dir, @name)
35
+ end
36
+
37
+ end
38
+
39
+ Jekyll::Site.class_eval do
40
+ require 'json'
41
+
42
+ alias :render_without_include_tree :render
43
+ def render
44
+ # First, render like Jekyll normally does
45
+ render_without_include_tree
46
+
47
+ # Set a blank array for files that did not have
48
+ # inclusions fired.
49
+ (pages + posts + static_files).each do |file|
50
+ Jekyll::IncludeWatcher.inclusions[file.location_on_server] ||= {}
51
+ Jekyll::IncludeWatcher.inclusions[file.location_on_server].merge!(source: file.path_to_source)
52
+ if file.respond_to?(:data) && file.data
53
+ data = {}
54
+ ['editable', '_content', 'title', 'description'].each do |key|
55
+ data[key] = file.data[key] if file.data[key]
56
+ end
57
+ Jekyll::IncludeWatcher.inclusions[file.location_on_server].merge!(data)
58
+ end
59
+ end
60
+
61
+ # Clean up index.html to be '/'
62
+ Jekyll::IncludeWatcher.inclusions.keys.each do |key|
63
+ matches = key.match(/^(.*\/)index.html$/)
64
+ if matches
65
+ clean_name = if matches[1] == '/'
66
+ matches[1]
67
+ else
68
+ matches[1].gsub(/\/$/, '')
69
+ end
70
+ Jekyll::IncludeWatcher.inclusions[clean_name] = \
71
+ Jekyll::IncludeWatcher.inclusions.delete(key)
72
+ end
73
+ end
74
+
75
+ # Write our inclusions to a dot-file
76
+ filename = '.include_tree'
77
+
78
+ File.open(File.join(source, filename), "w") do |f|
79
+ f.write JSON.dump( Jekyll::IncludeWatcher.inclusions )
80
+ end
81
+
82
+ # Ensure Jekyll doesn't clean ths up.
83
+ static_files << Jekyll::StaticFile.new(self, source, "/", filename)
84
+ end
85
+
86
+ end
87
+
@@ -0,0 +1,78 @@
1
+ module Jekyll
2
+
3
+ class IncludeWatcher < Jekyll::IncludeTag
4
+
5
+ @@inclusions = {}
6
+ def self.inclusions; @@inclusions; end
7
+
8
+ def render(context)
9
+ Jekyll::IncludeWatcher.inclusions[context.registers[:page]['url']] ||= {}
10
+ Jekyll::IncludeWatcher.inclusions[context.registers[:page]['url']][:includes] ||= {}
11
+ Jekyll::IncludeWatcher.inclusions[context.registers[:page]['url']][:includes] = \
12
+ (Jekyll::IncludeWatcher.inclusions[context.registers[:page]['url']][:includes] || {}).merge(
13
+ @file => { 'editable' => true }
14
+ )
15
+ super
16
+ end
17
+
18
+ end
19
+
20
+ module Convertible
21
+
22
+ # Add any necessary layouts to this convertible document.
23
+ #
24
+ # payload - The site payload Hash.
25
+ # layouts - A Hash of {"name" => "layout"}.
26
+ #
27
+ # Returns nothing.
28
+
29
+ # Monkey patched for page passing to tags.
30
+ #
31
+ # https://github.com/mojombo/jekyll/pull/413
32
+ #
33
+ def do_layout(payload, layouts)
34
+ info = { :filters => [Jekyll::Filters], :registers => { :site => self.site, :page => payload['page'] } }
35
+
36
+ # render and transform content (this becomes the final content of the object)
37
+ payload["pygments_prefix"] = converter.pygments_prefix
38
+ payload["pygments_suffix"] = converter.pygments_suffix
39
+
40
+ begin
41
+ self.content = Liquid::Template.parse(self.content).render(payload, info)
42
+ rescue => e
43
+ puts "Liquid Exception: #{e.message} in #{self.name}"
44
+ end
45
+
46
+ self.transform
47
+
48
+ # output keeps track of what will finally be written
49
+ self.output = self.content
50
+
51
+ # recursively render layouts
52
+ layout = layouts[self.data["layout"]]
53
+ used = Set.new([layout])
54
+
55
+ while layout
56
+ payload = payload.deep_merge({"content" => self.output, "page" => layout.data})
57
+
58
+ begin
59
+ self.output = Liquid::Template.parse(layout.content).render(payload, info)
60
+ rescue => e
61
+ puts "Liquid Exception: #{e.message} in #{self.data["layout"]}"
62
+ end
63
+
64
+ if layout = layouts[layout.data["layout"]]
65
+ if used.include?(layout)
66
+ layout = nil # avoid recursive chain
67
+ else
68
+ used << layout
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+
78
+ Liquid::Template.register_tag('include', Jekyll::IncludeWatcher)
@@ -0,0 +1,26 @@
1
+ # Build .less files into CSS
2
+ #
3
+
4
+ module Jekyll
5
+ require 'less'
6
+ class LessConverter < Converter
7
+ safe true
8
+ priority :normal
9
+
10
+ def matches(ext)
11
+ ext =~ /less/i
12
+ end
13
+
14
+ def output_ext(ext)
15
+ ".css"
16
+ end
17
+
18
+ def convert(content)
19
+ begin
20
+ Less::Engine.new(content).to_css
21
+ rescue StandardError => e
22
+ puts "Less error:" + e.message
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # Build .sass files into CSS
2
+ #
3
+
4
+ module Jekyll
5
+ require 'sass'
6
+ class SassConverter < Converter
7
+ safe true
8
+ priority :normal
9
+
10
+ def matches(ext)
11
+ ext =~ /sass/i
12
+ end
13
+
14
+ def output_ext(ext)
15
+ ".css"
16
+ end
17
+
18
+ def convert(content)
19
+ begin
20
+ Sass::Engine.new(content, :syntax => :sass).render
21
+ rescue StandardError => e
22
+ puts "Sass error:" + e.message
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # Build .scss files into CSS
2
+ #
3
+
4
+ module Jekyll
5
+ require 'scss'
6
+ class ScssConverter < Converter
7
+ safe true
8
+ priority :normal
9
+
10
+ def matches(ext)
11
+ ext =~ /scss/i
12
+ end
13
+
14
+ def output_ext(ext)
15
+ ".css"
16
+ end
17
+
18
+ def convert(content)
19
+ begin
20
+ Sass::Engine.new(content, :syntax => :scss).render
21
+ rescue StandardError => e
22
+ puts "Scss error:" + e.message
23
+ end
24
+ end
25
+ end
26
+ end
data/bin/spinto-site ADDED
@@ -0,0 +1,147 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
4
+
5
+ help = <<HELP
6
+ Spinto-site is the spintoapp.com wrapper of jekyll,
7
+ the blog-aware, static site generator.
8
+
9
+ Basic Command Line Usage:
10
+ spinto-site # . -> ./_site
11
+ spinto-site <path to write generated site> # . -> <path>
12
+ spinto-site <path to source> <path to write generated site> # <path> -> <path>
13
+ spinto-site --auto --server # Host your site locally
14
+
15
+ Configuration is read from '<source>/_config.yml' but can be overriden
16
+ using the following options:
17
+
18
+ HELP
19
+
20
+ require 'optparse'
21
+ require 'jekyll'
22
+ require 'spinto'
23
+
24
+ exec = {}
25
+ options = {}
26
+ opts = OptionParser.new do |opts|
27
+ opts.banner = help
28
+
29
+ opts.on("--[no-]auto", "Auto-regenerate") do |auto|
30
+ options['auto'] = auto
31
+ end
32
+
33
+ opts.on("--server [PORT]", "Start web server (default port 4000)") do |port|
34
+ options['server'] = true
35
+ options['server_port'] = port unless port.nil?
36
+ end
37
+
38
+ opts.on("--no-server", "Do not start a web server") do |part|
39
+ options['server'] = false
40
+ end
41
+
42
+ opts.on("--url [URL]", "Set custom site.url") do |url|
43
+ options['url'] = url
44
+ end
45
+
46
+ opts.on("--version", "Display current version") do
47
+ puts "Spinto " + Spinto::VERSION
48
+ exit 0
49
+ end
50
+ end
51
+
52
+ # Read command line options into `options` hash
53
+ opts.parse!
54
+
55
+
56
+ # Get source and destintation from command line
57
+ case ARGV.size
58
+ when 0
59
+ when 1
60
+ options['destination'] = ARGV[0]
61
+ when 2
62
+ options['source'] = ARGV[0]
63
+ options['destination'] = ARGV[1]
64
+ else
65
+ puts "Invalid options. Run `spinto-site --help` for assistance."
66
+ exit(1)
67
+ end
68
+
69
+ options['safe'] = false
70
+ options['plugins'] = File.join(File.dirname(__FILE__), '..', '_plugins')
71
+
72
+ options = Jekyll.configuration(options)
73
+
74
+ # Get source and destination directories (possibly set by config file)
75
+ source = options['source']
76
+ destination = options['destination']
77
+
78
+ # Files to watch
79
+ def globs(source)
80
+ Dir.chdir(source) do
81
+ dirs = Dir['*'].select { |x| File.directory?(x) }
82
+ dirs -= ['_site']
83
+ dirs = dirs.map { |x| "#{x}/**/*" }
84
+ dirs += ['*']
85
+ end
86
+ end
87
+
88
+ # Create the Site
89
+ site = Jekyll::Site.new(options)
90
+
91
+ # Run the directory watcher for auto-generation, if required
92
+ if options['auto']
93
+ require 'directory_watcher'
94
+
95
+ puts "Auto-regenerating enabled: #{source} -> #{destination}"
96
+
97
+ dw = DirectoryWatcher.new(source)
98
+ dw.interval = 1
99
+ dw.glob = globs(source)
100
+
101
+ dw.add_observer do |*args|
102
+ t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
103
+ puts "[#{t}] regeneration: #{args.size} files changed"
104
+ site.process
105
+ end
106
+
107
+ dw.start
108
+
109
+ unless options['server']
110
+ loop { sleep 1000 }
111
+ end
112
+ else
113
+ puts "Building site: #{source} -> #{destination}"
114
+ begin
115
+ site.process
116
+ rescue Jekyll::FatalException => e
117
+ puts
118
+ puts "ERROR: YOUR SITE COULD NOT BE BUILT:"
119
+ puts "------------------------------------"
120
+ puts e.message
121
+ exit(1)
122
+ end
123
+ puts "Successfully generated site: #{source} -> #{destination}"
124
+ end
125
+
126
+ # Run the server on the specified port, if required
127
+ if options['server']
128
+ require 'webrick'
129
+ include WEBrick
130
+
131
+ FileUtils.mkdir_p(destination)
132
+
133
+ mime_types = WEBrick::HTTPUtils::DefaultMimeTypes
134
+ mime_types.store 'js', 'application/javascript'
135
+
136
+ s = HTTPServer.new(
137
+ :Port => options['server_port'],
138
+ :MimeTypes => mime_types
139
+ )
140
+ s.mount(options['baseurl'], HTTPServlet::FileHandler, destination)
141
+ t = Thread.new {
142
+ s.start
143
+ }
144
+
145
+ trap("INT") { s.shutdown }
146
+ t.join()
147
+ end
data/lib/spinto.rb ADDED
@@ -0,0 +1,4 @@
1
+ module Spinto
2
+ VERSION = '0.2.3'
3
+
4
+ end
data/spinto.gemspec ADDED
@@ -0,0 +1,50 @@
1
+ Gem::Specification.new do |s|
2
+ s.specification_version = 2 if s.respond_to? :specification_version=
3
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
+ s.rubygems_version = '1.3.5'
5
+
6
+ s.name = 'spinto'
7
+ s.version = '0.2.3'
8
+ s.date = '2012-02-09'
9
+
10
+ s.summary = "The site generator used at spintoapp.com"
11
+ s.description = "Spinto uses Jekyll and plugins to build static sites, this gem provides the spinto-site builder."
12
+
13
+ s.authors = ["Matthew Beale"]
14
+ s.email = 'matt.beale@madhatted.com'
15
+ s.homepage = 'http://github.com/mixonic/spinto'
16
+
17
+ s.require_paths = %w[lib]
18
+
19
+ s.executables = ["spinto-site"]
20
+
21
+ s.rdoc_options = ["--charset=UTF-8"]
22
+ s.extra_rdoc_files = %w[]
23
+
24
+ s.add_runtime_dependency('jekyll', "0.11.0")
25
+ s.add_runtime_dependency('coffee-script', "2.2.0")
26
+ s.add_runtime_dependency('sass', "3.1.15")
27
+ s.add_runtime_dependency('less', "2.0.9")
28
+ s.add_runtime_dependency('RedCloth', "4.2.9")
29
+
30
+ s.add_development_dependency('rake', "~> 0.9")
31
+ s.add_development_dependency('rdoc', "~> 3.11")
32
+
33
+ # = MANIFEST =
34
+ s.files = %w[
35
+ Gemfile
36
+ Rakefile
37
+ _plugins/coffeescript_converter.rb
38
+ _plugins/include_tree.rb
39
+ _plugins/include_watcher.rb
40
+ _plugins/less_converter.rb
41
+ _plugins/sass_converter.rb
42
+ _plugins/scss_converter.rb
43
+ bin/spinto-site
44
+ lib/spinto.rb
45
+ spinto.gemspec
46
+ ]
47
+ # = MANIFEST =
48
+
49
+ s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
50
+ end
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spinto
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Matthew Beale
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-09 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: jekyll
16
+ requirement: &2153561060 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - =
20
+ - !ruby/object:Gem::Version
21
+ version: 0.11.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2153561060
25
+ - !ruby/object:Gem::Dependency
26
+ name: coffee-script
27
+ requirement: &2153560600 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - =
31
+ - !ruby/object:Gem::Version
32
+ version: 2.2.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2153560600
36
+ - !ruby/object:Gem::Dependency
37
+ name: sass
38
+ requirement: &2153560140 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - =
42
+ - !ruby/object:Gem::Version
43
+ version: 3.1.15
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2153560140
47
+ - !ruby/object:Gem::Dependency
48
+ name: less
49
+ requirement: &2153559680 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - =
53
+ - !ruby/object:Gem::Version
54
+ version: 2.0.9
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *2153559680
58
+ - !ruby/object:Gem::Dependency
59
+ name: RedCloth
60
+ requirement: &2153559220 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - =
64
+ - !ruby/object:Gem::Version
65
+ version: 4.2.9
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *2153559220
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: &2153558760 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '0.9'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2153558760
80
+ - !ruby/object:Gem::Dependency
81
+ name: rdoc
82
+ requirement: &2153558300 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: '3.11'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2153558300
91
+ description: Spinto uses Jekyll and plugins to build static sites, this gem provides
92
+ the spinto-site builder.
93
+ email: matt.beale@madhatted.com
94
+ executables:
95
+ - spinto-site
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - Gemfile
100
+ - Rakefile
101
+ - _plugins/coffeescript_converter.rb
102
+ - _plugins/include_tree.rb
103
+ - _plugins/include_watcher.rb
104
+ - _plugins/less_converter.rb
105
+ - _plugins/sass_converter.rb
106
+ - _plugins/scss_converter.rb
107
+ - bin/spinto-site
108
+ - lib/spinto.rb
109
+ - spinto.gemspec
110
+ homepage: http://github.com/mixonic/spinto
111
+ licenses: []
112
+ post_install_message:
113
+ rdoc_options:
114
+ - --charset=UTF-8
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ segments:
124
+ - 0
125
+ hash: -379297724553837064
126
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubyforge_project:
134
+ rubygems_version: 1.8.15
135
+ signing_key:
136
+ specification_version: 2
137
+ summary: The site generator used at spintoapp.com
138
+ test_files: []