zenweb 3.5.0 → 3.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd4e60e046e26c4c52060e136115c18c9a67dd39
4
- data.tar.gz: a07920ba086b1627aab87550053f6b2d7a0d9ade
3
+ metadata.gz: cc755e676f07eae47d4e65f3a785fbf5ccb7176b
4
+ data.tar.gz: e5e47a35122be41500fe61d135210f75556778f4
5
5
  SHA512:
6
- metadata.gz: 40dfbb58356ae34e309c0a9d90fa8a23afdc7eb1b6e9e940b49e32ebc70ae8baae92943cd9859bdfdc77f4e7d8d1996883ce1e7ca3c41dead9746bb180579dce
7
- data.tar.gz: 64a2699353dc48793df8ff6c354522a613cd5cfdb78ea205bc2bc59ca23da5ee95fda738ed5a2289d34846985268b8564efbfc916848eced9a7565d941f96091
6
+ metadata.gz: 46fa0dc8ba97b3dc62e5e427f78599df368c844a5b7ff0964b85c97ecaa7b7f7559e190351d915eb95aeb8ad621aded52a6372f4f5ed1d8dd73e23b67a0c99fd
7
+ data.tar.gz: f24ab230786bd0f2c86b8152487a242d860a22f1f87a2f04bd86b98797f5ee1dc116d5df2db59d224317a5616eb861e6d206cb86370801977291a7805161063e
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,26 @@
1
+ === 3.6.0 / 2014-12-09
2
+
3
+ * 12 minor enhancements:
4
+
5
+ * Add debugging help when config blows on bad yaml.
6
+ * Added Enumerable#multi_group_by
7
+ * Added GeneratedIndex subclass of FakePage.
8
+ * Added Page#all_subpages_by_level that returns all subpages paired with their depth.
9
+ * Added Page#tag_list.
10
+ * Added TagIndex, TagDetail, MonthlyPage, YearlyPage, SeriesPage
11
+ * Extended Page#dated_path? to include yearly/monthly index pages.
12
+ * Page#all_subpages now partitioned by #dated_path?
13
+ * Page#all_subpages takes a reversed arg to reverse (only) dated pages.
14
+ * Page#dated_path? now returns true for yearly/monthly index.html pages.
15
+ * Page#sitemap now takes a demote arg in case your subpages are N levels deep.
16
+ * Page#sitemap reverse-sorts dated pages.
17
+
18
+ * 3 bug fixes:
19
+
20
+ * Fixed Site#fix_subpages to index via url, not path, so virtual pages work.
21
+ * Page#all_subpages incorrectly filtered out no_index pages. All means all.
22
+ * Site#fix_subpages no longer reverse sorts... that's someone else's job.
23
+
1
24
  === 3.5.0 / 2014-06-17
2
25
 
3
26
  * 3 minor enhancements:
@@ -6,7 +6,7 @@ require "time"
6
6
 
7
7
  module Zenweb
8
8
  # duh
9
- VERSION = "3.5.0"
9
+ VERSION = "3.6.0"
10
10
  end
11
11
 
12
12
  require "zenweb/site"
@@ -92,6 +92,9 @@ module Zenweb
92
92
  config, _ = self.class.split thing
93
93
  config && YAML.load(config) || {}
94
94
  end
95
+ rescue => e
96
+ warn "#{self.path}: #{e}"
97
+ raise
95
98
  end
96
99
 
97
100
  def inspect # :nodoc:
@@ -27,6 +27,16 @@ module Enumerable
27
27
 
28
28
  result
29
29
  end unless [].respond_to? :chunk
30
+
31
+ def multi_group_by
32
+ r = Hash.new { |h,k| h[k] = [] }
33
+ each do |o|
34
+ Array(yield(o)).each do |k|
35
+ r[k] << o
36
+ end
37
+ end
38
+ r
39
+ end
30
40
  end
31
41
 
32
42
  class Array # :nodoc:
@@ -65,10 +65,21 @@ module Zenweb
65
65
  end
66
66
 
67
67
  ##
68
- # All pages below this page, recursively.
68
+ # All pages below this page, possibly +reversed+, recursively.
69
69
 
