access_kit 0.03 → 0.04

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.
@@ -1,13 +1,19 @@
1
1
  module AccessKit
2
2
  module UrlHelperAdditions
3
3
  extend ActiveSupport::Concern
4
-
4
+ mattr_accessor :css_class
5
+
5
6
  class << self
6
7
  DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT = :intro
7
8
  DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT = :outro
9
+ DEFAULT_CSS_CLASS_FOR_SUPPLEMENT = "access_kit"
8
10
 
9
11
  def add_supplement_to_text(text, opts={})
10
- default_opts = {DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT => nil, DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT => nil, :auto_pad => true}
12
+ default_opts = { DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT => nil,
13
+ DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT => nil,
14
+ :auto_pad => true,
15
+ :css_class_for_supplement => css_class_for_supplement
16
+ }
11
17
  opts = default_opts.merge(opts)
12
18
 
13
19
  padding = begin
@@ -19,15 +25,10 @@ module AccessKit
19
25
  opts[:auto_pad].to_s
20
26
  end
21
27
  end
22
-
23
- before_span = opts[DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT].blank? ?
24
- "" :
25
- span_tag(opts[DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT] + padding)
26
-
27
- after_span = opts[DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT].blank? ?
28
- "" :
29
- span_tag(padding + opts[DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT])
30
-
28
+
29
+ before_span = span_tag opts[DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT], :padding_after => padding, :class => opts[:css_class_for_supplement]
30
+ after_span = span_tag opts[DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT], :padding_before => padding, :class => opts[:css_class_for_supplement]
31
+
31
32
  "#{before_span}#{text}#{after_span}".html_safe
32
33
  end
33
34
 
@@ -42,7 +43,7 @@ module AccessKit
42
43
  def process_options_for_link_to_with_supplement(*args)
43
44
  if args_for_link_to_with_supplement?(*args)
44
45
  # TODO: move to separate method: 'extract_supplement_opts'
45
- supplement_opts = [ DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT, DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT, :auto_pad ].inject({}) do |memo, k|
46
+ supplement_opts = [ DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT, DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT, :auto_pad, :css_class_for_supplement ].inject({}) do |memo, k|
46
47
  value = args[2].delete(k)
47
48
  value.blank? ? memo : memo.merge( k => value )
48
49
  end
@@ -58,8 +59,22 @@ module AccessKit
58
59
 
59
60
  private
60
61
  # TODO: use Rails content_tag if available
61
- def span_tag(content)
62
- "<span>#{content}</span>"
62
+ def span_tag(content, opts={} )
63
+ default_opts = {:padding_before => '', :padding_after => '', :class => ""}
64
+ opts = default_opts.merge(opts)
65
+
66
+ if content.blank?
67
+ ""
68
+ else
69
+ class_str = opts[:class].blank? ?
70
+ "" :
71
+ ' class="' + opts[:class] + '"'
72
+ "<span#{class_str}>#{opts[:padding_before]}#{content}#{opts[:padding_after]}</span>"
73
+ end
74
+ end
75
+
76
+ def css_class_for_supplement
77
+ self.css_class || DEFAULT_CSS_CLASS_FOR_SUPPLEMENT
63
78
  end
64
79
  end
65
80
  end
@@ -1,3 +1,3 @@
1
1
  module AccessKit
2
- VERSION="0.03"
2
+ VERSION="0.04"
3
3
  end
@@ -1,74 +1,99 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module AccessKit
4
- describe UrlHelperAdditions do
5
- context "#link_to_with_supplement" do
4
+ describe UrlHelperAdditions do
5
+ describe "#link_to_with_supplement" do
6
+ let(:args){ [ "unicorns",
7
+ '#unicorns',
8
+ { :intro => "Click to learn about" }
9
+ ]
10
+ }
11
+
6
12
  include ActionView::Helpers::TagHelper
7
13
  include ActionView::Helpers::UrlHelper
8
14
 
9
- it "should extend link_to" do
10
- link_to(
11
- "unicorns",
12
- '#unicorns',
13
- :intro => "Click to learn about"
14
- ).should == "<a href=\"#unicorns\"><span>Click to learn about </span>unicorns</a>"
15
- end
16
-
17
- context "#args_for_link_to_with_supplement?" do
18
- context "should return true if :intro or :outro options are passed" do
19
- UrlHelperAdditions.args_for_link_to_with_supplement?(
20
- "unicorns",
21
- '#unicorns',
22
- :intro => "Click to learn about"
23
- ).should == true
15
+ context "without a css class for supplementary text" do
16
+ # this is to keep the expected output shorter and easier to read
17
+ before do
18
+ ::AccessKit::UrlHelperAdditions.css_class = ""
24
19
  end
