gitdoc 3.1.0 → 3.2.0
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/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:
|