70
- def all_subpages
71
- subpages.reject(&:no_index?).map { |p| [p, p.all_subpages] }
70
+ def all_subpages reversed = false
71
+ dated, normal = subpages.partition(&:dated_path?)
72
+ dated = dated.reverse if reversed
73
+
74
+ (normal + dated).map { |p| [p, p.all_subpages(reversed)] }
75
+ end
76
+
77
+ ##
78
+ # All pages below this page, possibly +reversed+, recursively,
79
+ # with the depth of each subpage relative to the current page.
80
+
81
+ def all_subpages_by_level reversed = false
82
+ self.all_subpages(reversed).deep_each.map { |n, p| [(n-1)/2, p] }
72
83
  end
73
84
 
74
85
  ##
@@ -145,6 +156,7 @@ module Zenweb
145
156
  end
146
157
 
147
158
  def date_from_path # :nodoc:
159
+ # TODO: test
148
160
  date = path[/\d\d\d\d-\d\d-\d\d/]
149
161
  Time.local(*date.split(/-/).map(&:to_i)) if date
150
162
  end
@@ -165,7 +177,7 @@ module Zenweb
165
177
  # Is this a dated page? (ie, does it have YYYY-MM-DD in the path?)
166
178
 
167
179
  def dated_path?
168
- path[/\d\d\d\d-\d\d-\d\d/]
180
+ path[/\d\d\d\d[-\/]\d\d[-\/]\d\d/] || path[/\d\d\d\d(?:[-\/]\d\d)?\/index/]
169
181
  end
170
182
 
171
183
  def change_frequency
@@ -361,7 +373,7 @@ module Zenweb
361
373
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s);
362
374
  })();
363
375
  </script>
364
- EOM
376
+ EOM
365
377
  end
366
378
 
367
379
  ##
@@ -391,6 +403,12 @@ module Zenweb
391
403
  @url_path ||= File.join(".site", self.url)
392
404
  end
393
405
 
406
+ def tag_list
407
+ self.tags.map { |tag|
408
+ "<a href=\"/blog/tags/#{tag.downcase.gsub(/\W/, '')}.html\">#{tag}</a>"
409
+ }.join ", "
410
+ end
411
+
394
412
  ##
395
413
  # Wire up this page to the rest of the rake dependencies. If you
396
414
  # have extra dependencies for this file (ie, an index page that
@@ -448,4 +466,161 @@ module Zenweb
448
466
  attr_accessor :content
449
467
  attr_accessor :date
450
468
  end
