middleman-listpages 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -6,8 +6,8 @@ ability to list the child pages of a given page.
6
6
  # Install
7
7
 
8
8
  Add `middleman-listpages` to your `Gemfile`
9
- ```
10
- gem "middleman-listpages", :git => "git://github.com/strathmeyer/middleman-listpages.git"
9
+ ```ruby
10
+ gem "middleman-listpages", "~> 0.0.1"
11
11
  ```
12
12
 
13
13
  Then open your `config.rb` and add:
@@ -21,16 +21,64 @@ To display all pages:
21
21
  <%= list_pages %>
22
22
  ```
23
23
 
24
+ This will generate HTML like this (assuming "Apples" is the current page):
25
+ ```html
26
+ <ul>
27
+ <li class='active'><a href="/apples/">Apples</a></li>
28
+ <li>
29
+ <a href="/oranges/">Oranges</a>
30
+ <ul>
31
+ <li><a href="/oranges/navel/">Navel Oranges</a></li>
32
+ <li><a href="/oranges/clementine/">Clementine Oranges</a></li>
33
+ </ul>
34
+ </li>
35
+ </ul>
36
+ ```
37
+
24
38
  To display all children of current page:
25
39
  ```erb
26
40
  <%= list_pages current_page %>
27
41
  ```
28
42
 
29
- To display one level of children of current page:
43
+ You can use the `:depth` option to specify how many levels deep to display:
30
44
  ```erb
31
45
  <%= list_pages current_page, :depth => 1 %>
32
46
  ```
33
47
 
48
+ If you want to use options when displaying the root page, pass `nil` as the
49
+ first agrument:
50
+ ```erb
51
+ <%= list_pages nil, :depth => 1 %>
52
+ ```
53
+
54
+ To display the root page as well:
55
+ ```erb
56
+ <%= list_pages nil, :include_root => true %>
57
+ ```
58
+
59
+ This will generate:
60
+ ```html
61
+ <ul>
62
+ <li><a href="/index.html">Index Page Title</a>
63
+ <li class='active'><a href="/apples/">Apples</a></li>
64
+ <li>
65
+ <a href="/oranges/">Oranges</a>
66
+ <ul>
67
+ <li><a href="/oranges/navel/">Navel Oranges</a></li>
68
+ <li><a href="/oranges/clementine/">Clementine Oranges</a></li>
69
+ </ul>
70
+ </li>
71
+ </ul>
72
+ ```
73
+
74
+ This will generate HTML like this (assuming "Apples" is the current page):
75
+ ```html
76
+ <ul>
77
+ <li class='active'><a href="/apples/">Apples</a></li>
78
+ <li><a href="/oranges/">Oranges</a></li>
79
+ </ul>
80
+ ```
81
+
34
82
  To display all children of a specific page:
35
83
  ```erb
36
84
  <%= list_pages sitemap.find_resource_by_destination_path('index.html') %>
@@ -43,15 +91,11 @@ Since you might have sub LIs inside that, you'll probably want to reset the CSS
43
91
  of the inner LIs via something like this:
44
92
 
45
93
  ```css
46
- li {
47
- font-weight: normal;
94
+ li, li.active li {
95
+ font-weight: normal;
48
96
  }
49
97
 
50
98
  li.active {
51
- font-weight: bold;
52
- }
53
-
54
- li.active li {
55
- font-weight: normal;
99
+ font-weight: bold;
56
100
  }
57
101
  ```
@@ -0,0 +1,6 @@
1
+ <ul>
2
+ <% if opts[:include_root] && opts[:current_depth] == 1 %>
3
+ <%= li_for sitemap.find_resource_by_destination_path('index.html') %>
4
+ <% end %>
5
+ <%= child_html.join("\n") %>
6
+ </ul>
@@ -0,0 +1,4 @@
1
+ <li <%= active ? "class='active'" : "" %>>
2
+ <%= link_to page.data.title, page %>
3
+ <%= sub_list %>
4
+ </li>
@@ -1,3 +1,5 @@
1
+ require 'erb'
2
+
1
3
  module Middleman
2
4
  module ListPages
3
5
  class << self
@@ -16,26 +18,38 @@ module Middleman
16
18
  end
17
19
 
18
20
  page ||= sitemap.find_resource_by_destination_path('index.html')
19
- children = filter_children(page.children, opts[:extensions])
21
+ children = filter_children(page.children, opts.slice(:extensions))
20
22
 
21
23
  if children.empty?
22
24
  ""
23
25
  else
24
- opts[:current_depth] += 1
25
- child_html = children.map { |child| li_for(child, opts.dup) }
26
- "<ul>#{child_html.join}</ul>"
26
+ child_html = children.map do |child|
27
+ my_opts = opts.dup
28
+ my_opts[:current_depth] += 1
29
+ sub_list = list_pages(child, my_opts)
30
+ li_for(child, sub_list, my_opts)
31
+ end
32
+
33
+ render('_list', binding)
27
34
  end
28
35
  end
29
36
 
30
- def li_for(page, opts={})
31
- child_html = list_pages(page, opts)
37
+ def li_for(page, sub_list=nil, opts={})
32
38
  active = (page.path == current_page.path)
33
39
 
34
- "<li class='#{active ? "active" : ""}'>#{link_to page.data.title, page}#{child_html}</li>"
40
+ render('_list_item', binding)
41
+ end
42
+
43
+ private
44
+
45
+ def render(path, bound)
46
+ full_path = File.join(File.dirname(__FILE__), "#{path}.erb")
47
+ template = ERB.new(File.read full_path)
48
+ template.result bound
35
49
  end
36
50
 
37
- def filter_children(children, extensions=nil)
38
- extensions ||= ".html"
51
+ def filter_children(children, opts=nil)
52
+ extensions = opts[:extensions] || ".html"
39
53
  extensions = Array(extensions)
40
54
 
41
55
  children.reject { |p| p.data.title.nil? }.select do |p|
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module ListPages
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-listpages
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -41,6 +41,8 @@ files:
41
41
  - features/.gitkeep
42
42
  - fixtures/.gitkeep
43
43
  - lib/middleman-listpages.rb
44
+ - lib/middleman-listpages/_list.erb
45
+ - lib/middleman-listpages/_list_item.erb
44
46
  - lib/middleman-listpages/extension.rb
45
47
  - lib/middleman-listpages/version.rb
46
48
  - lib/middleman_extension.rb
@@ -59,7 +61,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
59
61
  version: '0'
60
62
  segments:
61
63
  - 0
62
- hash: 2220986079241718075
64
+ hash: 4217439097059215008
63
65
  required_rubygems_version: !ruby/object:Gem::Requirement
64
66
  none: false
65
67
  requirements:
@@ -68,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
70
  version: '0'
69
71
  segments:
70
72
  - 0
71
- hash: 2220986079241718075
73
+ hash: 4217439097059215008
72
74
  requirements: []
73
75
  rubyforge_project: middleman-listpages
74
76
  rubygems_version: 1.8.23