middleman-slickmap 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 +4 -0
- data/Gemfile +4 -0
- data/Rakefile +2 -0
- data/lib/middleman-slickmap.rb +98 -0
- data/lib/middleman-slickmap/.DS_Store +0 -0
- data/lib/middleman-slickmap/templates/slickmap.html.haml +27 -0
- data/lib/middleman-slickmap/version.rb +5 -0
- data/middleman-slickmap.gemspec +24 -0
- metadata +106 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'slickmap'
|
2
|
+
require "middleman/builder"
|
3
|
+
|
4
|
+
Entry = Struct.new(:dir, :children)
|
5
|
+
|
6
|
+
module Middleman
|
7
|
+
module Features
|
8
|
+
module Slickmap
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def registered(app)
|
12
|
+
sitemap_url = "sitemap.html"
|
13
|
+
sitemap_url = app.sitemap_url if app.respond_to?(:slickmap_url) && !app.sitemap_url.nil?
|
14
|
+
|
15
|
+
Middleman::Builder.after_run "smush_pngs" do
|
16
|
+
source_paths << File.expand_path(File.join(File.dirname(__FILE__), "middleman-slickmap", "templates"))
|
17
|
+
tilt_template "slickmap.html.haml", File.join(Middleman::Server.build_dir, sitemap_url), { :force => true }
|
18
|
+
end
|
19
|
+
|
20
|
+
app.helpers do
|
21
|
+
def sitemap_node(n, first=false)
|
22
|
+
if n.children.length < 1
|
23
|
+
if !first && File.extname(n.dir).length > 0
|
24
|
+
haml_tag :li do
|
25
|
+
path = n.dir.gsub(self.class.views, '')
|
26
|
+
haml_concat link_to(File.basename(path), path)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
else
|
30
|
+
haml_tag(:li, :id => first ? "home" : nil) do
|
31
|
+
if first
|
32
|
+
haml_concat link_to("Homepage", "/" + self.class.index_file)
|
33
|
+
else
|
34
|
+
# we are a dir
|
35
|
+
index = n.children.find { |c| c.dir.include?(self.class.index_file) }
|
36
|
+
haml_concat link_to(index.dir.gsub(self.class.views + "/", '').gsub("/" + File.basename(index.dir), '').capitalize, index.dir.gsub(self.class.views, ''))
|
37
|
+
end
|
38
|
+
|
39
|
+
other_children = n.children.select { |c| !c.dir.include?(self.class.index_file) }
|
40
|
+
if other_children.length > 0
|
41
|
+
if first
|
42
|
+
other_children.each { |i| sitemap_node(i) }
|
43
|
+
else
|
44
|
+
haml_tag :ul do
|
45
|
+
other_children.each { |i| sitemap_node(i) }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
app.get "/#{sitemap_url}" do
|
55
|
+
# Return :utility to put it util top menu. False to ignore
|
56
|
+
@tree, @utility = Middleman::Features::Slickmap.build_sitemap do |file_name|
|
57
|
+
:valid
|
58
|
+
end
|
59
|
+
|
60
|
+
haml "slickmap.html".to_sym, :layout => false, :views => File.expand_path(File.join(File.dirname(__FILE__), "middleman-slickmap", "templates"))
|
61
|
+
end
|
62
|
+
end
|
63
|
+
alias :included :registered
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.build_sitemap(&block)
|
67
|
+
@@utility = []
|
68
|
+
[recurse_sitemap(Middleman::Server.views, &block), @@utility]
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.recurse_sitemap(path, &block)
|
72
|
+
bad_ext = path.split('.html')[1]
|
73
|
+
path = path.gsub(bad_ext, '') if bad_ext
|
74
|
+
entry = Entry.new(path, [])
|
75
|
+
|
76
|
+
#no "." or ".." dirs
|
77
|
+
Dir[File.join(path, "*")].each do |e|
|
78
|
+
next if !File.directory?(e) && !e.include?(".html")
|
79
|
+
if File.directory?(e)
|
80
|
+
entry.children << recurse_sitemap(e, &block)
|
81
|
+
elsif block_given?
|
82
|
+
how_to_handle = block.call(e)
|
83
|
+
if how_to_handle == :valid
|
84
|
+
entry.children << recurse_sitemap(e, &block)
|
85
|
+
elsif how_to_handle == :utility
|
86
|
+
bad_ext = e.split('.html')[1]
|
87
|
+
e = e.gsub(bad_ext, '') if bad_ext
|
88
|
+
@@utility << e.gsub(Middleman::Server.views + "/", '')
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
entry
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
Binary file
|
@@ -0,0 +1,27 @@
|
|
1
|
+
!!!
|
2
|
+
%html{ :xmlns => "http://www.w3.org/1999/xhtml" }
|
3
|
+
%head
|
4
|
+
%meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-type" }
|
5
|
+
%title Sitemap
|
6
|
+
%style{ :type => "text/css" }
|
7
|
+
:sass
|
8
|
+
@import "slickmap"
|
9
|
+
+slickmap
|
10
|
+
:javascript
|
11
|
+
window.onload = function() {
|
12
|
+
document.getElementById('primaryNav').className = "col" + document.querySelectorAll("#primaryNav > li:not(#home)").length;
|
13
|
+
};
|
14
|
+
|
15
|
+
%body
|
16
|
+
.logo
|
17
|
+
%h1= @project_name || "Sitemap"
|
18
|
+
- if @project_subtitle
|
19
|
+
%h2= @project_subtitle
|
20
|
+
|
21
|
+
- if @utility.length > 0
|
22
|
+
%ul#utilityNav
|
23
|
+
- @utility.each do |u|
|
24
|
+
%li= link_to u, u
|
25
|
+
|
26
|
+
%ul#primaryNav
|
27
|
+
- sitemap_node(@tree, true)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "middleman-slickmap/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "middleman-slickmap"
|
7
|
+
s.version = Middleman::Slickmap::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Thomas Reynolds"]
|
10
|
+
s.email = ["tdreyno@gmail.com"]
|
11
|
+
s.homepage = "https://github.com/tdreyno/middleman-slickmap"
|
12
|
+
s.summary = %q{Automatic sitemaps in your Middleman project}
|
13
|
+
s.description = %q{Automatic sitemaps in your Middleman project}
|
14
|
+
|
15
|
+
s.rubyforge_project = "middleman-slickmap"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_runtime_dependency("middleman", ["~> 1.1.0"])
|
23
|
+
s.add_runtime_dependency("compass-slickmap", ["~> 0.4.0"])
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: middleman-slickmap
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Thomas Reynolds
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-04-20 00:00:00 -07:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: middleman
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 19
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 1
|
33
|
+
- 0
|
34
|
+
version: 1.1.0
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: compass-slickmap
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 15
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
- 4
|
49
|
+
- 0
|
50
|
+
version: 0.4.0
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
53
|
+
description: Automatic sitemaps in your Middleman project
|
54
|
+
email:
|
55
|
+
- tdreyno@gmail.com
|
56
|
+
executables: []
|
57
|
+
|
58
|
+
extensions: []
|
59
|
+
|
60
|
+
extra_rdoc_files: []
|
61
|
+
|
62
|
+
files:
|
63
|
+
- .gitignore
|
64
|
+
- Gemfile
|
65
|
+
- Rakefile
|
66
|
+
- lib/middleman-slickmap.rb
|
67
|
+
- lib/middleman-slickmap/.DS_Store
|
68
|
+
- lib/middleman-slickmap/templates/slickmap.html.haml
|
69
|
+
- lib/middleman-slickmap/version.rb
|
70
|
+
- middleman-slickmap.gemspec
|
71
|
+
has_rdoc: true
|
72
|
+
homepage: https://github.com/tdreyno/middleman-slickmap
|
73
|
+
licenses: []
|
74
|
+
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 3
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
version: "0"
|
98
|
+
requirements: []
|
99
|
+
|
100
|
+
rubyforge_project: middleman-slickmap
|
101
|
+
rubygems_version: 1.5.0
|
102
|
+
signing_key:
|
103
|
+
specification_version: 3
|
104
|
+
summary: Automatic sitemaps in your Middleman project
|
105
|
+
test_files: []
|
106
|
+
|