pith 0.0.12 → 0.1.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/bin/pith +71 -62
- data/lib/pith/input/abstract.rb +1 -1
- data/lib/pith/input/template.rb +3 -3
- data/lib/pith/project.rb +1 -1
- data/lib/pith/render_context.rb +1 -1
- data/lib/pith/version.rb +1 -1
- metadata +28 -72
- data/sample/_out/blah/deblah.txt +0 -1
- data/sample/_out/features/stuff.html +0 -1
data/bin/pith
CHANGED
@@ -3,87 +3,96 @@
|
|
3
3
|
$: << File.expand_path("../../lib", __FILE__)
|
4
4
|
|
5
5
|
require "rubygems"
|
6
|
-
require "
|
6
|
+
require "clamp"
|
7
7
|
require "pathname"
|
8
8
|
require "pith/version"
|
9
9
|
require "thin"
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
$port = 4321
|
14
|
-
|
15
|
-
BANNER = <<EOF
|
16
|
-
usage: pith [OPTIONS] [COMMAND]
|
17
|
-
|
18
|
-
Commands: (default: "build")
|
19
|
-
|
20
|
-
build Generate the website (into OUTPUT_DIR)
|
21
|
-
watch Monitor INPUT_DIR, and incrementally rebuild OUTPUT_DIR
|
22
|
-
serve Serve the generated website at "http://localhost:#{$port}"
|
11
|
+
require "pith/console_logger"
|
12
|
+
require "pith/project"
|
23
13
|
|
24
|
-
|
14
|
+
class PithCommand < Clamp::Command
|
25
15
|
|
26
|
-
|
27
|
-
|
28
|
-
opts.version = Pith::VERSION
|
29
|
-
opts.separator " Options:"
|
30
|
-
opts.on("-i", "--input INPUT_DIR", %[Input directory (default: ".")]) do |dir|
|
31
|
-
$input_dir = Pathname(dir)
|
32
|
-
end
|
33
|
-
opts.on("-o", "--output OUTPUT_DIR", %[Output directory (default: "INPUT_DIR/_out")]) do |dir|
|
34
|
-
$output_dir = Pathname(dir)
|
16
|
+
option ["-i", "--input"], "INPUT_DIR", "Input directory", :attribute_name => :input_dir, :default => "." do |dir|
|
17
|
+
Pathname(dir)
|
35
18
|
end
|
36
|
-
|
37
|
-
|
19
|
+
|
20
|
+
option ["-o", "--output"], "OUTPUT_DIR", "Output directory", :attribute_name => :output_dir, :default => "INPUT_DIR/_out" do |dir|
|
21
|
+
Pathname(dir)
|
38
22
|
end
|
39
|
-
|
40
|
-
|
23
|
+
|
24
|
+
option ["-n", "--interval"], "INTERVAL", "Rebuild interval", :default => 2 do |n|
|
25
|
+
Integer(n)
|
41
26
|
end
|
42
|
-
|
43
|
-
|
44
|
-
|
27
|
+
|
28
|
+
option ["-p", "--port"], "PORT", "Web-server port", :default => 4321 do |n|
|
29
|
+
Integer(n)
|
45
30
|
end
|
46
|
-
end.parse!
|
47
31
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
32
|
+
option "--version", :flag, "Show version" do
|
33
|
+
puts Pith::VERSION
|
34
|
+
exit(0)
|
35
|
+
end
|
53
36
|
|
54
|
-
|
55
|
-
|
56
|
-
|
37
|
+
subcommand "build", "Generate the website (into OUTPUT_DIR)" do
|
38
|
+
def execute
|
39
|
+
build
|
40
|
+
end
|
41
|
+
end
|
57
42
|
|
58
|
-
|
43
|
+
subcommand "watch", "Monitor INPUT_DIR; re-generate as required" do
|
44
|
+
def execute
|
45
|
+
watch
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
subcommand "serve", "Serve the generated website" do
|
50
|
+
def execute
|
51
|
+
build
|
52
|
+
Thread.new { watch }
|
53
|
+
serve
|
54
|
+
end
|
55
|
+
end
|
59
56
|
|
60
|
-
|
61
|
-
require "pith/project"
|
57
|
+
protected
|
62
58
|
|
63
|
-
|
64
|
-
|
59
|
+
def default_input_dir
|
60
|
+
Pathname(".")
|
61
|
+
end
|
65
62
|
|
66
|
-
def
|
67
|
-
|
68
|
-
end
|
63
|
+
def default_output_dir
|
64
|
+
input_dir + "_out"
|
65
|
+
end
|
66
|
+
|
67
|
+
def project
|
68
|
+
unless @project
|
69
|
+
pith_dir = input_dir + "_pith"
|
70
|
+
unless pith_dir.directory?
|
71
|
+
signal_usage_error %(No "#{pith_dir}" directory ... this doesn't look right!)
|
72
|
+
end
|
73
|
+
puts %{Generating to "#{output_dir}"}
|
74
|
+
@project = Pith::Project.new(:input_dir => input_dir, :output_dir => output_dir)
|
75
|
+
@project.logger = Pith::ConsoleLogger.new
|
76
|
+
end
|
77
|
+
@project
|
78
|
+
end
|
69
79
|
|
70
|
-
def
|
71
|
-
|
72
|
-
|
73
|
-
end
|
80
|
+
def build
|
81
|
+
project.build
|
82
|
+
end
|
74
83
|
|
75
|
-
def
|
84
|
+
def watch
|
85
|
+
require "pith/watcher"
|
86
|
+
Pith::Watcher.new(project, :interval => interval).call
|
87
|
+
end
|
76
88
|
|
77
|
-
|
78
|
-
|
89
|
+
def serve
|
90
|
+
require "pith/server"
|
91
|
+
server = Pith::Server.new(project)
|
92
|
+
puts %{>>> Now taking the Pith at "http://localhost:#{port}"}
|
93
|
+
Rack::Handler.get("thin").run(server, :Port => port)
|
94
|
+
end
|
79
95
|
|
80
|
-
build
|
81
|
-
Thread.new { watch }
|
82
|
-
|
83
|
-
puts %{>>> Now taking the Pith at "http://localhost:#{$port}"}
|
84
|
-
Rack::Handler.get("thin").run(server, :Port => $port)
|
85
|
-
|
86
96
|
end
|
87
97
|
|
88
|
-
|
89
|
-
self.send(action)
|
98
|
+
PithCommand.run
|
data/lib/pith/input/abstract.rb
CHANGED
data/lib/pith/input/template.rb
CHANGED
@@ -14,13 +14,13 @@ module Pith
|
|
14
14
|
class Template < Abstract
|
15
15
|
|
16
16
|
def self.can_handle?(path)
|
17
|
-
path.
|
17
|
+
path.to_s =~ /\.([^.]+)$/ && Tilt.registered?($1)
|
18
18
|
end
|
19
19
|
|
20
20
|
def initialize(project, path)
|
21
21
|
raise(ArgumentError, "#{path} is not a template") unless Template.can_handle?(path)
|
22
22
|
super(project, path)
|
23
|
-
path.
|
23
|
+
path.to_s =~ /^(.+)\.(.+)$/ || raise("huh?")
|
24
24
|
@output_path = Pathname($1)
|
25
25
|
@type = $2
|
26
26
|
end
|
@@ -125,7 +125,7 @@ module Pith
|
|
125
125
|
else
|
126
126
|
input.rewind
|
127
127
|
end
|
128
|
-
@tilt_template = Tilt.new(file, input.lineno + 1) { input.read }
|
128
|
+
@tilt_template = Tilt.new(file.to_s, input.lineno + 1) { input.read }
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
data/lib/pith/project.rb
CHANGED
data/lib/pith/render_context.rb
CHANGED
@@ -53,7 +53,7 @@ module Pith
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def relative_url_to(target_path)
|
56
|
-
url = target_path.relative_path_from(page.path.parent).
|
56
|
+
url = target_path.relative_path_from(page.path.parent).to_s
|
57
57
|
url = url.sub(/index\.html$/, "") if project.assume_directory_index
|
58
58
|
url = url.sub(/\.html$/, "") if project.assume_content_negotiation
|
59
59
|
url = "./" if url.empty?
|
data/lib/pith/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pith
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 12
|
10
|
-
version: 0.0.12
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.1
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Mike Williams
|
@@ -15,8 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date:
|
19
|
-
default_executable: pith
|
13
|
+
date: 2011-05-08 00:00:00 Z
|
20
14
|
dependencies:
|
21
15
|
- !ruby/object:Gem::Dependency
|
22
16
|
name: tilt
|
@@ -26,10 +20,6 @@ dependencies:
|
|
26
20
|
requirements:
|
27
21
|
- - ~>
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 13
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 1
|
33
23
|
version: "1.1"
|
34
24
|
type: :runtime
|
35
25
|
version_requirements: *id001
|
@@ -41,11 +31,6 @@ dependencies:
|
|
41
31
|
requirements:
|
42
32
|
- - ~>
|
43
33
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 21
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 0
|
48
|
-
- 1
|
49
34
|
version: 1.0.1
|
50
35
|
type: :runtime
|
51
36
|
version_requirements: *id002
|
@@ -57,11 +42,6 @@ dependencies:
|
|
57
42
|
requirements:
|
58
43
|
- - ~>
|
59
44
|
- !ruby/object:Gem::Version
|
60
|
-
hash: 29
|
61
|
-
segments:
|
62
|
-
- 1
|
63
|
-
- 2
|
64
|
-
- 1
|
65
45
|
version: 1.2.1
|
66
46
|
type: :runtime
|
67
47
|
version_requirements: *id003
|
@@ -73,102 +53,86 @@ dependencies:
|
|
73
53
|
requirements:
|
74
54
|
- - ~>
|
75
55
|
- !ruby/object:Gem::Version
|
76
|
-
hash: 17
|
77
|
-
segments:
|
78
|
-
- 1
|
79
|
-
- 2
|
80
|
-
- 7
|
81
56
|
version: 1.2.7
|
82
57
|
type: :runtime
|
83
58
|
version_requirements: *id004
|
84
59
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
60
|
+
name: clamp
|
86
61
|
prerelease: false
|
87
62
|
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.1.7
|
68
|
+
type: :runtime
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
88
74
|
none: false
|
89
75
|
requirements:
|
90
76
|
- - ">="
|
91
77
|
- !ruby/object:Gem::Version
|
92
|
-
hash: 3
|
93
|
-
segments:
|
94
|
-
- 0
|
95
78
|
version: "0"
|
96
79
|
type: :development
|
97
|
-
version_requirements: *
|
80
|
+
version_requirements: *id006
|
98
81
|
- !ruby/object:Gem::Dependency
|
99
82
|
name: rspec
|
100
83
|
prerelease: false
|
101
|
-
requirement: &
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
102
85
|
none: false
|
103
86
|
requirements:
|
104
87
|
- - ~>
|
105
88
|
- !ruby/object:Gem::Version
|
106
|
-
hash: 13
|
107
|
-
segments:
|
108
|
-
- 1
|
109
|
-
- 2
|
110
|
-
- 9
|
111
89
|
version: 1.2.9
|
112
90
|
type: :development
|
113
|
-
version_requirements: *
|
91
|
+
version_requirements: *id007
|
114
92
|
- !ruby/object:Gem::Dependency
|
115
93
|
name: cucumber
|
116
94
|
prerelease: false
|
117
|
-
requirement: &
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
118
96
|
none: false
|
119
97
|
requirements:
|
120
98
|
- - ~>
|
121
99
|
- !ruby/object:Gem::Version
|
122
|
-
hash: 57
|
123
|
-
segments:
|
124
|
-
- 0
|
125
|
-
- 8
|
126
|
-
- 3
|
127
100
|
version: 0.8.3
|
128
101
|
type: :development
|
129
|
-
version_requirements: *
|
102
|
+
version_requirements: *id008
|
130
103
|
- !ruby/object:Gem::Dependency
|
131
104
|
name: haml
|
132
105
|
prerelease: false
|
133
|
-
requirement: &
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
134
107
|
none: false
|
135
108
|
requirements:
|
136
109
|
- - ">="
|
137
110
|
- !ruby/object:Gem::Version
|
138
|
-
hash: 3
|
139
|
-
segments:
|
140
|
-
- 0
|
141
111
|
version: "0"
|
142
112
|
type: :development
|
143
|
-
version_requirements: *
|
113
|
+
version_requirements: *id009
|
144
114
|
- !ruby/object:Gem::Dependency
|
145
115
|
name: RedCloth
|
146
116
|
prerelease: false
|
147
|
-
requirement: &
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
148
118
|
none: false
|
149
119
|
requirements:
|
150
120
|
- - ">="
|
151
121
|
- !ruby/object:Gem::Version
|
152
|
-
hash: 3
|
153
|
-
segments:
|
154
|
-
- 0
|
155
122
|
version: "0"
|
156
123
|
type: :development
|
157
|
-
version_requirements: *
|
124
|
+
version_requirements: *id010
|
158
125
|
- !ruby/object:Gem::Dependency
|
159
126
|
name: rdiscount
|
160
127
|
prerelease: false
|
161
|
-
requirement: &
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
162
129
|
none: false
|
163
130
|
requirements:
|
164
131
|
- - ">="
|
165
132
|
- !ruby/object:Gem::Version
|
166
|
-
hash: 3
|
167
|
-
segments:
|
168
|
-
- 0
|
169
133
|
version: "0"
|
170
134
|
type: :development
|
171
|
-
version_requirements: *
|
135
|
+
version_requirements: *id011
|
172
136
|
description: |
|
173
137
|
Pith builds static websites, using markup/template languages including Haml, Sass, ERb, Liquid, Markdown and Textile.
|
174
138
|
|
@@ -217,8 +181,6 @@ files:
|
|
217
181
|
- lib/pith.rb
|
218
182
|
- lib/pith.rb~
|
219
183
|
- sample/_layouts/standard.haml
|
220
|
-
- sample/_out/blah/deblah.txt
|
221
|
-
- sample/_out/features/stuff.html
|
222
184
|
- sample/_out/index.html
|
223
185
|
- sample/_out/stylesheets/app.css
|
224
186
|
- sample/index.html.haml
|
@@ -269,7 +231,6 @@ files:
|
|
269
231
|
- features/verbatim.feature~
|
270
232
|
- cucumber.yml
|
271
233
|
- bin/pith
|
272
|
-
has_rdoc: true
|
273
234
|
homepage: http://github.com/mdub/pith
|
274
235
|
licenses: []
|
275
236
|
|
@@ -283,23 +244,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
283
244
|
requirements:
|
284
245
|
- - ">="
|
285
246
|
- !ruby/object:Gem::Version
|
286
|
-
hash: 3
|
287
|
-
segments:
|
288
|
-
- 0
|
289
247
|
version: "0"
|
290
248
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
291
249
|
none: false
|
292
250
|
requirements:
|
293
251
|
- - ">="
|
294
252
|
- !ruby/object:Gem::Version
|
295
|
-
hash: 3
|
296
|
-
segments:
|
297
|
-
- 0
|
298
253
|
version: "0"
|
299
254
|
requirements: []
|
300
255
|
|
301
256
|
rubyforge_project:
|
302
|
-
rubygems_version: 1.
|
257
|
+
rubygems_version: 1.7.2
|
303
258
|
signing_key:
|
304
259
|
specification_version: 3
|
305
260
|
summary: A static website generator
|
@@ -348,3 +303,4 @@ test_files:
|
|
348
303
|
- features/textile.feature~
|
349
304
|
- features/verbatim.feature~
|
350
305
|
- cucumber.yml
|
306
|
+
has_rdoc:
|
data/sample/_out/blah/deblah.txt
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
dsfsdf
|
@@ -1 +0,0 @@
|
|
1
|
-
|