gitstuff-preview 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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +36 -0
- data/README.markdown +0 -0
- data/Rakefile +1 -0
- data/bin/gitstuff-preview +7 -0
- data/config.ru +2 -0
- data/gitstuff-preview.gemspec +31 -0
- data/lib/gitstuff-preview/server.rb +93 -0
- data/lib/gitstuff-preview/version.rb +5 -0
- data/lib/gitstuff-preview.rb +2 -0
- metadata +145 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
gitstuff-preview (0.0.1)
|
5
|
+
hashie
|
6
|
+
liquid
|
7
|
+
rdiscount
|
8
|
+
sinatra
|
9
|
+
thin
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: http://rubygems.org/
|
13
|
+
specs:
|
14
|
+
daemons (1.1.4)
|
15
|
+
eventmachine (0.12.10)
|
16
|
+
hashie (1.2.0)
|
17
|
+
liquid (2.3.0)
|
18
|
+
rack (1.3.5)
|
19
|
+
rack-protection (1.1.4)
|
20
|
+
rack
|
21
|
+
rdiscount (1.6.8)
|
22
|
+
sinatra (1.3.1)
|
23
|
+
rack (>= 1.3.4, ~> 1.3)
|
24
|
+
rack-protection (>= 1.1.2, ~> 1.1)
|
25
|
+
tilt (>= 1.3.3, ~> 1.3)
|
26
|
+
thin (1.3.1)
|
27
|
+
daemons (>= 1.0.9)
|
28
|
+
eventmachine (>= 0.12.6)
|
29
|
+
rack (>= 1.0.0)
|
30
|
+
tilt (1.3.3)
|
31
|
+
|
32
|
+
PLATFORMS
|
33
|
+
ruby
|
34
|
+
|
35
|
+
DEPENDENCIES
|
36
|
+
gitstuff-preview!
|
data/README.markdown
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/config.ru
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "gitstuff-preview/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "gitstuff-preview"
|
7
|
+
s.version = Gitstuff::Preview::VERSION
|
8
|
+
s.authors = ["Jesse Kriss"]
|
9
|
+
s.email = ["jesse@jklabs.net"]
|
10
|
+
s.homepage = "http://github.com/jkriss/gitstuff-preview"
|
11
|
+
s.summary = %q{Handy gem for previewing Gitstuff sites}
|
12
|
+
s.description = %q{gitstuff-preview runs a local web server to preview Gitstuff templates}
|
13
|
+
|
14
|
+
s.rubyforge_project = "gitstuff-preview"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
# s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
# s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
# s.files = `ls`.split("\n")
|
20
|
+
s.executables = ["gitstuff-preview"]
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
|
23
|
+
# specify any dependencies here; for example:
|
24
|
+
# s.add_development_dependency "rspec"
|
25
|
+
# s.add_runtime_dependency "rest-client"
|
26
|
+
s.add_runtime_dependency "sinatra"
|
27
|
+
s.add_runtime_dependency "liquid"
|
28
|
+
s.add_runtime_dependency "rdiscount"
|
29
|
+
s.add_runtime_dependency "hashie"
|
30
|
+
s.add_runtime_dependency "thin"
|
31
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
ENV['RACK_ENV'] ||= 'production'
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'sinatra/base'
|
5
|
+
require 'hashie'
|
6
|
+
require 'liquid'
|
7
|
+
require 'rdiscount'
|
8
|
+
|
9
|
+
BASE_PATH = ENV['BASE_PATH'] || "./"
|
10
|
+
|
11
|
+
class Server < Sinatra::Base
|
12
|
+
|
13
|
+
def render_index(context={})
|
14
|
+
posts_html = ""
|
15
|
+
Dir["#{BASE_PATH}/posts/*.yml"][0,10].each do |file|
|
16
|
+
slug = File.basename(file, ".yml")
|
17
|
+
post = get_post_content(slug, file)
|
18
|
+
post[:url] = "/#{slug}"
|
19
|
+
posts_html += render_raw_post(post, context)
|
20
|
+
end
|
21
|
+
render_page(posts_html, context)
|
22
|
+
end
|
23
|
+
|
24
|
+
def render_post(slug, context={})
|
25
|
+
post_html = render_raw_post(get_post_content(slug), context)
|
26
|
+
render_page(post_html, context.merge(:single_post => true))
|
27
|
+
end
|
28
|
+
|
29
|
+
def render_raw_post(post, context={})
|
30
|
+
post.content = RDiscount.new(post.content).to_html
|
31
|
+
template = Liquid::Template.parse(File.read File.join(BASE_PATH, 'layouts', 'post.html.liquid'))
|
32
|
+
template.render Hashie::Mash.new(context.merge(post.to_hash))
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_post_content(slug, path=nil)
|
36
|
+
path ||= File.join(BASE_PATH, 'posts', slug) + ".yml"
|
37
|
+
begin
|
38
|
+
post_data = Hashie::Mash.new YAML.load_file(path)
|
39
|
+
post_data['content'] = File.read(path).sub /---.*---\n/m, ''
|
40
|
+
post_data
|
41
|
+
rescue => e
|
42
|
+
puts "!! Error loading #{path}"
|
43
|
+
# raise e
|
44
|
+
Hashie::Mash.new :content => "Error in #{slug}.yml: #{e.message}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def render_page(content, context={})
|
49
|
+
layout = Liquid::Template.parse(File.read File.join(BASE_PATH, 'layouts', 'page.html.liquid'))
|
50
|
+
layout.render Hashie::Mash.new context.merge(:content => content)
|
51
|
+
end
|
52
|
+
|
53
|
+
def search_form
|
54
|
+
'<form action="/search" method="get"><input class="search" type="text" name="q"/></form>'
|
55
|
+
end
|
56
|
+
|
57
|
+
def basic_metadata
|
58
|
+
{
|
59
|
+
:root_path => '',
|
60
|
+
:asset_path => '/assets',
|
61
|
+
:search_form => search_form
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
def default_metadata
|
66
|
+
hash = {
|
67
|
+
:author => { :name => "Author Name", :email => "author@example.com" },
|
68
|
+
:created_at => Time.now,
|
69
|
+
:modified_at => Time.now,
|
70
|
+
:previous_page => '#',
|
71
|
+
:next_page => '#',
|
72
|
+
}
|
73
|
+
hash['gravatar'] = "http://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(hash[:author][:email])}"
|
74
|
+
hash.merge(basic_metadata)
|
75
|
+
end
|
76
|
+
|
77
|
+
get '/' do
|
78
|
+
render_index default_metadata
|
79
|
+
end
|
80
|
+
|
81
|
+
get '/assets/*' do
|
82
|
+
asset_path = params[:splat].join "/"
|
83
|
+
send_file "#{BASE_PATH}/assets/#{asset_path}"
|
84
|
+
end
|
85
|
+
|
86
|
+
get '/search' do
|
87
|
+
render_page '', basic_metadata.merge({ :no_results => true, :query => params[:q] || 'some search query' })
|
88
|
+
end
|
89
|
+
|
90
|
+
get '/:slug' do
|
91
|
+
render_post params[:slug], default_metadata
|
92
|
+
end
|
93
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gitstuff-preview
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Jesse Kriss
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-11-26 00:00:00 Z
|
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
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: liquid
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rdiscount
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: hashie
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
type: :runtime
|
75
|
+
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: thin
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
type: :runtime
|
89
|
+
version_requirements: *id005
|
90
|
+
description: gitstuff-preview runs a local web server to preview Gitstuff templates
|
91
|
+
email:
|
92
|
+
- jesse@jklabs.net
|
93
|
+
executables:
|
94
|
+
- gitstuff-preview
|
95
|
+
extensions: []
|
96
|
+
|
97
|
+
extra_rdoc_files: []
|
98
|
+
|
99
|
+
files:
|
100
|
+
- .gitignore
|
101
|
+
- Gemfile
|
102
|
+
- Gemfile.lock
|
103
|
+
- README.markdown
|
104
|
+
- Rakefile
|
105
|
+
- bin/gitstuff-preview
|
106
|
+
- config.ru
|
107
|
+
- gitstuff-preview.gemspec
|
108
|
+
- lib/gitstuff-preview.rb
|
109
|
+
- lib/gitstuff-preview/server.rb
|
110
|
+
- lib/gitstuff-preview/version.rb
|
111
|
+
homepage: http://github.com/jkriss/gitstuff-preview
|
112
|
+
licenses: []
|
113
|
+
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options: []
|
116
|
+
|
117
|
+
require_paths:
|
118
|
+
- lib
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
hash: 3
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
version: "0"
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
hash: 3
|
134
|
+
segments:
|
135
|
+
- 0
|
136
|
+
version: "0"
|
137
|
+
requirements: []
|
138
|
+
|
139
|
+
rubyforge_project: gitstuff-preview
|
140
|
+
rubygems_version: 1.8.11
|
141
|
+
signing_key:
|
142
|
+
specification_version: 3
|
143
|
+
summary: Handy gem for previewing Gitstuff sites
|
144
|
+
test_files: []
|
145
|
+
|