backstack 0.1.0 → 0.2.0
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/VERSION +1 -1
- data/art/animation/1.gif +0 -0
- data/art/animation/2.gif +0 -0
- data/art/animation/3.gif +0 -0
- data/art/animation/4.gif +0 -0
- data/art/animation/5.gif +0 -0
- data/art/animation/6.gif +0 -0
- data/art/animation/anim.gif +0 -0
- data/art/backlinks.gif +0 -0
- data/art/bowling_pins (Autosaved).graffle +0 -0
- data/art/bowling_pins.graffle +0 -0
- data/art/complete.gif +0 -0
- data/art/idealized.gif +0 -0
- data/backstack.gemspec +13 -2
- data/lib/backstack.rb +9 -9
- data/lib/backstacklib.rb +14 -14
- data/test/rails_root/Gemfile.lock +1 -1
- data/test/rails_root/app/views/layouts/_pins.html.erb +5 -5
- metadata +22 -11
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/art/animation/1.gif
ADDED
Binary file
|
data/art/animation/2.gif
ADDED
Binary file
|
data/art/animation/3.gif
ADDED
Binary file
|
data/art/animation/4.gif
ADDED
Binary file
|
data/art/animation/5.gif
ADDED
Binary file
|
data/art/animation/6.gif
ADDED
Binary file
|
Binary file
|
data/art/backlinks.gif
ADDED
Binary file
|
Binary file
|
data/art/bowling_pins.graffle
CHANGED
Binary file
|
data/art/complete.gif
ADDED
Binary file
|
data/art/idealized.gif
ADDED
Binary file
|
data/backstack.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{backstack}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kevin Swope"]
|
12
|
-
s.date = %q{2011-07-
|
12
|
+
s.date = %q{2011-07-10}
|
13
13
|
s.description = %q{Rails plugin used to dynamically and intelligently generate "back" links or a breadcrumb trail.}
|
14
14
|
s.email = %q{git-kevdev@snkmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,7 +24,18 @@ Gem::Specification.new do |s|
|
|
24
24
|
"README.rdoc",
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
|
+
"art/animation/1.gif",
|
28
|
+
"art/animation/2.gif",
|
29
|
+
"art/animation/3.gif",
|
30
|
+
"art/animation/4.gif",
|
31
|
+
"art/animation/5.gif",
|
32
|
+
"art/animation/6.gif",
|
33
|
+
"art/animation/anim.gif",
|
34
|
+
"art/backlinks.gif",
|
35
|
+
"art/bowling_pins (Autosaved).graffle",
|
27
36
|
"art/bowling_pins.graffle",
|
37
|
+
"art/complete.gif",
|
38
|
+
"art/idealized.gif",
|
28
39
|
"backstack.gemspec",
|
29
40
|
"lib/backstack.rb",
|
30
41
|
"lib/backstacklib.rb",
|
data/lib/backstack.rb
CHANGED
@@ -42,15 +42,15 @@ module BackStack
|
|
42
42
|
# both keys and values.
|
43
43
|
normalizer = lambda {|x| bs_action_normal(controller_name, x) }
|
44
44
|
|
45
|
-
# Add new edges to existing graph, and extract out the
|
46
|
-
# bs_add_edges will also accumulate
|
47
|
-
@bs_graph, @
|
45
|
+
# Add new edges to existing graph, and extract out the labels.
|
46
|
+
# bs_add_edges will also accumulate labels for us.
|
47
|
+
@bs_graph, @bs_labels = bs_add_edges(@bs_graph, @bs_labels,
|
48
48
|
edges, normalizer)
|
49
49
|
|
50
50
|
end
|
51
51
|
|
52
52
|
# So ApplicationController methods can reach @bs_graph and
|
53
|
-
# @
|
53
|
+
# @bs_labels. I wanted to use @@bs_graph, so both AC::B and the
|
54
54
|
# instance of AC could reach it, but this mysteriously breaks
|
55
55
|
# rails routing! So here are getters than we can use and access
|
56
56
|
# from the AC instance as self.class.get_bs_graph. RoR can be a
|
@@ -59,8 +59,8 @@ module BackStack
|
|
59
59
|
@bs_graph
|
60
60
|
end
|
61
61
|
|
62
|
-
def
|
63
|
-
@
|
62
|
+
def get_bs_labels
|
63
|
+
@bs_labels
|
64
64
|
end
|
65
65
|
|
66
66
|
send :include, InstanceMethods
|
@@ -94,7 +94,7 @@ module BackStack
|
|
94
94
|
|
95
95
|
hashify = lambda{|x|
|
96
96
|
c, a = x[0].split /#/
|
97
|
-
{:controller => c, :action => a, :fullpath => x[1], :
|
97
|
+
{:controller => c, :action => a, :fullpath => x[1], :label => x[2]}
|
98
98
|
}
|
99
99
|
|
100
100
|
if block_given?
|
@@ -133,7 +133,7 @@ class ActionController::Base
|
|
133
133
|
puts "=== backstack_dump() " + '=' * 50
|
134
134
|
|
135
135
|
puts "backstack graph: #{self.class.get_bs_graph}"
|
136
|
-
puts "backstack
|
136
|
+
puts "backstack labels: #{self.class.get_bs_labels}"
|
137
137
|
puts "backstack stack: #{session[:bs_stack]}"
|
138
138
|
|
139
139
|
puts '=' * 71
|
@@ -150,7 +150,7 @@ class ActionController::Base
|
|
150
150
|
session[:bs_stack],
|
151
151
|
action,
|
152
152
|
request.fullpath,
|
153
|
-
self.class.
|
153
|
+
self.class.get_bs_labels[action])
|
154
154
|
|
155
155
|
end
|
156
156
|
|
data/lib/backstacklib.rb
CHANGED
@@ -30,35 +30,35 @@ module BackStackLib
|
|
30
30
|
# Note: the shorthand form of the edges parameter can be taken as far as
|
31
31
|
# something like this {[:d, :e, :f] => [:b, :c]}
|
32
32
|
#
|
33
|
-
# New feature:
|
34
|
-
#
|
35
|
-
# those
|
33
|
+
# New feature: labeled nodes. Instead of {:c => :a}, the "key" can be
|
34
|
+
# labeled like this {{:c => "Charlie"} => :a}. We're going to remove
|
35
|
+
# those labeled keys, replace them with just the key, and return them as
|
36
36
|
# the second value
|
37
37
|
#
|
38
38
|
# Decided to allow user to pass a normalizer proc/lambda in to
|
39
39
|
# modify all the keys and values.
|
40
|
-
def bs_add_edges(graph,
|
40
|
+
def bs_add_edges(graph, labels, edges, normalizer=nil)
|
41
41
|
|
42
42
|
graph ||= {}
|
43
|
-
|
43
|
+
labels ||= {}
|
44
44
|
|
45
45
|
edges.each do |k,v| # k is a scalar or array, same with v
|
46
46
|
|
47
47
|
# Does this [x].flatten idiom make it less readable?
|
48
48
|
[k].flatten.each do |x|
|
49
49
|
|
50
|
-
# Extract
|
51
|
-
if x.class == Hash # if its a hash it contains a
|
52
|
-
|
53
|
-
x = x.first[0] # remove
|
50
|
+
# Extract labels out into their own hash, and normalize key
|
51
|
+
if x.class == Hash # if its a hash it contains a label
|
52
|
+
labels[x.first[0]] = x.first[1]
|
53
|
+
x = x.first[0] # remove label and replace with normal key
|
54
54
|
end
|
55
55
|
|
56
56
|
# Run normalizer on all keys and values of new edges
|
57
57
|
if normalizer
|
58
58
|
x = normalizer.call(x)
|
59
59
|
v = [v].flatten.map{|y| normalizer.call(y)}
|
60
|
-
# also run normalizer on
|
61
|
-
|
60
|
+
# also run normalizer on labels keys
|
61
|
+
labels = Hash[labels.map {|k,v| [normalizer.call(k), v]}]
|
62
62
|
end
|
63
63
|
|
64
64
|
# If merge finds dupe keys it will use block to determine
|
@@ -71,20 +71,20 @@ module BackStackLib
|
|
71
71
|
|
72
72
|
end
|
73
73
|
|
74
|
-
[graph,
|
74
|
+
[graph, labels]
|
75
75
|
|
76
76
|
end
|
77
77
|
|
78
78
|
# Judging by graph, push onto stack if appropriate. Pushing doesn't
|
79
79
|
# necessarily build stack up, it might cause a rewind and actually
|
80
80
|
# shrink stack.
|
81
|
-
def bs_push(graph, stack, action, fullpath,
|
81
|
+
def bs_push(graph, stack, action, fullpath, label=nil)
|
82
82
|
|
83
83
|
# bs_push might be called before there is a graph or stack
|
84
84
|
graph ||= {}
|
85
85
|
stack ||= []
|
86
86
|
|
87
|
-
element = [action, fullpath,
|
87
|
+
element = [action, fullpath, label]
|
88
88
|
|
89
89
|
# if action closes to what's on top of stack, build stack up
|
90
90
|
if graph[action] && stack.last && graph[action].include?(stack.last.first)
|
@@ -18,9 +18,9 @@
|
|
18
18
|
<p class="trail" id="link_trail">
|
19
19
|
<% backstack_trail do |c| %>
|
20
20
|
<% if c[:fullpath] == request.fullpath %>
|
21
|
-
<%= c[:
|
21
|
+
<%= c[:label] %> /
|
22
22
|
<% else %>
|
23
|
-
<%= smart_link_to(c[:
|
23
|
+
<%= smart_link_to(c[:label], c[:fullpath]) %> /
|
24
24
|
<% end %>
|
25
25
|
<% end %>
|
26
26
|
</p>
|
@@ -29,9 +29,9 @@
|
|
29
29
|
<%# trail demonstrating calling without block returns array, no links this time %>
|
30
30
|
<p class="trail" id="no_link_trail">
|
31
31
|
|
32
|
-
<%
|
33
|
-
<% backstack_trail.each {|c|
|
34
|
-
<%=
|
32
|
+
<% crumbs = [] %>
|
33
|
+
<% backstack_trail.each {|c| crumbs.push c[:label] } %>
|
34
|
+
<%= crumbs.join(" / ").html_safe %>
|
35
35
|
|
36
36
|
</p>
|
37
37
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-07-
|
12
|
+
date: 2011-07-10 00:00:00.000000000 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: minitest
|
17
|
-
requirement: &
|
17
|
+
requirement: &2152716200 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2152716200
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: bundler
|
28
|
-
requirement: &
|
28
|
+
requirement: &2152715720 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2152715720
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: jeweler
|
39
|
-
requirement: &
|
39
|
+
requirement: &2152715240 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.6.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2152715240
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rcov
|
50
|
-
requirement: &
|
50
|
+
requirement: &2152714760 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2152714760
|
59
59
|
description: Rails plugin used to dynamically and intelligently generate "back" links
|
60
60
|
or a breadcrumb trail.
|
61
61
|
email: git-kevdev@snkmail.com
|
@@ -72,7 +72,18 @@ files:
|
|
72
72
|
- README.rdoc
|
73
73
|
- Rakefile
|
74
74
|
- VERSION
|
75
|
+
- art/animation/1.gif
|
76
|
+
- art/animation/2.gif
|
77
|
+
- art/animation/3.gif
|
78
|
+
- art/animation/4.gif
|
79
|
+
- art/animation/5.gif
|
80
|
+
- art/animation/6.gif
|
81
|
+
- art/animation/anim.gif
|
82
|
+
- art/backlinks.gif
|
83
|
+
- art/bowling_pins (Autosaved).graffle
|
75
84
|
- art/bowling_pins.graffle
|
85
|
+
- art/complete.gif
|
86
|
+
- art/idealized.gif
|
76
87
|
- backstack.gemspec
|
77
88
|
- lib/backstack.rb
|
78
89
|
- lib/backstacklib.rb
|
@@ -160,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
171
|
version: '0'
|
161
172
|
segments:
|
162
173
|
- 0
|
163
|
-
hash: -
|
174
|
+
hash: -463953268826810848
|
164
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
176
|
none: false
|
166
177
|
requirements:
|