25
-
26
- it "should return false if neither :intro nor :outro options are passed" do
27
- UrlHelperAdditions.args_for_link_to_with_supplement?(
28
- "unicorns",
29
- '#unicorns'
30
- ).should == false
20
+
21
+ it "should extend link_to" do
22
+ link_to(*args).should == "<a href=\"#unicorns\"><span>Click to learn about </span>unicorns</a>"
31
23
  end
24
+
25
+ describe "#args_for_link_to_with_supplement?" do
26
+ it "should return true if :intro or :outro options are passed" do
27
+ UrlHelperAdditions.args_for_link_to_with_supplement?(*args).should == true
28
+ end
29
+
30
+ it "should return false if neither :intro nor :outro options are passed" do
31
+ UrlHelperAdditions.args_for_link_to_with_supplement?("unicorns", '#unicorns').should == false
32
+ end
32
33
 
33
- it "should return false if a block is given" do
34
- some_block = lambda{ 'link_name' }
35
- UrlHelperAdditions.args_for_link_to_with_supplement?(
36
- '#unicorns',
37
- :intro => "Click to learn about",
38
- &some_block
39
- ).should == false
34
+ # TODO: why not allow blocks to be passed?
35
+ it "should return false if a block is given" do
36
+ some_block = lambda{ 'link_name' }
37
+ UrlHelperAdditions.args_for_link_to_with_supplement?(args, &some_block).should == false
38
+ end
40
39
  end
41
- end
42
40
 
43
- context "#process_options_for_link_to_with_supplement" do
44
- context "args_for_link_to_with_supplement? is true" do
45
- it "should return hash with new name" do
46
- UrlHelperAdditions.process_options_for_link_to_with_supplement(
47
- "unicorns",
48
- '#unicorns',
49
- :intro => "Click to learn about",
50
- :class => 'mythical'
51
- ).should == ["<span>Click to learn about </span>unicorns",
52
- '#unicorns',
53
- { :class => 'mythical' }
54
- ]
41
+ describe "#process_options_for_link_to_with_supplement" do
42
+ context "args_for_link_to_with_supplement? is true" do
43
+ it "should return hash with new name" do
44
+ args.last[:class] = 'mythical'
45
+ UrlHelperAdditions.process_options_for_link_to_with_supplement(*args).should ==
46
+ [ "<span>Click to learn about </span>unicorns",
47
+ '#unicorns',
48
+ { :class => 'mythical' }
49
+ ]
55
50
 
51
+ end
56
52
  end
57
- end
58
53
 
59
- context "args_for_link_to_with_supplement? is false" do
60
- it "should return nil" do
61
- UrlHelperAdditions.process_options_for_link_to_with_supplement(
62
- "unicorns",
63
- '#unicorns'
64
- ).should be_nil
54
+ context "args_for_link_to_with_supplement? is false" do
55
+ it "should return nil" do
56
+ UrlHelperAdditions.process_options_for_link_to_with_supplement(
57
+ "unicorns",
58
+ '#unicorns'
59
+ ).should be_nil
60
+ end
65
61
  end
62
+
63
+ end
64
+ end
65
+
66
+ context "with a css class for supplementary text" do
67
+ before do
68
+ # wipe out any custom settings from previous examples
69
+ ::AccessKit::UrlHelperAdditions.css_class = nil
70
+ end
71
+ it "should use 'access_kit' as the default css class" do
72
+ link_to(*args).should == "<a href=\"#unicorns\"><span class=\"access_kit\">Click to learn about </span>unicorns</a>"
73
+ end
74
+
75
+ it "should allow a custom css class to be set" do
76
+ args.last[:css_class_for_supplement] = 'hidden_text for_accessibility'
77
+ link_to(*args).should == "<a href=\"#unicorns\"><span class=\"hidden_text for_accessibility\">Click to learn about </span>unicorns</a>"
66
78
  end
67
79
 
80
+ it "should allow the default css class to be customized" do
81
+ AccessKit::UrlHelperAdditions.css_class = 'foo'
82
+ link_to(*args).should == "<a href=\"#unicorns\"><span class=\"foo\">Click to learn about </span>unicorns</a>"
83
+ end
84
+
68
85
  end
86
+
69
87
  end
70
88
 
71
- context "#add_supplement_to_text" do
89
+
90
+
91
+ describe "#add_supplement_to_text" do
92
+ # this is to keep the expected output shorter and easier to read
93
+ before do
94
+ ::AccessKit::UrlHelperAdditions.css_class = ""
95
+ end
96
+
72
97
  it "should add before" do
73
98
  UrlHelperAdditions.add_supplement_to_text(
74
99
  "unicorns",
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: access_kit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
9
- version: "0.03"
8
+ - 4
9
+ version: "0.04"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mani Tadayon
13
+ - Brian Miller
13
14
  autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []