gaze 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/gaze +118 -0
  2. metadata +76 -0
data/bin/gaze ADDED
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env ruby
2
+ require 'sinatra'
3
+
4
+ set :run, true
5
+
6
+ configure do
7
+ # Format options
8
+ {:Markdown => 'maruku', :Textile => 'RedCloth'}.each do |name, gem|
9
+ begin
10
+ require "#{gem}"
11
+ rescue LoadError => e
12
+ puts <<-MSG
13
+ To format #{name} as well:
14
+ $ gem install #{gem}
15
+ It is not needed though.
16
+ MSG
17
+ end
18
+ end
19
+
20
+ Dir.chdir ARGV[0] if ARGV[0]
21
+ end
22
+
23
+ helpers do
24
+ def title
25
+ File.basename(Dir.getwd).gsub(/_/, ' ')
26
+ end
27
+
28
+ def pages
29
+ (Dir["*.md"] + Dir["*.markdown"] + Dir["*.textile"]).sort
30
+ end
31
+ end
32
+
33
+ get '/' do
34
+ redirect '/pages/'
35
+ end
36
+
37
+ get '/pages/' do
38
+ # If there is only one file present, serve that instantly.
39
+ redirect "#{pages.first}" if pages.size == 1
40
+
41
+ haml :pages
42
+ end
43
+
44
+ get '/pages/:page.:ext' do
45
+ begin
46
+ filename = "#{params[:page]}.#{params[:ext]}"
47
+ File.open(filename) do |file|
48
+ @output = case params[:ext]
49
+ when "markdown", "md"
50
+ Maruku.new(file.read).to_html
51
+ when "textile"
52
+ RedCloth.new(file.read).to_html
53
+ else
54
+ file.read
55
+ end
56
+ end
57
+ haml :page
58
+ rescue
59
+ raise Sinatra::NotFound
60
+ end
61
+ end
62
+
63
+ get '/stylesheet.css' do
64
+ content_type 'text/css', :charset => 'utf-8'
65
+ sass :stylesheet
66
+ end
67
+
68
+ __END__
69
+
70
+ @@layout
71
+ !!! XML
72
+ !!!
73
+ %html
74
+ %head
75
+ %link{:rel => 'stylesheet', :href => '/stylesheet.css', :type => 'text/css'}
76
+ %meta{'http-equiv' => "Content-Type", :content => "text/html; charset=utf-8"}/
77
+
78
+ %body
79
+ #container= yield
80
+ #footer
81
+ powered by
82
+ %a{:href => 'http://github.com/ichverstehe/gaze'} gaze
83
+
84
+ @@pages
85
+ %h1= title
86
+ %ul
87
+ - pages.each do |page|
88
+ %li
89
+ %a{:href => "/pages/#{page}"}= page
90
+
91
+ @@page
92
+ %strong
93
+ %a{:href => '/pages/'}= title
94
+ - pages.each do |page|
95
+ %a{:href => "/pages/#{page}"}= page
96
+ %hr
97
+ ~ @output
98
+
99
+ @@stylesheet
100
+ body
101
+ :font-family "Lucida Grande", sans-serif
102
+ :font-size 12px
103
+ :background #f1f1f1
104
+ h1,h2,h3,h4,h5,h6
105
+ :font-family "Helvetica", sans-serif
106
+ #container
107
+ :width 520px
108
+ :margin 30px auto 3px
109
+ :padding 20px
110
+ :background #fff
111
+ :border 5px solid #ccc
112
+ :-moz-border-radius 10px
113
+ :-webkit-border-radius 10px
114
+ #footer
115
+ :text-align center
116
+ :color #888
117
+ a
118
+ :color #888
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gaze
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 4
9
+ version: 0.1.4
10
+ platform: ruby
11
+ authors:
12
+ - Harry Vangberg
13
+ - Mikkel Malmberg
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-03-10 00:00:00 +01:00
19
+ default_executable: gaze
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: sinatra
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 3
31
+ - 2
32
+ version: 0.3.2
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description:
36
+ email: ichverstehe@gmail.com
37
+ executables:
38
+ - gaze
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - bin/gaze
45
+ has_rdoc: true
46
+ homepage: http://github.com/ichverstehe/gaze
47
+ licenses: []
48
+
49
+ post_install_message:
50
+ rdoc_options: []
51
+
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ segments:
66
+ - 0
67
+ version: "0"
68
+ requirements: []
69
+
70
+ rubyforge_project:
71
+ rubygems_version: 1.3.6
72
+ signing_key:
73
+ specification_version: 2
74
+ summary: Serves up a folder of Markdown or Textile formatted files via Sinatra.
75
+ test_files: []
76
+