middleman-listpages 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
6
+ .DS_Store
7
+ .rbenv-version
data/Gemfile ADDED
@@ -0,0 +1,22 @@
1
+ source 'https://rubygems.org'
2
+
3
+ git "git://github.com/middleman/middleman.git", :branch => "3.0-stable" do
4
+ # gem "middleman"
5
+ gem "middleman-core"
6
+ # gem "middleman-more"
7
+ end
8
+
9
+ # Specify your gem's dependencies in middleman-blog.gemspec
10
+ gemspec
11
+
12
+ group :development do
13
+ gem "rake", "~> 0.9.2"
14
+ gem "rdoc", "~> 3.9"
15
+ gem "yard", "~> 0.8.0"
16
+ end
17
+
18
+ group :test do
19
+ gem "cucumber", "~> 1.2.0"
20
+ gem "fivemat"
21
+ gem "rspec", "~> 2.7"
22
+ end
data/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # middleman-listpages
2
+
3
+ middleman-listpages is an extension for the [Middleman](http://middlemanapp.com) static site generator that adds the
4
+ ability to list the child pages of a given page.
5
+
6
+ # Install
7
+
8
+ Add `middleman-listpages` to your `Gemfile`
9
+ ```
10
+ gem "middleman-listpages", :git => "git://github.com/strathmeyer/middleman-listpages.git"
11
+ ```
12
+
13
+ Then open your `config.rb` and add:
14
+ ```ruby
15
+ activate :listpages
16
+ ```
17
+ # Usage
18
+
19
+ To display all pages:
20
+ ```erb
21
+ <%= list_pages %>
22
+ ```
23
+
24
+ To display all children of current page:
25
+ ```erb
26
+ <%= list_pages current_page %>
27
+ ```
28
+
29
+ To display one level of children of current page:
30
+ ```erb
31
+ <%= list_pages current_page, :depth => 1 %>
32
+ ```
33
+
34
+ To display all children of a specific page:
35
+ ```erb
36
+ <%= list_pages sitemap.find_resource_by_destination_path('index.html') %>
37
+ ```
38
+
39
+ # CSS
40
+
41
+ The code will apply an `.active` class to the LI that represents the current page.
42
+ Since you might have sub LIs inside that, you'll probably want to reset the CSS
43
+ of the inner LIs via something like this:
44
+
45
+ ```css
46
+ li {
47
+ font-weight: normal;
48
+ }
49
+
50
+ li.active {
51
+ font-weight: bold;
52
+ }
53
+
54
+ li.active li {
55
+ font-weight: normal;
56
+ }
57
+ ```
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'cucumber/rake/task'
5
+
6
+ Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
7
+ ENV["TEST"] = "true"
8
+
9
+ exempt_tags = ""
10
+ exempt_tags << "--tags ~@nojava" if RUBY_PLATFORM == "java"
11
+
12
+ t.cucumber_opts = "--color --tags ~@wip #{exempt_tags} --strict --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
13
+ end
14
+
15
+ require 'rake/clean'
16
+
17
+ task :test => ["cucumber"]
18
+
19
+ desc "Build HTML documentation"
20
+ task :doc do
21
+ sh 'bundle exec yard'
22
+ end
data/features/.gitkeep ADDED
File without changes
data/fixtures/.gitkeep ADDED
File without changes
@@ -0,0 +1,47 @@
1
+ module Middleman
2
+ module ListPages
3
+ class << self
4
+ def registered(app)
5
+ app.helpers HelperMethods
6
+ end
7
+ alias :included :registered
8
+ end
9
+
10
+ module HelperMethods
11
+ def list_pages(page=nil, opts={})
12
+ opts[:depth] ||= -1
13
+ opts[:current_depth] ||= 1
14
+ if opts[:depth] > -1
15
+ return "" if (opts[:current_depth] > opts[:depth])
16
+ end
17
+
18
+ page ||= sitemap.find_resource_by_destination_path('index.html')
19
+ children = filter_children(page.children, opts[:extensions])
20
+
21
+ if children.empty?
22
+ ""
23
+ else
24
+ opts[:current_depth] += 1
25
+ child_html = children.map { |child| li_for(child, opts.dup) }
26
+ "<ul>#{child_html.join}</ul>"
27
+ end
28
+ end
29
+
30
+ def li_for(page, opts={})
31
+ child_html = list_pages(page, opts)
32
+ active = (page.path == current_page.path)
33
+
34
+ "<li class='#{active ? "active" : ""}'>#{link_to page.data.title, page}#{child_html}</li>"
35
+ end
36
+
37
+ def filter_children(children, extensions=nil)
38
+ extensions ||= ".html"
39
+ extensions = Array(extensions)
40
+
41
+ children.reject { |p| p.data.title.nil? }.select do |p|
42
+ extensions.include? p.ext
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,5 @@
1
+ module Middleman
2
+ module ListPages
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require "middleman-core"
2
+ require "middleman-listpages/version"
3
+
4
+ ::Middleman::Extensions.register(:listpages) do
5
+ require "middleman-listpages/extension"
6
+ ::Middleman::ListPages
7
+ end
@@ -0,0 +1 @@
1
+ require "middleman-listpages"
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "middleman-listpages/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "middleman-listpages"
7
+ s.version = Middleman::ListPages::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Eric Strathmeyer"]
10
+ s.email = ["eric@vawks.com"]
11
+ s.homepage = "https://github.com/strathmeyer/middleman-listpages"
12
+ s.summary = %q{Adds listpages to Middleman}
13
+ s.description = %q{Adds listpages to Middleman}
14
+
15
+ s.rubyforge_project = "middleman-listpages"
16
+
17
+ s.files = `git ls-files -z`.split("\0")
18
+ s.test_files = `git ls-files -z -- {fixtures,features}/*`.split("\0")
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_dependency("middleman-core", ["~> 3.0.2"])
22
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: middleman-listpages
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eric Strathmeyer
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: middleman-core
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.2
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.2
30
+ description: Adds listpages to Middleman
31
+ email:
32
+ - eric@vawks.com
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - .gitignore
38
+ - Gemfile
39
+ - README.md
40
+ - Rakefile
41
+ - features/.gitkeep
42
+ - fixtures/.gitkeep
43
+ - lib/middleman-listpages.rb
44
+ - lib/middleman-listpages/extension.rb
45
+ - lib/middleman-listpages/version.rb
46
+ - lib/middleman_extension.rb
47
+ - middleman-listpages.gemspec
48
+ homepage: https://github.com/strathmeyer/middleman-listpages
49
+ licenses: []
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ segments:
61
+ - 0
62
+ hash: 2220986079241718075
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ segments:
70
+ - 0
71
+ hash: 2220986079241718075
72
+ requirements: []
73
+ rubyforge_project: middleman-listpages
74
+ rubygems_version: 1.8.23
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: Adds listpages to Middleman
78
+ test_files:
79
+ - features/.gitkeep
80
+ - fixtures/.gitkeep
81
+ has_rdoc: