zenweb 3.5.0 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
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