469
+
470
+ ##
471
+ # Generates a virtual page with an index of all tags on the given pages.
472
+ # You must subclass and provide a content method.
473
+
474
+ class GeneratedIndex < FakePage
475
+ attr_accessor :pages
476
+
477
+ def self.collate_by pages, key, default=nil
478
+ pages.multi_group_by { |page| page.config[key] || default }
479
+ end
480
+
481
+ def self.generate_all site, dir, pages
482
+ raise NotImplementedError, "Implement #{self}#generate_all"
483
+ end
484
+
485
+ def self.page_url page # TODO: hard to do helpers on class methods
486
+ "[#{page.title}](#{page.clean_url})"
487
+ end
488
+
489
+ def initialize site, path, pages
490
+ super site, path
491
+
492
+ self.pages = pages.select(&:html?)
493
+ self.date = Time.now
494
+
495
+ site.pages[path] = self
496
+ end
497
+
498
+ def content
499
+ raise NotImplementedError, "Implement #{self.class}#content"
500
+ end
501
+
502
+ def wire
503
+ super
504
+ self.depends_on pages
505
+ end
506
+ end
507
+
508
+ class TagIndex < GeneratedIndex
509
+ def self.tags_for pages
510
+ collate_by pages, :tags, "None"
511
+ end
512
+
513
+ def self.generate_all site, dir, pages
514
+ self.new site, "#{dir}/index.html.md.erb", pages
515
+ end
516
+
517
+ def self.tag_list tag, pages
518
+ r = []
519
+ r << "### #{tag}"
520
+ r << "#{pages.size} pages"
521
+ r << ""
522
+ r << pages.map { |page| "* #{page.date.date} #{page_url page}" }
523
+ r << ""
524
+ r.join "\n"
525
+ end
526
+
527
+ def index
528
+ self.class.tags_for(pages).sort_by { |t,_| t.to_s.downcase }.map { |t, p|
529
+ self.class.tag_list t, p
530
+ }.join "\n"
531
+ end
532
+ end
533
+
534
+ ##
535
+ # Generates a virtual page with an index for a given tag on the given pages.
536
+ # You must subclass and provide a content method.
537
+
538
+ class TagDetail < TagIndex
539
+ attr_accessor :tag
540
+
541
+ def self.generate_all site, dir, pages
542
+ tags_for(pages).sort.each do |tag, pgs|
543
+ path = tag.downcase.gsub(/\W+/, '')
544
+ generate site, "#{dir}/#{path}.html.md.erb", pgs, tag
545
+ end
546
+ end
547
+
548
+ def self.generate site, path, pages, tag
549
+ self.new site, path, pages, tag
550
+ end
551
+
552
+ def initialize site, path, pages, tag
553
+ super site, path, pages
554
+ self.tag = tag
555
+ end
556
+
557
+ def index
558
+ self.class.tag_list tag, pages
559
+ end
560
+ end
561
+
562
+ class SeriesPage < GeneratedIndex
563
+ attr_accessor :series
564
+
565
+ def self.series_for pages
566
+ collate_by pages, :series
567
+ end
568
+
569
+ def self.generate_all site, dir, pages
570
+ series_for(pages).sort.each do |series, pgs|
571
+ next unless series
572
+ path = series.downcase.gsub(/\W/, '-')
573
+ generate site, "#{dir}/#{path}.html.md.erb", pgs, series
574
+ end
575
+ end
576
+
577
+ def self.generate site, path, pages, series
578
+ self.new site, path, pages, series
579
+ end
580
+
581
+ def initialize sate, path, pages, series
582
+ super site, path, pages
583
+ self.series = series
584
+ end
585
+ end
586
+
587
+ ##
588
+ # Generates a virtual page with monthly index pages.
589
+ # You must subclass and provide a content method.
590
+
591
+ class MonthlyPage < GeneratedIndex
592
+ def self.generate_all site, dir, pages
593
+ pages.find_all(&:dated?).group_by { |page|
594
+ [page.date.year, page.date.month]
595
+ }.each do |(year, month), subpages|
596
+ path = "#{dir}/%4d/%02d/index.html.md.erb" % [year, month]
597
+ self.new site, path, subpages, year, month
598
+ end
599
+ end
600
+
601
+ def initialize site, path, pages, year, month
602
+ super site, path, pages
603
+ self.date = Time.local(year, month)
604
+ end
605
+ end
606
+
607
+ ##
608
+ # Generates a virtual page with yearly index pages.
609
+ # You must subclass and provide a content method.
610
+
611
+ class YearlyPage < GeneratedIndex
612
+ def self.generate_all site, dir, pages
613
+ pages.find_all(&:dated?).group_by { |page|
614
+ page.date.year
615
+ }.each do |year, subpages|
616
+ path = "#{dir}/%4d/index.html.md.erb" % [year]
617
+ self.new site, path, subpages, year
618
+ end
619
+ end
620
+
621
+ def initialize site, path, pages, year
622
+ super site, path, pages
623
+ self.date = Time.local(year)
624
+ end
625
+ end
451
626
  end
@@ -49,9 +49,10 @@ class Zenweb::Page
49
49
  # whether the pages are ordered (dated) or not or a combination of
50
50
  # the two.
51
51
 
52
- def sitemap title_dated = true
53
- self.all_subpages.deep_each.chunk { |n, p| n }.map { |depth, a|
54
- level = (depth-1)/2
52
+ def sitemap title_dated = true, demote = 0
53
+ self.all_subpages_by_level(true).chunk { |n, p| n }.map { |level, a|
54
+ level -= demote
55
+
55
56
  level = 0 if level < 0
56
57
 
57
58
  dated, normal = a.map(&:last).reject(&:no_index?).partition(&:dated?)
@@ -60,7 +61,7 @@ class Zenweb::Page
60
61
 
61
62
  dated = dated_map(dated) { |month, ps2|
62
63
  x = date_sorted_map(ps2) { |p|
63
- page_sitemap_url p, level + 1
64
+ page_sitemap_url p, level + (title_dated ? 1 : 0)
64
65
  }
65
66
  x.unshift "#{" " * level}* #{month}:" if title_dated
66
67
  x
@@ -70,8 +71,14 @@ class Zenweb::Page
70
71
  }.join "\n"
71
72
  end
72
73
 
74
+ def page_url page
75
+ "[#{page.title}](#{page.clean_url})"
76
+ end
77
+
78
+ module_function :page_url
79
+
73
80
  def page_sitemap_url page, depth # :nodoc:
74
- "#{" " * (depth)}* [#{page.title}](#{page.clean_url})"
81
+ "#{" " * (depth)}* #{page_url page}"
75
82
  end
76
83
 
77
84
  def date_sorted_map a, &b # :nodoc:
@@ -207,17 +207,25 @@ module Zenweb
207
207
  end
208
208
 
209
209
  def fix_subpages # :nodoc:
210
+ # TODO: push most of this down to page
210
211
  parents = {}
212
+
211
213
  @pages.values.select(&:index?).each do |p|
212
- parents[File.dirname p.path] = p
214
+ parents[p.url] = p
213
215
  end
214
216
 
215
217
  @pages.values.each do |p|
216
- path = File.dirname p.path
217
- path = File.dirname path if p.index?
218
+ path = p.parent_url
219
+
220
+ parent = nil
221
+ begin
222
+ path = File.join File.dirname(path), "index.html"
223
+ parent = parents[path]
224
+ path = File.dirname path
225
+ end until parent or path == "/"
218
226
 
219
- parent = parents[path]
220
227
  next unless parent and parent != p and p.url =~ /html$/
228
+
221
229
  p.parent = parent
222
230
  parent.subpages << p
223
231
  end
@@ -225,7 +233,6 @@ module Zenweb
225
233
  @pages.values.each do |p|
226
234
  unless p.subpages.empty? then
227
235
  sorted = p.subpages.sort_by(&:clean_url)
228
- sorted = sorted.reverse if sorted.first.dated_path?
229
236
  p.subpages.replace sorted
230
237
  end
231
238
  end
@@ -30,6 +30,139 @@ class TestZenwebPage < Minitest::Test
30
30
  return p1, p2
31
31
  end
32
32
 
33
+ def setup_complex_website
34
+ self.site = Zenweb::Site.new
35
+
36
+ pages = %w[
37
+ index.html.md
38
+ blog/index.html.md
39
+ blog/2014-01-01-first.html.md
40
+ blog/2014-02-02-second.html.md
41
+ blog/2014-03-03-third.html.md
42
+ ]
43
+
44
+ build_fake_site(*pages)
45
+
46
+ site.pages["index.html.md"]
47
+ end
48
+
49
+ def setup_complex_website2 skip_monthly = false
50
+ self.site = Zenweb::Site.new
51
+
52
+ pages = %w[
53
+ index.html.md
54
+ ruby/index.html.md
55
+ ruby/notes.html.md
56
+ ruby/quickref.html.md
57
+ blog/2014/index.html.md
58
+ blog/2014/01/index.html.md
59
+ blog/2014-01-01-first.html.md
60
+ blog/2014/02/index.html.md
61
+ blog/2014-02-02-second.html.md
62
+ blog/2014/03/index.html.md
63
+ blog/2014-03-03-third.html.md
64
+ blog/index.html.md
65
+ ]
66
+
67
+ pages.reject! { |s| s =~ /blog.2.*index/ } if skip_monthly
68
+
69
+ build_fake_site(*pages)
70
+
71
+ site.pages["index.html.md"]
72
+ end
73
+
74
+ def test_all_subpages
75
+ top = setup_complex_website2
76
+ sp = site.pages
77
+ exp = [[sp["blog/index.html.md"],
78
+ [[sp["blog/2014/index.html.md"],
79
+ [[sp["blog/2014/01/index.html.md"],
80
+ [[sp["blog/2014-01-01-first.html.md"], []]]],
81
+ [sp["blog/2014/02/index.html.md"],
82
+ [[sp["blog/2014-02-02-second.html.md"], []]]],
83
+ [sp["blog/2014/03/index.html.md"],
84
+ [[sp["blog/2014-03-03-third.html.md"], []]]]]]]],
85
+ [sp["ruby/index.html.md"],
86
+ [[sp["ruby/notes.html.md"], []],
87
+ [sp["ruby/quickref.html.md"], []]]]]
88
+
89
+ assert_equal exp, top.all_subpages
90
+ end
91
+
92
+ make_my_diffs_pretty!
93
+
94
+ def test_all_subpages_reversed
95
+ top = setup_complex_website2
96
+ sp = site.pages
97
+
98
+ exp = [[sp["blog/index.html.md"],
99
+ [[sp["blog/2014/index.html.md"],
100
+ [[sp["blog/2014/03/index.html.md"],
101
+ [[sp["blog/2014-03-03-third.html.md"], []]]],
102
+ [sp["blog/2014/02/index.html.md"],
103
+ [[sp["blog/2014-02-02-second.html.md"], []]]],
104
+ [sp["blog/2014/01/index.html.md"],
105
+ [[sp["blog/2014-01-01-first.html.md"], []]]]]]]],
106
+ [sp["ruby/index.html.md"],
107
+ [[sp["ruby/notes.html.md"], []],
108
+ [sp["ruby/quickref.html.md"], []]]]]
109
+
110
+ assert_equal exp, top.all_subpages(true)
111
+ end
112
+
113
+ def test_all_subpages_complex_reversed
114
+ top = setup_complex_website2
115
+ sp = site.pages
116
+
117
+ exp = [[sp["blog/index.html.md"],
118
+ [[sp["blog/2014/index.html.md"],
119
+ [[sp["blog/2014/03/index.html.md"],
120
+ [[sp["blog/2014-03-03-third.html.md"], []]]],
121
+ [sp["blog/2014/02/index.html.md"],
122
+ [[sp["blog/2014-02-02-second.html.md"], []]]],
123
+ [sp["blog/2014/01/index.html.md"],
124
+ [[sp["blog/2014-01-01-first.html.md"], []]]]]]]],
125
+ [sp["ruby/index.html.md"],
126
+ [[sp["ruby/notes.html.md"], []],
127
+ [sp["ruby/quickref.html.md"], []]]]]
128
+ assert_equal exp, top.all_subpages(true)
129
+ end
130
+
131
+ def test_sitemap_complex_no_dates # TODO: move to markdown tests
132
+ top = setup_complex_website2
133
+
134
+ exp = "* [Title for blog/index.html.md](/blog/)
135
+ * [Title for blog/2014/index.html.md](/blog/2014/)
136
+ * [Title for blog/2014/03/index.html.md](/blog/2014/03/)
137
+ * [Title for blog/2014-03-03-third.html.md](/blog/2014/03/03/third.html)
138
+ * [Title for blog/2014/02/index.html.md](/blog/2014/02/)
139
+ * [Title for blog/2014-02-02-second.html.md](/blog/2014/02/02/second.html)
140
+ * [Title for blog/2014/01/index.html.md](/blog/2014/01/)
141
+ * [Title for blog/2014-01-01-first.html.md](/blog/2014/01/01/first.html)
142
+ * [Title for ruby/index.html.md](/ruby/)
143
+ * [Title for ruby/notes.html.md](/ruby/notes.html)
144
+ * [Title for ruby/quickref.html.md](/ruby/quickref.html)"
145
+
146
+ assert_equal exp, top.sitemap(false)
147
+ end
148
+
149
+ def test_sitemap_title_dated_no_monthlies # TODO: move to markdown tests
150
+ top = setup_complex_website2 :skip_monthly
151
+
152
+ exp = "* [Title for blog/index.html.md](/blog/)
153
+ * 2014-03:
154
+ * [Title for blog/2014-03-03-third.html.md](/blog/2014/03/03/third.html)
155
+ * 2014-02:
156
+ * [Title for blog/2014-02-02-second.html.md](/blog/2014/02/02/second.html)
157
+ * 2014-01:
158
+ * [Title for blog/2014-01-01-first.html.md](/blog/2014/01/01/first.html)
159
+ * [Title for ruby/index.html.md](/ruby/)
160
+ * [Title for ruby/notes.html.md](/ruby/notes.html)
161
+ * [Title for ruby/quickref.html.md](/ruby/quickref.html)"
162
+
163
+ assert_equal exp, top.sitemap(:title_dated)
164
+ end
165
+
33
166
  def test_body
34
167
  assert_equal "Not really much here to see.", page.body
35
168
  end
@@ -279,9 +412,9 @@ class TestZenwebPage < Minitest::Test
279
412
 
280
413
  page = site.pages["blog/index.html.erb"]
281
414
  act = page.subpages
282
- exp = [site.pages["blog/2012-01-04-page3.html.md"],
415
+ exp = [site.pages["blog/2012-01-02-page1.html.md"],
283
416
  site.pages["blog/2012-01-03-page2.html.md"],
284
- site.pages["blog/2012-01-02-page1.html.md"]]
417
+ site.pages["blog/2012-01-04-page3.html.md"]]
285
418
 
286
419
  assert_equal exp, act
287
420
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zenweb
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -10,9 +10,9 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDPjCCAiagAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBAjANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
14
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTEzMDkxNjIzMDQxMloXDTE0MDkxNjIzMDQxMlowRTETMBEGA1UE
15
+ GRYDY29tMB4XDTE0MDkxNzIzMDcwN1oXDTE1MDkxNzIzMDcwN1owRTETMBEGA1UE
16
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -22,14 +22,14 @@ cert_chain:
22
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
23
  gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
24
24
  HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
25
- AQCFZ7JTzoy1gcG4d8A6dmOJy7ygtO5MFpRIz8HuKCF5566nOvpy7aHhDDzFmQuu
26
- FX3zDU6ghx5cQIueDhf2SGOncyBmmJRRYawm3wI0o1MeN6LZJ/3cRaOTjSFy6+S6
27
- zqDmHBp8fVA2TGJtO0BLNkbGVrBJjh0UPmSoGzWlRhEVnYC33TpDAbNA+u39UrQI
28
- ynwhNN7YbnmSR7+JU2cUjBFv2iPBO+TGuWC+9L2zn3NHjuc6tnmSYipA9y8Hv+As
29
- Y4evBVezr3SjXz08vPqRO5YRdO3zfeMT8gBjRqZjWJGMZ2lD4XNfrs7eky74CyZw
30
- xx3n58i0lQkBE1EpKE0lFu/y
25
+ AQAFoDJRokCQdxFfOrmsKX41KOFlU/zjrbDVM9hgB/Ur999M6OXGSi8FitXNtMwY
26
+ FVjsiAPeU7HaWVVcZkj6IhINelTkXsxgGz/qCzjHy3iUMuZWw36cS0fiWJ5rvH+e
27
+ hD7uXxJSFuyf1riDGI1aeWbQ74WMwvNstOxLUMiV5a1fzBhlxPqb537ubDjq/M/h
28
+ zPUFPVYeL5KjDHLCqI2FwIk2sEMOQgjpXHzl+3NlD2LUgUhHDMevmgVua0e2GT1B
29
+ xJcC6UN6NHMOVMyAXsr2HR0gRRx4ofN1LoP2KhXzSr8UMvQYlwPmE0N5GQv1b5AO
30
+ VpzF30vNaJK6ZT7xlIsIlwmH
31
31
  -----END CERTIFICATE-----
32
- date: 2014-06-17 00:00:00.000000000 Z
32
+ date: 2014-12-10 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rake
@@ -113,14 +113,14 @@ dependencies:
113
113
  requirements:
114
114
  - - ~>
115
115
  - !ruby/object:Gem::Version
116
- version: '5.3'
116
+ version: '5.4'
117
117
  type: :development
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - ~>
122
122
  - !ruby/object:Gem::Version
123
- version: '5.3'
123
+ version: '5.4'
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rdoc
126
126
  requirement: !ruby/object:Gem::Requirement
@@ -141,14 +141,14 @@ dependencies:
141
141
  requirements:
142
142
  - - ~>
143
143
  - !ruby/object:Gem::Version
144
- version: '3.12'
144
+ version: '3.13'
145
145
  type: :development
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - ~>
150
150
  - !ruby/object:Gem::Version
151
- version: '3.12'
151
+ version: '3.13'
152
152
  description: |-
153
153
  Zenweb is a set of classes/tools for organizing and formating a
154
154
  website. It is website oriented rather than webpage oriented, unlike
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  version: '0'
260
260
  requirements: []
261
261
  rubyforge_project:
262
- rubygems_version: 2.2.1
262
+ rubygems_version: 2.4.1
263
263
  signing_key:
264
264
  specification_version: 4
265
265
  summary: Zenweb is a set of classes/tools for organizing and formating a website
metadata.gz.sig CHANGED
Binary file