mill 0.11 → 0.18

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -1
  3. data/LICENSE +1 -1
  4. data/Rakefile +1 -2
  5. data/TODO.md +4 -0
  6. data/bin/mill +1 -27
  7. data/lib/mill/command.rb +13 -0
  8. data/lib/mill/commands/build.rb +17 -0
  9. data/lib/mill/commands/check.rb +16 -0
  10. data/lib/mill/commands/diff.rb +18 -0
  11. data/lib/mill/commands/list.rb +20 -0
  12. data/lib/mill/commands/snapshot.rb +20 -0
  13. data/lib/mill/commands/tree.rb +17 -0
  14. data/lib/mill/commands/types.rb +18 -0
  15. data/lib/mill/commands/upload.rb +24 -0
  16. data/lib/mill/config.rb +27 -0
  17. data/lib/mill/resource.rb +81 -81
  18. data/lib/mill/resources/blob.rb +4 -0
  19. data/lib/mill/resources/feed.rb +5 -13
  20. data/lib/mill/resources/image.rb +10 -18
  21. data/lib/mill/resources/markdown.rb +20 -0
  22. data/lib/mill/resources/markup.rb +62 -0
  23. data/lib/mill/resources/page.rb +140 -0
  24. data/lib/mill/resources/redirect.rb +17 -16
  25. data/lib/mill/resources/robots.rb +3 -4
  26. data/lib/mill/resources/sitemap.rb +3 -5
  27. data/lib/mill/resources/stylesheet.rb +4 -4
  28. data/lib/mill/resources/textile.rb +27 -0
  29. data/lib/mill/resources.rb +89 -0
  30. data/lib/mill/site.rb +181 -251
  31. data/lib/mill.rb +28 -8
  32. data/mill.gemspec +22 -17
  33. data/test/content/a.md +3 -0
  34. data/test/content/b/ba.md +3 -0
  35. data/test/content/b/bb.md +3 -0
  36. data/test/content/b/index.md +3 -0
  37. data/test/content/c.md +4 -0
  38. data/test/content/d.md +4 -0
  39. data/test/content/index.md +3 -0
  40. data/test/main_test.rb +68 -0
  41. data/test/mill.yaml +8 -0
  42. metadata +189 -40
  43. data/TODO.txt +0 -61
  44. data/lib/mill/html_helpers.rb +0 -122
  45. data/lib/mill/navigator.rb +0 -61
  46. data/lib/mill/resources/dir.rb +0 -31
  47. data/lib/mill/resources/google_site_verification.rb +0 -30
  48. data/lib/mill/resources/text.rb +0 -207
  49. data/lib/mill/version.rb +0 -5
data/test/content/d.md ADDED
@@ -0,0 +1,4 @@
1
+ Title: d
2
+ Draft: true
3
+
4
+ This is d.
@@ -0,0 +1,3 @@
1
+ Title: index
2
+
3
+ This is index.
data/test/main_test.rb ADDED
@@ -0,0 +1,68 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/power_assert'
3
+
4
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
5
+ require 'mill'
6
+
7
+ module Mill
8
+
9
+ class Test < Minitest::Test
10
+
11
+ def setup
12
+ @site = Site.load('test')
13
+ @site.build
14
+ @site.save
15
+ # ;;pp @site
16
+ # ;;@site.resources.print_tree
17
+ # ;;@site.list
18
+ @root = @site.find_resource('/')
19
+ @a = @site.find_resource('/a')
20
+ @b = @site.find_resource('/b')
21
+ @ba = @site.find_resource('/b/ba')
22
+ @bb = @site.find_resource('/b/bb')
23
+ @c = @site.find_resource('/c')
24
+ @d = @site.find_resource('/d')
25
+ end
26
+
27
+ def test_has_index
28
+ assert { @root }
29
+ end
30
+
31
+ def test_resources
32
+ assert { @a }
33
+ assert { @b }
34
+ assert { @ba }
35
+ assert { @bb }
36
+ assert { @c }
37
+ assert { @d == nil }
38
+ end
39
+
40
+ def test_primary
41
+ assert { !@c.primary? }
42
+ end
43
+
44
+ def test_children
45
+ children = @root.children
46
+ assert { children == [@a, @b] }
47
+ assert { @a.children.empty? }
48
+ end
49
+
50
+ def test_parent
51
+ assert { @a.parent == @root }
52
+ assert { @b.parent == @root }
53
+ assert { @ba.parent == @b }
54
+ assert { @bb.parent == @b }
55
+ end
56
+
57
+ def test_siblings
58
+ root_siblings = @root.siblings
59
+ a_siblings = @a.siblings
60
+ ba_siblings = @ba.siblings
61
+ assert { root_siblings.empty? }
62
+ assert { a_siblings == [@b] }
63
+ assert { ba_siblings == [@bb] }
64
+ end
65
+
66
+ end
67
+
68
+ end
data/test/mill.yaml ADDED
@@ -0,0 +1,8 @@
1
+ input_dir: content
2
+ output_dir: output
3
+ site_title: Test
4
+ site_uri: http://test.test
5
+ make_error: false
6
+ make_feed: false
7
+ make_sitemap: false
8
+ make_robots: false
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mill
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.11'
4
+ version: '0.18'
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Labovitz
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2018-09-28 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: addressable
@@ -16,84 +15,112 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '2.5'
18
+ version: '2.8'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '2.5'
25
+ version: '2.8'
26
+ - !ruby/object:Gem::Dependency
27
+ name: hashstruct
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.6'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.6'
40
+ - !ruby/object:Gem::Dependency
41
+ name: http
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '5.3'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '5.3'
27
54
  - !ruby/object:Gem::Dependency
28
55
  name: image_size
29
56
  requirement: !ruby/object:Gem::Requirement
30
57
  requirements:
31
58
  - - "~>"
32
59
  - !ruby/object:Gem::Version
33
- version: '1.5'
60
+ version: '3.4'
34
61
  type: :runtime
35
62
  prerelease: false
36
63
  version_requirements: !ruby/object:Gem::Requirement
37
64
  requirements:
38
65
  - - "~>"
39
66
  - !ruby/object:Gem::Version
40
- version: '1.5'
67
+ version: '3.4'
41
68
  - !ruby/object:Gem::Dependency
42
69
  name: kramdown
43
70
  requirement: !ruby/object:Gem::Requirement
44
71
  requirements:
45
72
  - - "~>"
46
73
  - !ruby/object:Gem::Version
47
- version: '1.16'
74
+ version: '2.5'
48
75
  type: :runtime
49
76
  prerelease: false
50
77
  version_requirements: !ruby/object:Gem::Requirement
51
78
  requirements:
52
79
  - - "~>"
53
80
  - !ruby/object:Gem::Version
54
- version: '1.16'
81
+ version: '2.5'
55
82
  - !ruby/object:Gem::Dependency
56
83
  name: mime-types
57
84
  requirement: !ruby/object:Gem::Requirement
58
85
  requirements:
59
86
  - - "~>"
60
87
  - !ruby/object:Gem::Version
61
- version: '3.1'
88
+ version: '3.7'
62
89
  type: :runtime
63
90
  prerelease: false
64
91
  version_requirements: !ruby/object:Gem::Requirement
65
92
  requirements:
66
93
  - - "~>"
67
94
  - !ruby/object:Gem::Version
68
- version: '3.1'
95
+ version: '3.7'
69
96
  - !ruby/object:Gem::Dependency
70
97
  name: nokogiri
71
98
  requirement: !ruby/object:Gem::Requirement
72
99
  requirements:
73
100
  - - "~>"
74
101
  - !ruby/object:Gem::Version
75
- version: '1.8'
102
+ version: '1.18'
76
103
  type: :runtime
77
104
  prerelease: false
78
105
  version_requirements: !ruby/object:Gem::Requirement
79
106
  requirements:
80
107
  - - "~>"
81
108
  - !ruby/object:Gem::Version
82
- version: '1.8'
109
+ version: '1.18'
83
110
  - !ruby/object:Gem::Dependency
84
111
  name: path
85
112
  requirement: !ruby/object:Gem::Requirement
86
113
  requirements:
87
114
  - - "~>"
88
115
  - !ruby/object:Gem::Version
89
- version: '2.0'
116
+ version: '2.1'
90
117
  type: :runtime
91
118
  prerelease: false
92
119
  version_requirements: !ruby/object:Gem::Requirement
93
120
  requirements:
94
121
  - - "~>"
95
122
  - !ruby/object:Gem::Version
96
- version: '2.0'
123
+ version: '2.1'
97
124
  - !ruby/object:Gem::Dependency
98
125
  name: RedCloth
99
126
  requirement: !ruby/object:Gem::Requirement
@@ -114,70 +141,168 @@ dependencies:
114
141
  requirements:
115
142
  - - "~>"
