middleman-listpages 0.0.1

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