gitdoc 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +7 -4
- data/TODO +2 -1
- data/VERSION +1 -1
- data/bin/gitdoc +1 -1
- data/gitdoc.rb +64 -13
- metadata +56 -8
data/Rakefile
CHANGED
@@ -7,10 +7,13 @@ begin
|
|
7
7
|
gs.email = "myles@myles.id.au"
|
8
8
|
gs.authors = ["Myles Byrne"]
|
9
9
|
gs.require_path = '.'
|
10
|
-
gs.add_dependency('rdiscount', '
|
11
|
-
gs.add_dependency('haml', '
|
12
|
-
gs.add_dependency('sinatra', '
|
13
|
-
gs.add_dependency('unicorn','
|
10
|
+
gs.add_dependency('rdiscount', '~>1.5.8')
|
11
|
+
gs.add_dependency('haml', '~>2.2.22')
|
12
|
+
gs.add_dependency('sinatra', '~>1.0')
|
13
|
+
gs.add_dependency('unicorn','~>3.1.0')
|
14
|
+
gs.add_dependency('coffee-script', '~>2.1.1')
|
15
|
+
gs.add_dependency('therubyracer', '~>0.8.0') # v8 implementation
|
16
|
+
gs.add_dependency('json','~>1.4.6') # dependency of coffee-script
|
14
17
|
end
|
15
18
|
Jeweler::GemcutterTasks.new
|
16
19
|
rescue LoadError
|
data/TODO
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
* Open web browser after server launches
|
2
2
|
* Less http logging
|
3
|
-
* TomDoc the public API
|
4
3
|
* A :scriptable option that supports script embedding and an /index.json call
|
5
4
|
* Don't run the server on a port that's in use
|
5
|
+
* Support ///cs syntax
|
6
|
+
* running `gitdoc` launches gitdoc in current directory
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.2.0
|
data/bin/gitdoc
CHANGED
data/gitdoc.rb
CHANGED
@@ -2,32 +2,54 @@ require 'sinatra'
|
|
2
2
|
require 'rdiscount'
|
3
3
|
require 'haml'
|
4
4
|
require 'sass'
|
5
|
-
|
5
|
+
|
6
|
+
## The Public Interface
|
7
|
+
#
|
8
|
+
# To run gitdoc in a directory create a rackup file like this:
|
9
|
+
#
|
10
|
+
# require 'gitdoc'
|
11
|
+
# GitDoc!
|
12
|
+
#
|
13
|
+
# Boom. There are also some optional arguments:
|
14
|
+
#
|
15
|
+
# require 'gitdoc'
|
16
|
+
# GitDoc! "Title to use",
|
17
|
+
# :header => '<!-- this will appear before the </head> tag -->'
|
18
|
+
# # This turns off GitDoc's default css, you still get reset and code
|
19
|
+
# # highligting styles
|
20
|
+
# :default_styles => false
|
6
21
|
|
7
22
|
def GitDoc! title = nil, opts = {}
|
8
23
|
dir = File.dirname(File.expand_path(caller.first.split(':').first))
|
9
24
|
set :dir, dir
|
10
|
-
set :styles, dir + '/styles.sass'
|
11
25
|
set :title, title
|
12
26
|
set :header, opts[:header]
|
13
27
|
set :default_styles, opts[:default_styles] != false
|
14
28
|
run Sinatra::Application
|
15
29
|
end
|
16
30
|
|
31
|
+
## The Implementation
|
32
|
+
|
17
33
|
set :haml, {:format => :html5}
|
18
34
|
set :views, lambda { root }
|
19
35
|
disable :logging # the server always writes its own log anyway
|
20
36
|
|
21
37
|
helpers do
|
22
38
|
|
23
|
-
|
39
|
+
### Document Compiler
|
40
|
+
|
41
|
+
require 'digest/sha1'
|
42
|
+
|
43
|
+
# Compiles a GitDoc document (basically markdown with code highlighting)
|
44
|
+
# into html
|
45
|
+
def gd source
|
24
46
|
source_without_code = extract_code source
|
25
47
|
html = RDiscount.new(source_without_code).to_html
|
26
48
|
html = highlight_code html
|
27
49
|
newline_entities_for_tag :pre, html
|
28
50
|
end
|
29
51
|
|
30
|
-
# extract_code and highlight_code
|
52
|
+
# `extract_code` and `highlight_code` based on:
|
31
53
|
# https://github.com/github/gollum/blob/0b8bc597a7e9495b272e5dbb743827f56ccd2fe6/lib/gollum/markup.rb#L367
|
32
54
|
|
33
55
|
# Replaces all code fragments with a SHA1 hash. Stores the original fragment
|
@@ -70,29 +92,58 @@ helpers do
|
|
70
92
|
end
|
71
93
|
end
|
72
94
|
|
95
|
+
### Coffee Compiler
|
96
|
+
|
97
|
+
require 'v8'
|
98
|
+
require 'coffee-script'
|
99
|
+
|
100
|
+
def coffee source
|
101
|
+
CoffeeScript.compile source
|
102
|
+
end
|
103
|
+
|
73
104
|
end
|
74
105
|
|
106
|
+
# If the path doesn't have a file extension and a matching GitDoc document
|
107
|
+
# exists then it is compiled and rendered
|
75
108
|
get '/*' do |name|
|
76
109
|
name = 'index' if name.empty?
|
77
110
|
file = File.join(settings.dir + '/' + name + '.md')
|
78
111
|
pass unless File.exist? file
|
79
|
-
@doc =
|
112
|
+
@doc = gd File.read(file)
|
80
113
|
haml :doc
|
81
114
|
end
|
82
115
|
|
83
|
-
|
84
|
-
file = File.join(settings.dir + '/' + name + '.' + ext)
|
85
|
-
pass unless File.exist? file
|
86
|
-
send_file file
|
87
|
-
end
|
88
|
-
|
116
|
+
# GitDoc document styles
|
89
117
|
get '/.css' do
|
90
118
|
content_type :css
|
91
119
|
styles = sass(:reset)
|
92
120
|
styles += File.read(settings.root + '/highlight.css')
|
93
121
|
styles += sass(:default) if settings.default_styles?
|
94
|
-
|
122
|
+
custom_styles = settings.dir + '/styles.sass'
|
123
|
+
styles += sass(File.read(custom_styles)) if File.exist? custom_styles
|
95
124
|
styles
|
96
125
|
end
|
97
126
|
|
98
|
-
|
127
|
+
# If the corresponding .coffee file exists it is compiled and rendered
|
128
|
+
get '*.coffee.js' do |name|
|
129
|
+
file = settings.dir + '/' + name + '.coffee'
|
130
|
+
pass unless File.exist? file
|
131
|
+
coffee File.read file
|
132
|
+
end
|
133
|
+
|
134
|
+
# If the path matches any file in the directory then send that down
|
135
|
+
get '/*.*' do |name,ext|
|
136
|
+
file = File.join(settings.dir + '/' + name + '.' + ext)
|
137
|
+
pass unless File.exist? file
|
138
|
+
send_file file
|
139
|
+
end
|
140
|
+
|
141
|
+
not_found do
|
142
|
+
version = File.read(File.dirname(__FILE__)+'/VERSION')
|
143
|
+
@doc = gd(
|
144
|
+
"# Not Found"+
|
145
|
+
"\n\n"+
|
146
|
+
"GitDoc version #{version}"
|
147
|
+
)
|
148
|
+
haml :doc
|
149
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitdoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 3
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 3.
|
10
|
+
version: 3.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Myles Byrne
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-23 00:00:00 +11:00
|
19
19
|
default_executable: gitdoc
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
hash: 19
|
30
30
|
segments:
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
hash: 43
|
46
46
|
segments:
|
@@ -56,7 +56,7 @@ dependencies:
|
|
56
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
hash: 15
|
62
62
|
segments:
|
@@ -71,7 +71,7 @@ dependencies:
|
|
71
71
|
requirement: &id004 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ~>
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
hash: 3
|
77
77
|
segments:
|
@@ -81,6 +81,54 @@ dependencies:
|
|
81
81
|
version: 3.1.0
|
82
82
|
type: :runtime
|
83
83
|
version_requirements: *id004
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: coffee-script
|
86
|
+
prerelease: false
|
87
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ~>
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
hash: 9
|
93
|
+
segments:
|
94
|
+
- 2
|
95
|
+
- 1
|
96
|
+
- 1
|
97
|
+
version: 2.1.1
|
98
|
+
type: :runtime
|
99
|
+
version_requirements: *id005
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: therubyracer
|
102
|
+
prerelease: false
|
103
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
105
|
+
requirements:
|
106
|
+
- - ~>
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
hash: 63
|
109
|
+
segments:
|
110
|
+
- 0
|
111
|
+
- 8
|
112
|
+
- 0
|
113
|
+
version: 0.8.0
|
114
|
+
type: :runtime
|
115
|
+
version_requirements: *id006
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
name: json
|
118
|
+
prerelease: false
|
119
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
hash: 11
|
125
|
+
segments:
|
126
|
+
- 1
|
127
|
+
- 4
|
128
|
+
- 6
|
129
|
+
version: 1.4.6
|
130
|
+
type: :runtime
|
131
|
+
version_requirements: *id007
|
84
132
|
description:
|
85
133
|
email: myles@myles.id.au
|
86
134
|
executables:
|