116
143
  - !ruby/object:Gem::Version
117
- version: '0.6'
144
+ version: '0.7'
118
145
  type: :runtime
119
146
  prerelease: false
120
147
  version_requirements: !ruby/object:Gem::Requirement
121
148
  requirements:
122
149
  - - "~>"
123
150
  - !ruby/object:Gem::Version
124
- version: '0.6'
151
+ version: '0.7'
152
+ - !ruby/object:Gem::Dependency
153
+ name: rubytree
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '2.1'
159
+ type: :runtime
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '2.1'
125
166
  - !ruby/object:Gem::Dependency
126
167
  name: sassc
127
168
  requirement: !ruby/object:Gem::Requirement
128
169
  requirements:
129
170
  - - "~>"
130
171
  - !ruby/object:Gem::Version
131
- version: '2.0'
172
+ version: '2.4'
173
+ type: :runtime
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '2.4'
180
+ - !ruby/object:Gem::Dependency
181
+ name: set_params
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '0.3'
132
187
  type: :runtime
133
188
  prerelease: false
134
189
  version_requirements: !ruby/object:Gem::Requirement
135
190
  requirements:
136
191
  - - "~>"
137
192
  - !ruby/object:Gem::Version
138
- version: '2.0'
193
+ version: '0.3'
139
194
  - !ruby/object:Gem::Dependency
140
- name: web-checker
195
+ name: simple-builder
141
196
  requirement: !ruby/object:Gem::Requirement
142
197
  requirements:
143
198
  - - "~>"
144
199
  - !ruby/object:Gem::Version
145
- version: '0'
200
+ version: '0.4'
146
201
  type: :runtime
147
202
  prerelease: false
148
203
  version_requirements: !ruby/object:Gem::Requirement
149
204
  requirements:
150
205
  - - "~>"
151
206
  - !ruby/object:Gem::Version
152
- version: '0'
207
+ version: '0.4'
208
+ - !ruby/object:Gem::Dependency
209
+ name: simple-command-parser
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '1.2'
215
+ type: :runtime
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '1.2'
222
+ - !ruby/object:Gem::Dependency
223
+ name: simple-configurator
224
+ requirement: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: '0.2'
229
+ type: :runtime
230
+ prerelease: false
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: '0.2'
236
+ - !ruby/object:Gem::Dependency
237
+ name: simple-printer
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: '0.4'
243
+ type: :runtime
244
+ prerelease: false
245
+ version_requirements: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: '0.4'
250
+ - !ruby/object:Gem::Dependency
251
+ name: minitest
252
+ requirement: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - "~>"
255
+ - !ruby/object:Gem::Version
256
+ version: '5.26'
257
+ type: :development
258
+ prerelease: false
259
+ version_requirements: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: '5.26'
264
+ - !ruby/object:Gem::Dependency
265
+ name: minitest-power_assert
266
+ requirement: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: '0.3'
271
+ type: :development
272
+ prerelease: false
273
+ version_requirements: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: '0.3'
153
278
  - !ruby/object:Gem::Dependency
154
279
  name: rake
155
280
  requirement: !ruby/object:Gem::Requirement
156
281
  requirements:
157
282
  - - "~>"
158
283
  - !ruby/object:Gem::Version
159
- version: '0'
284
+ version: '13.3'
160
285
  type: :development
161
286
  prerelease: false
162
287
  version_requirements: !ruby/object:Gem::Requirement
163
288
  requirements:
164
289
  - - "~>"
165
290
  - !ruby/object:Gem::Version
166
- version: '0'
291
+ version: '13.3'
167
292
  - !ruby/object:Gem::Dependency
168
- name: rubygems-tasks
293
+ name: simple-rake-tasks
169
294
  requirement: !ruby/object:Gem::Requirement
170
295
  requirements:
171
296
  - - "~>"
172
297
  - !ruby/object:Gem::Version
173
- version: '0.0'
298
+ version: '0.1'
174
299
  type: :development
175
300
  prerelease: false
176
301
  version_requirements: !ruby/object:Gem::Requirement
177
302
  requirements:
178
303
  - - "~>"
179
304
  - !ruby/object:Gem::Version
180
- version: '0.0'
305
+ version: '0.1'
181
306
  description: "\n Mill provides a simple but useful static site generator.\n "
182
307
  email: johnl@johnlabovitz.com
183
308
  executables:
@@ -189,31 +314,48 @@ files:
189
314
  - LICENSE
190
315
  - README.md
191
316
  - Rakefile
