helmsman 0.0.7 → 0.0.8
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.
- checksums.yaml +4 -4
- data/README.md +27 -17
- data/lib/helmsman/helm.rb +4 -2
- data/lib/helmsman/version.rb +1 -1
- data/lib/helmsman/view_helper.rb +13 -3
- data/spec/lib/helmsman/helm_spec.rb +5 -0
- data/spec/lib/helmsman/view_helper_spec.rb +24 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e267300084ce4f8e33e158fa766cca8bba95aa84
|
4
|
+
data.tar.gz: dbb9e507ec5b46d6b66c4b129af9b420924950ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a7cb10fc14086ee58a315b956ea668ca8e57a93219680dab4dc649e56cb4af09e3fabcb2c4d211f96e3963b2427f1ca80799a198ed4cb1bb2acc3aab2c2931a
|
7
|
+
data.tar.gz: b4321b2cb64cccc317653d2d6078bae3cfb37aedbed70388caeae852927d4716849817ae0bdc4d808dedb2d4b9661393bc1c7884cf0701cbad4381db61754869
|
data/README.md
CHANGED
@@ -32,28 +32,28 @@ The above call will produce the following html output
|
|
32
32
|
|
33
33
|
There are multiple ways to build the link:
|
34
34
|
|
35
|
-
1.
|
35
|
+
1. Provide the url parameter. The link will then be build by using the translation and that url.
|
36
36
|
|
37
|
-
```ruby
|
38
|
-
helm :pictures, url: 'http://randompictures.com'
|
39
|
-
```
|
37
|
+
```ruby
|
38
|
+
helm :pictures, url: 'http://randompictures.com'
|
39
|
+
```
|
40
40
|
|
41
|
-
2.
|
41
|
+
2. Set helm values in a block. (This works for name and url only.)
|
42
42
|
|
43
|
-
```ruby
|
44
|
-
helm :pictures do |entry|
|
45
|
-
|
46
|
-
|
47
|
-
end
|
48
|
-
```
|
43
|
+
```ruby
|
44
|
+
helm :pictures do |entry|
|
45
|
+
entry.name = 'Some pictures'
|
46
|
+
entry.url = 'http://randompictures.com'
|
47
|
+
end
|
48
|
+
```
|
49
49
|
|
50
|
-
3.
|
50
|
+
3. Build everything manually
|
51
51
|
|
52
|
-
```ruby
|
53
|
-
helm :pictures do |_|
|
54
|
-
|
55
|
-
end
|
56
|
-
```
|
52
|
+
```ruby
|
53
|
+
helm :pictures do |_|
|
54
|
+
link_to 'Some pictures', 'http://randompictures.com'
|
55
|
+
end
|
56
|
+
```
|
57
57
|
|
58
58
|
### Translation lookup
|
59
59
|
|
@@ -65,6 +65,16 @@ e.g. `helm :edit` called from `app/views/pictures/_menu.html.*` uses the followi
|
|
65
65
|
- en.pictures.menu.edit_disabled_tooltip
|
66
66
|
- en.pictures.menu.disabled_tooltip
|
67
67
|
|
68
|
+
### Translation scope
|
69
|
+
|
70
|
+
To wrap a group of navigation elements into the same translation namespace use the `helm_i18n_scope` method:
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
helm_i18n_scope 'bridge' do
|
74
|
+
helm :sensors # will use 'bridge.sensors' for translation lookup
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
68
78
|
### Highlight current
|
69
79
|
|
70
80
|
Helmsman will highlight the current entry by using the controller and action name.
|
data/lib/helmsman/helm.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Helmsman
|
2
2
|
class Helm
|
3
|
-
attr_accessor :
|
3
|
+
attr_accessor :url, :additional, :i18n_key, :i18n_scope
|
4
|
+
attr_writer :name
|
5
|
+
|
4
6
|
include ActionView::Helpers::TagHelper
|
5
7
|
include ActionView::Helpers::UrlHelper
|
6
8
|
|
@@ -39,7 +41,7 @@ module Helmsman
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def name
|
42
|
-
I18n.translate("#{i18n_scope}#{i18n_key}").html_safe
|
44
|
+
@name || I18n.translate("#{i18n_scope}#{i18n_key}").html_safe
|
43
45
|
end
|
44
46
|
|
45
47
|
def disabled_title
|
data/lib/helmsman/version.rb
CHANGED
data/lib/helmsman/view_helper.rb
CHANGED
@@ -35,10 +35,20 @@ module Helmsman
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
def helm_i18n_scope(scope, &block)
|
39
|
+
@helm_i18n_scope = scope
|
40
|
+
yield
|
41
|
+
@helm_i18n_scope = nil
|
42
|
+
end
|
43
|
+
|
38
44
|
# Private part of actionpack/lib/action_view/helpers/translation_helper.rb
|
39
45
|
# Wrapped for clarification what that does.
|
40
|
-
def
|
41
|
-
|
46
|
+
def helm_expand_i18n_key(key)
|
47
|
+
if @helm_i18n_scope
|
48
|
+
[@helm_i18n_scope, key].join('.')
|
49
|
+
else
|
50
|
+
scope_key_by_partial(key)
|
51
|
+
end
|
42
52
|
end
|
43
53
|
|
44
54
|
def helm(key, options = {}, &block)
|
@@ -48,7 +58,7 @@ module Helmsman
|
|
48
58
|
current = options.fetch(:current) { highlight_helm?(highlight_opts) }
|
49
59
|
visible = options.fetch(:visible) { true }
|
50
60
|
url = options[:url]
|
51
|
-
i18n_scope =
|
61
|
+
i18n_scope = helm_expand_i18n_key('.')
|
52
62
|
|
53
63
|
entry = Helm.new(disabled: disabled, current: current, visible: visible, i18n_key: key, i18n_scope: i18n_scope, url: url)
|
54
64
|
|
@@ -24,5 +24,10 @@ describe Helmsman::Helm do
|
|
24
24
|
it '#default_disabled_tooltip_translation_key' do
|
25
25
|
helm.default_disabled_tooltip_translation_key.should eq 'helmsman.disabled_tooltip'
|
26
26
|
end
|
27
|
+
|
28
|
+
it '#name returns the setted name before the i18n fallback' do
|
29
|
+
helm.name = 'Foobar'
|
30
|
+
helm.name.should eq 'Foobar'
|
31
|
+
end
|
27
32
|
end
|
28
33
|
end
|
@@ -107,5 +107,29 @@ describe Helmsman::ViewHelper do
|
|
107
107
|
}.to raise_error(TypeError)
|
108
108
|
end
|
109
109
|
end
|
110
|
+
|
111
|
+
describe '#helm_i18n_scope' do
|
112
|
+
it 'raises an error if called without block' do
|
113
|
+
expect {
|
114
|
+
helper.helm_i18n_scope 'foobar'
|
115
|
+
}.to raise_error(LocalJumpError)
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'sets and resets the helm_i18n_scope' do
|
119
|
+
helper.instance_variable_get(:@helm_i18n_scope).should be_nil
|
120
|
+
helper.helm_i18n_scope 'foobar' do
|
121
|
+
helper.instance_variable_get(:@helm_i18n_scope).should eq 'foobar'
|
122
|
+
end
|
123
|
+
helper.instance_variable_get(:@helm_i18n_scope).should be_nil
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'influences #helm_expand_i18n_key' do
|
127
|
+
helper.helm_expand_i18n_key('picard').should eq 'i18n_path'
|
128
|
+
|
129
|
+
helper.helm_i18n_scope 'captain' do
|
130
|
+
helper.helm_expand_i18n_key('picard').should eq 'captain.picard'
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
110
134
|
end
|
111
135
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: helmsman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johannes Opper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
version: '0'
|
126
126
|
requirements: []
|
127
127
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.1.11
|
129
129
|
signing_key:
|
130
130
|
specification_version: 4
|
131
131
|
summary: Steers your navigation through the ocean of your application
|