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 ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in gitstuff-preview.gemspec
4
+ gemspec
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"
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'thin'
4
+ require 'gitstuff-preview'
5
+
6
+ args = ARGV + ["start", "-R", File.join(File.dirname(__FILE__),'..','config.ru')]
7
+ Thin::Runner.new(args).run!
data/config.ru ADDED
@@ -0,0 +1,2 @@
1
+ require File.join(File.dirname(__FILE__), "/lib/gitstuff-preview")
2
+ run Server
@@ -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
@@ -0,0 +1,5 @@
1
+ module Gitstuff
2
+ module Preview
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,2 @@
1
+ require "gitstuff-preview/version"
2
+ require "gitstuff-preview/server"
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
+