192
- - TODO.txt
317
+ - TODO.md
193
318
  - bin/mill
194
319
  - lib/mill.rb
320
+ - lib/mill/command.rb
321
+ - lib/mill/commands/build.rb
322
+ - lib/mill/commands/check.rb
323
+ - lib/mill/commands/diff.rb
324
+ - lib/mill/commands/list.rb
325
+ - lib/mill/commands/snapshot.rb
326
+ - lib/mill/commands/tree.rb
327
+ - lib/mill/commands/types.rb
328
+ - lib/mill/commands/upload.rb
329
+ - lib/mill/config.rb
195
330
  - lib/mill/error.rb
196
- - lib/mill/html_helpers.rb
197
- - lib/mill/navigator.rb
198
331
  - lib/mill/resource.rb
332
+ - lib/mill/resources.rb
199
333
  - lib/mill/resources/blob.rb
200
- - lib/mill/resources/dir.rb
201
334
  - lib/mill/resources/feed.rb
202
- - lib/mill/resources/google_site_verification.rb
203
335
  - lib/mill/resources/image.rb
336
+ - lib/mill/resources/markdown.rb
337
+ - lib/mill/resources/markup.rb
338
+ - lib/mill/resources/page.rb
204
339
  - lib/mill/resources/redirect.rb
205
340
  - lib/mill/resources/robots.rb
206
341
  - lib/mill/resources/sitemap.rb
207
342
  - lib/mill/resources/stylesheet.rb
208
- - lib/mill/resources/text.rb
343
+ - lib/mill/resources/textile.rb
209
344
  - lib/mill/site.rb
210
- - lib/mill/version.rb
211
345
  - mill.gemspec
212
- homepage: http://github.com/jslabovitz/mill
346
+ - test/content/a.md
347
+ - test/content/b/ba.md
348
+ - test/content/b/bb.md
349
+ - test/content/b/index.md
350
+ - test/content/c.md
351
+ - test/content/d.md
352
+ - test/content/index.md
353
+ - test/main_test.rb
354
+ - test/mill.yaml
355
+ homepage: https://github.com/jslabovitz/mill
213
356
  licenses:
214
357
  - MIT
215
358
  metadata: {}
216
- post_install_message:
217
359
  rdoc_options: []
218
360
  require_paths:
219
361
  - lib
@@ -228,9 +370,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
370
  - !ruby/object:Gem::Version
229
371
  version: '0'
230
372
  requirements: []
231
- rubyforge_project:
232
- rubygems_version: 2.7.7
233
- signing_key:
373
+ rubygems_version: 3.7.2
234
374
  specification_version: 4
235
375
  summary: A simple but useful static site generator.
