navigator 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +37 -11
- data/app/helpers/navigator/navigation_helper.rb +1 -0
- data/lib/navigator/engine.rb +2 -1
- data/lib/navigator/identity.rb +3 -2
- data/lib/navigator/menu.rb +9 -11
- data/lib/navigator/tag.rb +5 -6
- data/lib/navigator/tag_activator.rb +1 -1
- data/lib/tasks/rspec.rake +6 -0
- data/lib/tasks/rubocop.rake +6 -0
- metadata +51 -30
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 901fe36b917fe74821492def2f73fdd4719be8cb
|
4
|
+
data.tar.gz: 00ad7dc0af942727f310e22cfc79a7275c228c53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdd19345525e161d78c063a0d12ffb090365381ca1982b6e007596d683697f64d195f1461570d59739b8d38ad59a2c8f4932cbf601ff4c26848225dace13108a
|
7
|
+
data.tar.gz: 08b0b6426e00689a7479c0ca29ffbb0b01f0134134b1acae72be1a38e68f0ca8daae9a272fb6dc7eb49324f16e234789edcdeb6bec8555dee79263ad6e9ed067
|
data/README.md
CHANGED
@@ -1,14 +1,40 @@
|
|
1
|
-
#
|
1
|
+
# Navigator
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/navigator.
|
4
|
-
[![Code Climate GPA](https://codeclimate.com/github/bkuhlmann/navigator.
|
5
|
-
[![Code Climate Coverage](https://codeclimate.com/github/bkuhlmann/navigator/coverage.
|
6
|
-
[![Gemnasium Status](https://gemnasium.com/bkuhlmann/navigator.
|
7
|
-
[![Travis CI Status](https://secure.travis-ci.org/bkuhlmann/navigator.
|
8
|
-
[![
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/navigator.svg)](http://badge.fury.io/rb/navigator)
|
4
|
+
[![Code Climate GPA](https://codeclimate.com/github/bkuhlmann/navigator.svg)](https://codeclimate.com/github/bkuhlmann/navigator)
|
5
|
+
[![Code Climate Coverage](https://codeclimate.com/github/bkuhlmann/navigator/coverage.svg)](https://codeclimate.com/github/bkuhlmann/navigator)
|
6
|
+
[![Gemnasium Status](https://gemnasium.com/bkuhlmann/navigator.svg)](https://gemnasium.com/bkuhlmann/navigator)
|
7
|
+
[![Travis CI Status](https://secure.travis-ci.org/bkuhlmann/navigator.svg)](https://travis-ci.org/bkuhlmann/navigator)
|
8
|
+
[![Patreon](https://img.shields.io/badge/patreon-donate-brightgreen.svg)](https://www.patreon.com/bkuhlmann)
|
9
9
|
|
10
10
|
Enhances Rails with a DSL for menu navigation.
|
11
11
|
|
12
|
+
<!-- Tocer[start]: Auto-generated, don't remove. -->
|
13
|
+
|
14
|
+
# Table of Contents
|
15
|
+
|
16
|
+
- [Features](#features)
|
17
|
+
- [Requirements](#requirements)
|
18
|
+
- [Setup](#setup)
|
19
|
+
- [Usage](#usage)
|
20
|
+
- [Unordered List (simple)](#unordered-list-simple)
|
21
|
+
- [Unordered List (with attributes)](#unordered-list-with-attributes)
|
22
|
+
- [Unordered List (with multiple data attributes)](#unordered-list-with-multiple-data-attributes)
|
23
|
+
- [Nav (with links)](#nav-with-links)
|
24
|
+
- [Foundation Menu](#foundation-menu)
|
25
|
+
- [Bootstrap Dropdown](#bootstrap-dropdown)
|
26
|
+
- [Menu Helpers](#menu-helpers)
|
27
|
+
- [Customization](#customization)
|
28
|
+
- [Tests](#tests)
|
29
|
+
- [Versioning](#versioning)
|
30
|
+
- [Code of Conduct](#code-of-conduct)
|
31
|
+
- [Contributions](#contributions)
|
32
|
+
- [License](#license)
|
33
|
+
- [History](#history)
|
34
|
+
- [Credits](#credits)
|
35
|
+
|
36
|
+
<!-- Tocer[finish]: Auto-generated, don't remove. -->
|
37
|
+
|
12
38
|
# Features
|
13
39
|
|
14
40
|
- Provides a DSL for building navigation menus.
|
@@ -42,7 +68,7 @@ Enhances Rails with a DSL for menu navigation.
|
|
42
68
|
|
43
69
|
# Requirements
|
44
70
|
|
45
|
-
0. [MRI 2.x.x](
|
71
|
+
0. [MRI 2.x.x](https://www.ruby-lang.org).
|
46
72
|
0. [Ruby on Rails 4.1.x](http://rubyonrails.org).
|
47
73
|
|
48
74
|
# Setup
|
@@ -238,13 +264,13 @@ When building links, the default is:
|
|
238
264
|
When building images, the default is:
|
239
265
|
|
240
266
|
navigation "nav", activator: activator do
|
241
|
-
img attributes: {src: "
|
267
|
+
img attributes: {src: "https://placehold.it/50x50", alt: "Example"}
|
242
268
|
end
|
243
269
|
|
244
270
|
...but can be written as:
|
245
271
|
|
246
272
|
navigation "nav", activator: activator do
|
247
|
-
image "
|
273
|
+
image "https://placehold.it/50x50", "Example"
|
248
274
|
end
|
249
275
|
|
250
276
|
When building menu items, the default is:
|
@@ -351,7 +377,7 @@ regular expression (i.e. `/^profile.+/`) matching one of the the `profile/*` pat
|
|
351
377
|
|
352
378
|
To test, run:
|
353
379
|
|
354
|
-
bundle exec
|
380
|
+
bundle exec rake
|
355
381
|
|
356
382
|
To test the dummy application, run:
|
357
383
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module Navigator
|
2
|
+
# Navigation helper methods for the view layer.
|
2
3
|
module NavigationHelper
|
3
4
|
def navigation tag = "ul", attributes: {}, activator: navigation_activator, &block
|
4
5
|
raw Navigator::Menu.new(self, tag: tag, attributes: attributes, activator: activator, &block).render
|
data/lib/navigator/engine.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module Navigator
|
2
|
+
# The main engine.
|
2
3
|
class Engine < ::Rails::Engine
|
3
4
|
isolate_namespace Navigator
|
4
5
|
|
5
|
-
initializer "navigator.action_controller" do
|
6
|
+
initializer "navigator.action_controller" do
|
6
7
|
ActiveSupport.on_load :action_controller do
|
7
8
|
helper Navigator::Engine.helpers
|
8
9
|
end
|
data/lib/navigator/identity.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
module Navigator
|
2
|
+
# Gem identity information.
|
2
3
|
module Identity
|
3
4
|
def self.name
|
4
5
|
"navigator"
|
@@ -9,11 +10,11 @@ module Navigator
|
|
9
10
|
end
|
10
11
|
|
11
12
|
def self.version
|
12
|
-
"1.
|
13
|
+
"1.4.0"
|
13
14
|
end
|
14
15
|
|
15
16
|
def self.label_version
|
16
|
-
|
17
|
+
"#{label} #{version}"
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
data/lib/navigator/menu.rb
CHANGED
@@ -2,7 +2,7 @@ module Navigator
|
|
2
2
|
# Renders a HTML menu.
|
3
3
|
class Menu
|
4
4
|
def self.allowed_methods
|
5
|
-
|
5
|
+
/^(div|section|header|h[1-6]|nav|ul|li|a|img|b|em|s|small|span|strong|sub|sup|form|label|select|option|input|button)$/
|
6
6
|
end
|
7
7
|
|
8
8
|
def initialize template, tag: "ul", attributes: {}, activator: Navigator::TagActivator.new, &block
|
@@ -15,14 +15,12 @@ module Navigator
|
|
15
15
|
|
16
16
|
def add name, content = nil, attributes: {}, activator: menu_activator, &block
|
17
17
|
tag = Navigator::Tag.new name, content, attributes: attributes, activator: activator
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
items << tag.render
|
25
|
-
end
|
18
|
+
return items << tag.render unless block_given?
|
19
|
+
|
20
|
+
items << tag.prefix
|
21
|
+
items << tag.content
|
22
|
+
instance_eval(&block)
|
23
|
+
items << tag.suffix
|
26
24
|
end
|
27
25
|
|
28
26
|
def link content = nil, url, attributes: {}, activator: menu_activator, &block
|
@@ -58,7 +56,7 @@ module Navigator
|
|
58
56
|
end
|
59
57
|
|
60
58
|
def render
|
61
|
-
[tag.prefix, tag.content, items.compact.join(
|
59
|
+
[tag.prefix, tag.content, items.compact.join(""), tag.suffix].compact * ""
|
62
60
|
end
|
63
61
|
|
64
62
|
private
|
@@ -71,7 +69,7 @@ module Navigator
|
|
71
69
|
|
72
70
|
def activate_item_attributes! attributes, url, activator
|
73
71
|
return unless url == activator.search_value
|
74
|
-
attributes[activator.target_key] = [attributes[activator.target_key], activator.target_value].compact *
|
72
|
+
attributes[activator.target_key] = [attributes[activator.target_key], activator.target_value].compact * " "
|
75
73
|
end
|
76
74
|
end
|
77
75
|
end
|
data/lib/navigator/tag.rb
CHANGED
@@ -15,7 +15,7 @@ module Navigator
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def prefix
|
18
|
-
["<#{name}", format_attributes,
|
18
|
+
["<#{name}", format_attributes, ">"].compact * ""
|
19
19
|
end
|
20
20
|
|
21
21
|
def computed_content
|
@@ -27,7 +27,7 @@ module Navigator
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def render
|
30
|
-
[prefix, computed_content, suffix].compact *
|
30
|
+
[prefix, computed_content, suffix].compact * ""
|
31
31
|
end
|
32
32
|
|
33
33
|
private
|
@@ -35,13 +35,12 @@ module Navigator
|
|
35
35
|
attr_reader :attributes, :activator
|
36
36
|
|
37
37
|
def expand_data_attributes! attrs
|
38
|
-
|
39
|
-
|
40
|
-
end
|
38
|
+
return unless attrs.key? :data
|
39
|
+
attrs.delete(:data).each { |key, value| attrs["data-#{key}"] = value }
|
41
40
|
end
|
42
41
|
|
43
42
|
def concatenate_attributes attrs
|
44
|
-
activator.activate(attrs).map { |key, value| %(#{key}="#{value}") } *
|
43
|
+
activator.activate(attrs).map { |key, value| %(#{key}="#{value}") } * " "
|
45
44
|
end
|
46
45
|
|
47
46
|
def format_attributes
|
@@ -25,7 +25,7 @@ module Navigator
|
|
25
25
|
|
26
26
|
def activate attributes = {}
|
27
27
|
attributes = attributes.with_indifferent_access
|
28
|
-
attributes[target_key] = [attributes[target_key], target_value].compact.join(
|
28
|
+
attributes[target_key] = [attributes[target_key], target_value].compact.join(" ") if activatable? attributes
|
29
29
|
attributes
|
30
30
|
end
|
31
31
|
end
|
metadata
CHANGED
@@ -1,36 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: navigator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
-
|
12
|
-
-----BEGIN CERTIFICATE-----
|
13
|
-
MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZicm9v
|
14
|
-
a2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQBGRYC
|
15
|
-
aW8wHhcNMTUwNzA1MTQ1MzExWhcNMTYwNzA0MTQ1MzExWjBBMQ8wDQYDVQQDDAZi
|
16
|
-
cm9va2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQB
|
17
|
-
GRYCaW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzhOVcvLGBCceM
|
18
|
-
PppVpJLUKsnskWzc1VqBXmv30feKNw+MOxMQaDsIP421qwqGO/2JHY60Kuobssk+
|
19
|
-
8/wqZkVFF/FFKxoQjuhlhc+VWLm8jWgXd4N1kwO2yytscQTzxc5qXarwA+36fqVH
|
20
|
-
RhBAHhjka+HdBI+6o3CXRHJoC47iav+QpR7u/wYl3gNq6MJO3MmTKqHegEDLjRN0
|
21
|
-
FJAr3bRAwq03ZtTuAVA2bdKLGThehe1RRRtJHJ/PHpmL2c203/GTXYtG6C8ILZIp
|
22
|
-
ZroTqQ8yglCJ+3hSOmodZqSAQ0Rj7GJgtuNH81qlSrHu5sTvoZjGmEqSIhvsSJ80
|
23
|
-
wKoPdZnFAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
24
|
-
BBSUnF478a5lB4xuOBiktJdMJv6JmDAfBgNVHREEGDAWgRRicm9va2VAYWxjaGVt
|
25
|
-
aXN0cy5pbzAfBgNVHRIEGDAWgRRicm9va2VAYWxjaGVtaXN0cy5pbzANBgkqhkiG
|
26
|
-
9w0BAQUFAAOCAQEAT7KtBXWsq1KA7NOSMeFEDeSvhrgdLwCG/37pIu0rjvx9iAW4
|
27
|
-
gncxV0MccqIUtaF+lekjlXkIO+rXAVjvdha23KtpFTW90dYXp4NLPnPlSdyvYzJy
|
28
|
-
FIAaWGvujOT8xEu4umd45q5aepE8li4bR071i5Z7F0trKNVYYrxjQFmH5SSKYRT/
|
29
|
-
fXtICtAh1de3z3SOSK58IMPwjuoApYBxiqlmx0Uhla7mrzCE5+NmLPit3hLH6JFK
|
30
|
-
aSif+qBc6oHD7EQWPF5cZkzkIURuwNwPBngZGxIKaMAgRhjGFXzUMAaq++r59cS9
|
31
|
-
xTfQ4k6fglKEgpnLAXiKdo2c8Ym+X4rIKFfedQ==
|
32
|
-
-----END CERTIFICATE-----
|
33
|
-
date: 2015-07-05 00:00:00.000000000 Z
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-02 00:00:00.000000000 Z
|
34
12
|
dependencies:
|
35
13
|
- !ruby/object:Gem::Dependency
|
36
14
|
name: rails
|
@@ -60,6 +38,20 @@ dependencies:
|
|
60
38
|
- - "~>"
|
61
39
|
- !ruby/object:Gem::Version
|
62
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: gemsmith
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
63
55
|
- !ruby/object:Gem::Dependency
|
64
56
|
name: pry
|
65
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,7 +81,7 @@ dependencies:
|
|
89
81
|
- !ruby/object:Gem::Version
|
90
82
|
version: '0'
|
91
83
|
- !ruby/object:Gem::Dependency
|
92
|
-
name: pry-
|
84
|
+
name: pry-remote
|
93
85
|
requirement: !ruby/object:Gem::Requirement
|
94
86
|
requirements:
|
95
87
|
- - ">="
|
@@ -103,7 +95,7 @@ dependencies:
|
|
103
95
|
- !ruby/object:Gem::Version
|
104
96
|
version: '0'
|
105
97
|
- !ruby/object:Gem::Dependency
|
106
|
-
name: pry-
|
98
|
+
name: pry-state
|
107
99
|
requirement: !ruby/object:Gem::Requirement
|
108
100
|
requirements:
|
109
101
|
- - ">="
|
@@ -130,6 +122,20 @@ dependencies:
|
|
130
122
|
- - ">="
|
131
123
|
- !ruby/object:Gem::Version
|
132
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry-stack_explorer
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
133
139
|
- !ruby/object:Gem::Dependency
|
134
140
|
name: rspec-rails
|
135
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,6 +220,20 @@ dependencies:
|
|
214
220
|
- - ">="
|
215
221
|
- !ruby/object:Gem::Version
|
216
222
|
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: rubocop
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
217
237
|
- !ruby/object:Gem::Dependency
|
218
238
|
name: codeclimate-test-reporter
|
219
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -228,8 +248,7 @@ dependencies:
|
|
228
248
|
- - ">="
|
229
249
|
- !ruby/object:Gem::Version
|
230
250
|
version: '0'
|
231
|
-
description: Enhances Rails with a DSL for menu navigation
|
232
|
-
nested tags, HTML attributes, etc.
|
251
|
+
description: Enhances Rails with a DSL for menu navigation.
|
233
252
|
email:
|
234
253
|
- brooke@alchemists.io
|
235
254
|
executables: []
|
@@ -247,6 +266,8 @@ files:
|
|
247
266
|
- lib/navigator/menu.rb
|
248
267
|
- lib/navigator/tag.rb
|
249
268
|
- lib/navigator/tag_activator.rb
|
269
|
+
- lib/tasks/rspec.rake
|
270
|
+
- lib/tasks/rubocop.rake
|
250
271
|
homepage: https://github.com/bkuhlmann/navigator
|
251
272
|
licenses:
|
252
273
|
- MIT
|
@@ -267,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
267
288
|
version: '0'
|
268
289
|
requirements: []
|
269
290
|
rubyforge_project:
|
270
|
-
rubygems_version: 2.
|
291
|
+
rubygems_version: 2.5.0
|
271
292
|
signing_key:
|
272
293
|
specification_version: 4
|
273
294
|
summary: Enhances Rails with a DSL for menu navigation.
|
checksums.yaml.gz.sig
DELETED
Binary file
|
data.tar.gz.sig
DELETED
Binary file
|
metadata.gz.sig
DELETED
Binary file
|