retter 0.1.0 → 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/.gitignore +1 -0
- data/.travis.yml +1 -0
- data/README.md +54 -4
- data/bin/retter +2 -0
- data/lib/retter/command.rb +37 -41
- data/lib/retter/config.rb +94 -84
- data/lib/retter/entries.rb +93 -0
- data/lib/retter/entry.rb +46 -9
- data/lib/retter/generator/skel/images/orange/ic_li01.gif +0 -0
- data/lib/retter/generator/skel/layouts/article.html.haml +16 -3
- data/lib/retter/generator/skel/layouts/entries.html.haml +2 -2
- data/lib/retter/generator/skel/layouts/entry.html.haml +17 -3
- data/lib/retter/generator/skel/layouts/index.html.haml +14 -4
- data/lib/retter/generator/skel/stylesheets/base.css +1 -1
- data/lib/retter/generator/skel/stylesheets/orange.css +17 -2
- data/lib/retter/page/view_helper.rb +33 -0
- data/lib/retter/page.rb +86 -0
- data/lib/retter/pages/archive.rb +13 -0
- data/lib/retter/pages/article.rb +35 -0
- data/lib/retter/pages/entry.rb +28 -0
- data/lib/retter/pages/feed.rb +46 -0
- data/lib/retter/pages/index.rb +13 -0
- data/lib/retter/pages/profile.rb +13 -0
- data/lib/retter/pages.rb +40 -0
- data/lib/retter/preprint.rb +21 -0
- data/lib/retter/{stationery/renderer.rb → renderer.rb} +1 -1
- data/lib/retter/repository.rb +21 -0
- data/lib/retter/version.rb +1 -1
- data/lib/retter.rb +36 -3
- data/retter.gemspec +31 -0
- data/spec/command/callback_spec.rb +1 -1
- data/spec/command/commit_spec.rb +1 -1
- data/spec/command/edit_spec.rb +1 -1
- data/spec/command/invoke_after_spec.rb +2 -2
- data/spec/command/list_spec.rb +47 -0
- data/spec/command/open_spec.rb +1 -1
- data/spec/command/preview_spec.rb +1 -1
- data/spec/command/rebind_spec.rb +8 -8
- data/spec/spec_helper.rb +2 -0
- data/spec/support/stream_capture.rb +16 -0
- metadata +84 -39
- data/lib/retter/stationery/binder.rb +0 -150
- data/lib/retter/stationery/previewer.rb +0 -64
- data/lib/retter/stationery/view.rb +0 -68
- data/lib/retter/stationery.rb +0 -47
data/spec/command/rebind_spec.rb
CHANGED
@@ -9,7 +9,7 @@ describe 'Retter::Command#rebind', clean: :all do
|
|
9
9
|
let(:date_html) { retter_config.entry_file(Date.parse(date_str)) }
|
10
10
|
|
11
11
|
before do
|
12
|
-
|
12
|
+
Retter.stub!(:config) { retter_config }
|
13
13
|
end
|
14
14
|
|
15
15
|
context 'first post' do
|
@@ -41,14 +41,14 @@ describe 'Retter::Command#rebind', clean: :all do
|
|
41
41
|
let(:index_html) { retter_config.index_file.read }
|
42
42
|
|
43
43
|
it { texts_of(index_html, 'article p').should include('おはようございます') }
|
44
|
-
it { texts_of(index_html, 'article h1.date').should == %w(2011
|
45
|
-
it { texts_of(index_html, 'article h1').should == %w(2011
|
44
|
+
it { texts_of(index_html, 'article h1.date').should == %w(2011-01-01) }
|
45
|
+
it { texts_of(index_html, 'article h1').should == %w(2011-01-01 朝11時 夜1時) }
|
46
46
|
end
|
47
47
|
|
48
48
|
describe 'entries.html' do
|
49
49
|
let(:entries_html) { retter_config.entries_file.read }
|
50
50
|
|
51
|
-
it { texts_of(entries_html, 'a.entry').first.should == '2011
|
51
|
+
it { texts_of(entries_html, 'a.entry').first.should == '2011-01-01' }
|
52
52
|
it { texts_of(entries_html, 'a.title').should == %w(朝11時 夜1時) }
|
53
53
|
end
|
54
54
|
|
@@ -56,8 +56,8 @@ describe 'Retter::Command#rebind', clean: :all do
|
|
56
56
|
let(:entry_html) { retter_config.entry_file(Date.parse(date_str)).read }
|
57
57
|
|
58
58
|
it { texts_of(entry_html, 'article p').should == %w(おはようございます おやすみなさい) }
|
59
|
-
it { texts_of(entry_html, 'article h1.date').should == %w(2011
|
60
|
-
it { texts_of(entry_html, 'article h1').should == %w(2011
|
59
|
+
it { texts_of(entry_html, 'article h1.date').should == %w(2011-01-01) }
|
60
|
+
it { texts_of(entry_html, 'article h1').should == %w(2011-01-01 朝11時 夜1時) }
|
61
61
|
end
|
62
62
|
|
63
63
|
describe 'entry part(first)' do
|
@@ -71,7 +71,7 @@ describe 'Retter::Command#rebind', clean: :all do
|
|
71
71
|
|
72
72
|
describe 'date' do
|
73
73
|
subject { texts_of(part_html, 'article h1.date') }
|
74
|
-
it { should == %w(2011
|
74
|
+
it { should == %w(2011-01-01) }
|
75
75
|
end
|
76
76
|
|
77
77
|
describe 'headings' do
|
@@ -92,7 +92,7 @@ describe 'Retter::Command#rebind', clean: :all do
|
|
92
92
|
|
93
93
|
describe 'date' do
|
94
94
|
subject { texts_of(part_html, 'article h1.date') }
|
95
|
-
it { should == %w(2011
|
95
|
+
it { should == %w(2011-01-01) }
|
96
96
|
end
|
97
97
|
|
98
98
|
describe 'headings' do
|
data/spec/spec_helper.rb
CHANGED
@@ -23,8 +23,10 @@ RSpec.configure do |config|
|
|
23
23
|
|
24
24
|
config.after(:each, clean: :all) do
|
25
25
|
FileUtils.rm_rf retter_home
|
26
|
+
Retter.reset_entries!
|
26
27
|
end
|
27
28
|
|
28
29
|
config.include Retter::ConfigSupport
|
29
30
|
config.include Retter::HTMLSupport
|
31
|
+
config.include Retter::StreamSupport
|
30
32
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Retter::StreamSupport
|
4
|
+
def capture(stream)
|
5
|
+
begin
|
6
|
+
stream = stream.to_s
|
7
|
+
eval "$#{stream} = StringIO.new"
|
8
|
+
yield
|
9
|
+
result = eval("$#{stream}").string
|
10
|
+
ensure
|
11
|
+
eval("$#{stream} = #{stream.upcase}")
|
12
|
+
end
|
13
|
+
|
14
|
+
result
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-10-
|
13
|
+
date: 2011-10-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
17
|
-
requirement: &
|
17
|
+
requirement: &70200204506680 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 0.14.6
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70200204506680
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: builder
|
28
|
-
requirement: &
|
28
|
+
requirement: &70200204506160 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 3.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70200204506160
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: redcarpet
|
39
|
-
requirement: &
|
39
|
+
requirement: &70200204505680 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 2.0.0b3
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70200204505680
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: coderay
|
50
|
-
requirement: &
|
50
|
+
requirement: &70200204505200 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 0.9.8
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70200204505200
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: nokogiri
|
61
|
-
requirement: &
|
61
|
+
requirement: &70200204504720 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 1.5.0
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70200204504720
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: launchy
|
72
|
-
requirement: &
|
72
|
+
requirement: &70200204504240 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 2.0.5
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70200204504240
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: haml
|
83
|
-
requirement: &
|
83
|
+
requirement: &70200204503760 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 3.1.3
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70200204503760
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: bundler
|
94
|
-
requirement: &
|
94
|
+
requirement: &70200204503280 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: '1.0'
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *70200204503280
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: grit
|
105
|
-
requirement: &
|
105
|
+
requirement: &70200204502800 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ! '>='
|
@@ -110,10 +110,32 @@ dependencies:
|
|
110
110
|
version: 2.4.1
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *70200204502800
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: activesupport
|
116
|
+
requirement: &70200204502320 !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: 3.1.0
|
122
|
+
type: :runtime
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: *70200204502320
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: i18n
|
127
|
+
requirement: &70200204501840 !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.6.0
|
133
|
+
type: :runtime
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: *70200204501840
|
114
136
|
- !ruby/object:Gem::Dependency
|
115
137
|
name: rake
|
116
|
-
requirement: &
|
138
|
+
requirement: &70200204501360 !ruby/object:Gem::Requirement
|
117
139
|
none: false
|
118
140
|
requirements:
|
119
141
|
- - ! '>='
|
@@ -121,10 +143,10 @@ dependencies:
|
|
121
143
|
version: 0.9.2
|
122
144
|
type: :development
|
123
145
|
prerelease: false
|
124
|
-
version_requirements: *
|
146
|
+
version_requirements: *70200204501360
|
125
147
|
- !ruby/object:Gem::Dependency
|
126
148
|
name: ir_b
|
127
|
-
requirement: &
|
149
|
+
requirement: &70200204500880 !ruby/object:Gem::Requirement
|
128
150
|
none: false
|
129
151
|
requirements:
|
130
152
|
- - ! '>='
|
@@ -132,10 +154,10 @@ dependencies:
|
|
132
154
|
version: 1.4.0
|
133
155
|
type: :development
|
134
156
|
prerelease: false
|
135
|
-
version_requirements: *
|
157
|
+
version_requirements: *70200204500880
|
136
158
|
- !ruby/object:Gem::Dependency
|
137
159
|
name: tapp
|
138
|
-
requirement: &
|
160
|
+
requirement: &70200204500400 !ruby/object:Gem::Requirement
|
139
161
|
none: false
|
140
162
|
requirements:
|
141
163
|
- - ! '>='
|
@@ -143,10 +165,10 @@ dependencies:
|
|
143
165
|
version: 1.1.0
|
144
166
|
type: :development
|
145
167
|
prerelease: false
|
146
|
-
version_requirements: *
|
168
|
+
version_requirements: *70200204500400
|
147
169
|
- !ruby/object:Gem::Dependency
|
148
170
|
name: rspec
|
149
|
-
requirement: &
|
171
|
+
requirement: &70200204499920 !ruby/object:Gem::Requirement
|
150
172
|
none: false
|
151
173
|
requirements:
|
152
174
|
- - ! '>='
|
@@ -154,10 +176,10 @@ dependencies:
|
|
154
176
|
version: 2.6.0
|
155
177
|
type: :development
|
156
178
|
prerelease: false
|
157
|
-
version_requirements: *
|
179
|
+
version_requirements: *70200204499920
|
158
180
|
- !ruby/object:Gem::Dependency
|
159
181
|
name: fuubar
|
160
|
-
requirement: &
|
182
|
+
requirement: &70200204499440 !ruby/object:Gem::Requirement
|
161
183
|
none: false
|
162
184
|
requirements:
|
163
185
|
- - ! '>='
|
@@ -165,10 +187,10 @@ dependencies:
|
|
165
187
|
version: 0.0.6
|
166
188
|
type: :development
|
167
189
|
prerelease: false
|
168
|
-
version_requirements: *
|
190
|
+
version_requirements: *70200204499440
|
169
191
|
- !ruby/object:Gem::Dependency
|
170
192
|
name: simplecov
|
171
|
-
requirement: &
|
193
|
+
requirement: &70200204498960 !ruby/object:Gem::Requirement
|
172
194
|
none: false
|
173
195
|
requirements:
|
174
196
|
- - ! '>='
|
@@ -176,7 +198,7 @@ dependencies:
|
|
176
198
|
version: 0.5.3
|
177
199
|
type: :development
|
178
200
|
prerelease: false
|
179
|
-
version_requirements: *
|
201
|
+
version_requirements: *70200204498960
|
180
202
|
description: Flyweight diary workflow. ruby-1.9.2 or later is required.
|
181
203
|
email:
|
182
204
|
- celluloid.key@gmail.com
|
@@ -195,6 +217,7 @@ files:
|
|
195
217
|
- lib/retter.rb
|
196
218
|
- lib/retter/command.rb
|
197
219
|
- lib/retter/config.rb
|
220
|
+
- lib/retter/entries.rb
|
198
221
|
- lib/retter/entry.rb
|
199
222
|
- lib/retter/generator.rb
|
200
223
|
- lib/retter/generator/base.rb
|
@@ -208,6 +231,7 @@ files:
|
|
208
231
|
- lib/retter/generator/skel/images/orange/bg_body.jpg
|
209
232
|
- lib/retter/generator/skel/images/orange/bg_entry.jpg
|
210
233
|
- lib/retter/generator/skel/images/orange/bg_header.png
|
234
|
+
- lib/retter/generator/skel/images/orange/ic_li01.gif
|
211
235
|
- lib/retter/generator/skel/index.html
|
212
236
|
- lib/retter/generator/skel/javascripts/.gitkeep
|
213
237
|
- lib/retter/generator/skel/layouts/article.html.haml
|
@@ -221,17 +245,25 @@ files:
|
|
221
245
|
- lib/retter/generator/skel/stylesheets/orange.css
|
222
246
|
- lib/retter/generator/skel/stylesheets/retter.css
|
223
247
|
- lib/retter/generator/updator.rb
|
224
|
-
- lib/retter/
|
225
|
-
- lib/retter/
|
226
|
-
- lib/retter/
|
227
|
-
- lib/retter/
|
228
|
-
- lib/retter/
|
248
|
+
- lib/retter/page.rb
|
249
|
+
- lib/retter/page/view_helper.rb
|
250
|
+
- lib/retter/pages.rb
|
251
|
+
- lib/retter/pages/archive.rb
|
252
|
+
- lib/retter/pages/article.rb
|
253
|
+
- lib/retter/pages/entry.rb
|
254
|
+
- lib/retter/pages/feed.rb
|
255
|
+
- lib/retter/pages/index.rb
|
256
|
+
- lib/retter/pages/profile.rb
|
257
|
+
- lib/retter/preprint.rb
|
258
|
+
- lib/retter/renderer.rb
|
259
|
+
- lib/retter/repository.rb
|
229
260
|
- lib/retter/version.rb
|
230
261
|
- retter.gemspec
|
231
262
|
- spec/command/callback_spec.rb
|
232
263
|
- spec/command/commit_spec.rb
|
233
264
|
- spec/command/edit_spec.rb
|
234
265
|
- spec/command/invoke_after_spec.rb
|
266
|
+
- spec/command/list_spec.rb
|
235
267
|
- spec/command/open_spec.rb
|
236
268
|
- spec/command/preview_spec.rb
|
237
269
|
- spec/command/rebind_spec.rb
|
@@ -239,10 +271,21 @@ files:
|
|
239
271
|
- spec/support/config_support.rb
|
240
272
|
- spec/support/html_support.rb
|
241
273
|
- spec/support/matchers.rb
|
274
|
+
- spec/support/stream_capture.rb
|
242
275
|
- tmp/.gitkeep
|
243
276
|
homepage: https://github.com/hibariya/retter
|
244
277
|
licenses: []
|
245
|
-
post_install_message:
|
278
|
+
post_install_message: ! " **Important** Some features were added or updated.\n\n
|
279
|
+
\ * Article has Permlink in retter-0.1.0 or later.\n If error occured, try
|
280
|
+
overwrite templates by `retter gen $RETTER_HOME`. (overwrite layouts/*.html.haml)\n\n
|
281
|
+
\ * Relative date is now available in `--date` option.\n Examples:\n $
|
282
|
+
retter edit yesterday\n $ retter edit today\n $ retter edit tomorrow\n
|
283
|
+
\ $ retter preview 2.days.ago\n\n * `--key` option is now available in
|
284
|
+
edit (and preview).\n Examples:\n $ retter list\n [e0] 2011-10-12
|
285
|
+
\ article3, article4\n [e1] 2011-10-10 article1, article2\n $ retter
|
286
|
+
edit --key e0\n ... or ...\n $ retter edit e0\n\n * Default date
|
287
|
+
format has changed.\n 2011/01/01 -> 2011-01-01\n\n -- Thanks for flying
|
288
|
+
Retter :-> --\n"
|
246
289
|
rdoc_options: []
|
247
290
|
require_paths:
|
248
291
|
- lib
|
@@ -260,7 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
260
303
|
version: '0'
|
261
304
|
requirements: []
|
262
305
|
rubyforge_project:
|
263
|
-
rubygems_version: 1.8.
|
306
|
+
rubygems_version: 1.8.10
|
264
307
|
signing_key:
|
265
308
|
specification_version: 3
|
266
309
|
summary: Flyweight diary workflow
|
@@ -269,6 +312,7 @@ test_files:
|
|
269
312
|
- spec/command/commit_spec.rb
|
270
313
|
- spec/command/edit_spec.rb
|
271
314
|
- spec/command/invoke_after_spec.rb
|
315
|
+
- spec/command/list_spec.rb
|
272
316
|
- spec/command/open_spec.rb
|
273
317
|
- spec/command/preview_spec.rb
|
274
318
|
- spec/command/rebind_spec.rb
|
@@ -276,3 +320,4 @@ test_files:
|
|
276
320
|
- spec/support/config_support.rb
|
277
321
|
- spec/support/html_support.rb
|
278
322
|
- spec/support/matchers.rb
|
323
|
+
- spec/support/stream_capture.rb
|
@@ -1,150 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
module Retter::Stationery
|
4
|
-
class Binder
|
5
|
-
attr_reader :config, :entries
|
6
|
-
|
7
|
-
extend Forwardable
|
8
|
-
|
9
|
-
def_delegators :@config, *Retter::Config.delegatables
|
10
|
-
|
11
|
-
def initialize(config)
|
12
|
-
@config = config
|
13
|
-
end
|
14
|
-
|
15
|
-
def rebind!
|
16
|
-
commit_wip_file
|
17
|
-
|
18
|
-
@entries = Retter::Stationery.scan(retters_dir)
|
19
|
-
|
20
|
-
bind_entries
|
21
|
-
print_index
|
22
|
-
print_profile
|
23
|
-
print_rss
|
24
|
-
end
|
25
|
-
|
26
|
-
def commit_wip_file
|
27
|
-
if wip_file.exist?
|
28
|
-
html = wip_file.read
|
29
|
-
retter_file(Date.today).open('a') {|f| f.puts html }
|
30
|
-
wip_file.unlink
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def bind_entries
|
35
|
-
@entries.each do |entry|
|
36
|
-
print_entry entry
|
37
|
-
print_articles entry
|
38
|
-
end
|
39
|
-
|
40
|
-
print_toc
|
41
|
-
end
|
42
|
-
|
43
|
-
def print_entry(entry)
|
44
|
-
title = "#{entry.date.strftime('%Y/%m/%d')} - #{config.title}"
|
45
|
-
part = entry_renderer.render(view_scope, entry: entry)
|
46
|
-
html = layout_renderer.render(view_scope, content: part, title: title)
|
47
|
-
|
48
|
-
entry_file(entry.date).open('w') do |f|
|
49
|
-
f.puts View::Helper.fix_path(html, '../')
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def print_articles(entry)
|
54
|
-
return if entry.articles.empty?
|
55
|
-
|
56
|
-
entry_dir = config.entry_dir(entry.date)
|
57
|
-
entry_dir.mkdir unless entry_dir.directory?
|
58
|
-
|
59
|
-
entry.articles.each do |article|
|
60
|
-
title = "#{article.title} - #{config.title}"
|
61
|
-
part = article_renderer.render(view_scope, entry: entry, article: article)
|
62
|
-
html = layout_renderer.render(view_scope, content: part, title: title)
|
63
|
-
|
64
|
-
entry_dir.join("#{article.id}.html").open('w') do |f|
|
65
|
-
f.puts View::Helper.fix_path(html, '../../')
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def print_index
|
71
|
-
part = Haml::Engine.new(index_layout_file.read, ugly: true).render(view_scope)
|
72
|
-
html = layout_renderer.render(view_scope, content: part, title: config.title)
|
73
|
-
|
74
|
-
index_file.open('w') do |f|
|
75
|
-
f.puts View::Helper.fix_path(html, './')
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def print_profile
|
80
|
-
part = Haml::Engine.new(profile_layout_file.read, ugly: true).render(view_scope)
|
81
|
-
html = layout_renderer.render(view_scope, content: part, title: config.title)
|
82
|
-
|
83
|
-
profile_file.open('w') do |f|
|
84
|
-
f.puts View::Helper.fix_path(html, './')
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def print_toc
|
89
|
-
part = Haml::Engine.new(entries_layout_file.read, ugly: true).render(view_scope)
|
90
|
-
html = layout_renderer.render(view_scope, content: part, title: config.title)
|
91
|
-
|
92
|
-
entries_file.open('w') do |f|
|
93
|
-
f.puts View::Helper.fix_path(html, './')
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
def print_rss
|
98
|
-
feed_file.open('w') {|f| f.puts rss }
|
99
|
-
end
|
100
|
-
|
101
|
-
def rss
|
102
|
-
xml = Builder::XmlMarkup.new
|
103
|
-
xml.instruct!
|
104
|
-
xml.rdf:RDF, :xmlns => 'http://purl.org/rss/1.0/',
|
105
|
-
:'xmlns:rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
|
106
|
-
:'xmlns:dc' => 'http://purl.org/dc/elements/1.1/',
|
107
|
-
:'xml:lang' => 'ja' do
|
108
|
-
xml.channel :'rdf:about' => url do
|
109
|
-
xml.title title
|
110
|
-
xml.link url
|
111
|
-
xml.dc:date, entries.first.date
|
112
|
-
xml.description description
|
113
|
-
xml.items { xml.rdf(:Seq) { entries.each {|e| xml.rdf:li, :'rdf:resource' => entry_url(e.date) } } }
|
114
|
-
end
|
115
|
-
|
116
|
-
entries.each do |entry|
|
117
|
-
xml.item about: entry_url(entry.date) do
|
118
|
-
xml.title entry.date.strftime('%Y/%m/%d')
|
119
|
-
xml.description { xml.cdata! entry.body }
|
120
|
-
xml.dc:date, entry.date
|
121
|
-
xml.link entry_url(entry.date)
|
122
|
-
xml.author author
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
def entry_url(date, id = nil)
|
129
|
-
(URI.parse(url) + date.strftime('/entries/%Y%m%d.html')).to_s
|
130
|
-
end
|
131
|
-
|
132
|
-
private
|
133
|
-
|
134
|
-
def view_scope
|
135
|
-
@view_scope ||= View::Scope.new(config, entries: entries)
|
136
|
-
end
|
137
|
-
|
138
|
-
def layout_renderer
|
139
|
-
@layout_renderer ||= Haml::Engine.new(layout_file.read, ugly: true)
|
140
|
-
end
|
141
|
-
|
142
|
-
def entry_renderer
|
143
|
-
@entry_renderer ||= Haml::Engine.new(entry_layout_file.read, ugly: true)
|
144
|
-
end
|
145
|
-
|
146
|
-
def article_renderer
|
147
|
-
@article_renderer ||= Haml::Engine.new(article_layout_file.read, ugly: true)
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
module Retter::Stationery
|
4
|
-
class Previewer
|
5
|
-
attr_reader :config
|
6
|
-
|
7
|
-
extend Forwardable
|
8
|
-
|
9
|
-
def_delegators :@config, *Retter::Config.delegatables
|
10
|
-
|
11
|
-
def initialize(config, date)
|
12
|
-
@config, @date = config, date
|
13
|
-
@body, @entry = *nil
|
14
|
-
|
15
|
-
load_retter_file
|
16
|
-
load_wip_entry_if_needed
|
17
|
-
end
|
18
|
-
|
19
|
-
def print
|
20
|
-
build_entry
|
21
|
-
print_html
|
22
|
-
end
|
23
|
-
|
24
|
-
def file_path
|
25
|
-
config.retter_home.join '.preview.html'
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def load_retter_file
|
31
|
-
retter_file = retter_file(@date)
|
32
|
-
@body = retter_file.exist? ? retter_file.read : ''
|
33
|
-
end
|
34
|
-
|
35
|
-
def load_wip_entry_if_needed
|
36
|
-
if @date == Date.today && wip_file.exist?
|
37
|
-
@body = [@body, wip_file.read].join("\n")
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def build_entry
|
42
|
-
body_html = Retter::Stationery.markupper.render(@body)
|
43
|
-
@entry = Retter::Entry.new(date: @date, body: body_html)
|
44
|
-
end
|
45
|
-
|
46
|
-
def print_html
|
47
|
-
scope = View::Scope.new(config)
|
48
|
-
part = entry_renderer.render(scope, entry: @entry)
|
49
|
-
html = renderer.render(scope, content: part, title: config.title, entries: [@entry])
|
50
|
-
|
51
|
-
file_path.open('w') do |file|
|
52
|
-
file.puts View::Helper.fix_path(html, './')
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def renderer
|
57
|
-
Haml::Engine.new(layout_file.read, ugly: true)
|
58
|
-
end
|
59
|
-
|
60
|
-
def entry_renderer
|
61
|
-
Haml::Engine.new(entry_layout_file.read, ugly: true)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
module Retter::Stationery::View
|
4
|
-
module Helper
|
5
|
-
extend self
|
6
|
-
|
7
|
-
def fix_path(html, prefix='./')
|
8
|
-
elements = Nokogiri::HTML(html)
|
9
|
-
|
10
|
-
fix_href_path(fix_src_path(elements, prefix), prefix).to_s
|
11
|
-
end
|
12
|
-
|
13
|
-
def entry_path(date, id = nil)
|
14
|
-
date.strftime('/entries/%Y%m%d.html') + (id ? "##{id}" : '')
|
15
|
-
end
|
16
|
-
|
17
|
-
def article_path(date, id)
|
18
|
-
date.strftime("/entries/%Y%m%d/#{id}.html")
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def fix_src_path(elements, prefix = './')
|
24
|
-
elements.search("[src!=''][src!='']").each do |el|
|
25
|
-
src = el.attr('src').scan(/[^\.\/]{3}.*/).first
|
26
|
-
next if src =~ /^(?:http|https):\/\//
|
27
|
-
|
28
|
-
el.set_attribute 'src', [prefix, src].join
|
29
|
-
end
|
30
|
-
|
31
|
-
elements
|
32
|
-
end
|
33
|
-
|
34
|
-
def fix_href_path(elements, prefix = './')
|
35
|
-
elements.search("[href][href!='#']").each do |el|
|
36
|
-
href = el.attr('href')
|
37
|
-
next if href =~ /^(?:http|https):\/\//
|
38
|
-
|
39
|
-
if href == '/'
|
40
|
-
el.set_attribute 'href', [prefix, 'index.html'].join
|
41
|
-
else
|
42
|
-
el.set_attribute 'href', [prefix, href.scan(/[^\.\/]{3}.*/).first].join
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
elements
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
class Scope
|
52
|
-
attr_reader :config
|
53
|
-
attr_accessor :assigns
|
54
|
-
|
55
|
-
include Helper
|
56
|
-
extend Forwardable
|
57
|
-
|
58
|
-
def_delegators :@config, *Retter::Config.delegatables
|
59
|
-
|
60
|
-
[:entries].each do |meth|
|
61
|
-
define_method(meth) { @assigns[meth] }
|
62
|
-
end
|
63
|
-
|
64
|
-
def initialize(config, assigns = {})
|
65
|
-
@config, @assigns = config, assigns
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|