236
- test_files: []
376
+ test_files:
377
+ - test/content/a.md
378
+ - test/content/b/ba.md
379
+ - test/content/b/bb.md
380
+ - test/content/b/index.md
381
+ - test/content/c.md
382
+ - test/content/d.md
383
+ - test/content/index.md
384
+ - test/main_test.rb
385
+ - test/mill.yaml
data/TODO.txt DELETED
@@ -1,61 +0,0 @@
1
- - initialize site by setting ivars directly, not by passing params to super's initialize()
2
-
3
- - create alternate sites (beta, final, etc.) by subclassing site, and changing @output or @location
4
-
5
- - rework resource URI usage
6
- - 'uri' attribute should be canonical
7
- - 'output_file' should be derived from @site.output_dir + uri
8
- - URIs should be fully qualified
9
- - start with '/'
10
- - have extension according to file type
11
- - referencing URIs should follow server rules (e.g., / -> /index.html)
12
- - #shorten_uris should only apply to writing final files
13
-
14
- - combine @input_file & @content?
15
- - if @content.kind_of?(Path): copy
16
- - else: write as string
17
-
18
- - rename Resource #load to #import
19
- - uses path argument instead of @input_file
20
- - sets @content to path
21
- - sets @date to mtime of path
22
- - subclasses should:
23
- - call super
24
- - subclasses may:
25
- - assigned @content
26
- - change URI
27
-
28
- - rename Resource #build to #process
29
-
30
- - formalize widget creation & access
31
- - any object that responds to #to_html
32
- - doesn't have to be specific class (e.g., Mill::Widget)
33
- - object that is used across site
34
- - possibly with different states or parameters (eg, navigation)
35
- - built from current html_fragment use
36
- - eg:
37
- - navigation
38
- - buy buttons
39
- - Google Analytics bug
40
- - link to resource (<a ...>)
41
- - sidebars
42
- - strings (existing String extensions)
43
-
44
- - create bin/mill tool to replace Rake
45
-
46
- - split Resource#date into Resource#published & Resource#updated
47
- + add <published> element to feed
48
- + #published should be stated date (e.g., from header)
49
- + #updated should be mtime of source file
50
-
51
- - make Navigator into more generic Collection
52
- + include Enumerable
53
-
54
- - make Resource::External for external links?
55
- + add on import of HTML (by examining href/src/etc attributes)
56
-
57
- - save compressed versions of files
58
- - write compressed versions along with non-compressed
59
- - serve compressed versions if asked by client
60
-
61
- - add MailChimp signup form generator to HTMLHelpers
@@ -1,122 +0,0 @@
1
- module HTMLHelpers
2
-
3
- LinkElementsXPath = '//@href | //@src'
4
-
5
- def html_document(type=:html4_transitional, &block)
6
- doc = Nokogiri::HTML::Document.new
7
- doc.encoding = 'UTF-8'
8
- doc.internal_subset.remove
9
- case type
10
- when :html4_transitional
11
- doc.create_internal_subset('html', '-//W3C//DTD HTML 4.01 Transitional//EN', 'http://www.w3.org/TR/html4/loose.dtd')
12
- when :html5
13
- doc.create_internal_subset('html', nil, nil)
14
- else
15
- raise "Unknown HTML type: #{type.inspect}"
16
- end
17
- Nokogiri::HTML::Builder.with(doc) do |doc|
18
- yield(doc)
19
- end
20
- doc
21
- end
22
-
23
- def html_fragment(&block)
24
- html = Nokogiri::HTML::DocumentFragment.parse('')
25
- Nokogiri::HTML::Builder.with(html) do |html|
26
- yield(html) if block_given?
27
- end
28
- html
29
- end
30
-
31
- def parse_html(str)
32
- if str.strip.empty?
33
- html = html_fragment
34
- else
35
- html = Nokogiri::HTML::Document.parse(str) { |config| config.strict }
36
- check_errors(html)
37
- end
38
- html
39
- end
40
-
41
- def parse_html_fragment(str)
42
- html = Nokogiri::HTML::DocumentFragment.parse(str) { |config| config.strict }
43
- check_errors(html)
44
- html
45
- end
46
-
47
- def check_errors(html)
48
- html.errors.each do |error|
49
- raise Mill::Error, "HTML error #{error}" unless error.message =~ /Tag .+? invalid$/
50
- end
51
- end
52
-
53
- def find_link_elements(html)
54
- html.xpath(LinkElementsXPath)
55
- end
56
-
57
- def replace_element(html, xpath, &block)
58
- html.xpath(xpath).each do |elem|
59
- elem.replace(yield(elem))
60
- end
61
- end
62
-
63
- def google_analytics(tracker_id)
64
- html_fragment do |html|
65
- html.script(type: 'text/javascript') do
66
- html << %Q{
67
- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
68
- document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
69
- }
70
- end
71
- html.script(type: 'text/javascript') do
72
- html << %Q{
73
- try {
74
- var pageTracker = _gat._getTracker("#{tracker_id}");
75
- pageTracker._trackPageview();
76
- } catch(err) {}
77
- }
78
- end
79
- end
80
- end
81
-
82
- def link_if(state, html, &block)
83
- elem = html_fragment { |h| yield(h) }
84
- if state
85
- html.a(href: uri) { html << elem.to_html }
86
- else
87
- html << elem.to_html
88
- end
89
- end
90
-
91
- class PreText < String
92
-
93
- def to_html
94
- html_fragment do |html|
95
- html.pre(self)
96
- end
97
- end
98
-
99
- end
100
-
101
- class ::String
102
-
103
- Converters = {
104
- nil => RubyPants,
105
- smart_quotes: RubyPants,
106
- markdown: Kramdown::Document,
107
- textile: RedCloth,
108
- pre: PreText,
109
- }
110
-
111
- def to_html(options={})
112
- converter = Converters[options[:mode]] or raise "Unknown to_html mode: #{options[:mode].inspect}"
113
- html = Nokogiri::HTML::DocumentFragment.parse(converter.new(self).to_html)
114
- if !options[:multiline] && (p_elem = html.at_xpath('p'))
115
- html = p_elem.children.to_html
116
- end
117
- html.to_html
118
- end
119
-
120
- end
121
-
122
- end