access_kit 0.01 → 0.02
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/Gemfile +10 -0
- data/README +3 -0
- data/lib/access_kit/core_ext/url_helper.rb +25 -0
- data/lib/access_kit/url_helper_additions.rb +55 -0
- data/lib/access_kit/version.rb +1 -1
- data/lib/access_kit.rb +2 -0
- data/spec/access_kit/semantics_spec.rb +11 -0
- data/spec/access_kit/url_helper_additions_spec.rb +84 -0
- data/spec/html_samples/valid.html +16 -0
- data/spec/spec_helper.rb +15 -0
- metadata +55 -27
data/Gemfile
ADDED
data/README
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rails/all'
|
2
|
+
|
3
|
+
raise "ActionView::Helpers::UrlHelper not loaded!" unless defined?(ActionView::Helpers::UrlHelper)
|
4
|
+
raise "AccessKit::UrlHelperAdditions not loaded!" unless defined?(AccessKit::UrlHelperAdditions)
|
5
|
+
|
6
|
+
module ActionView
|
7
|
+
module Helpers
|
8
|
+
module UrlHelper
|
9
|
+
|
10
|
+
def link_to_with_supplement(*args, &block)
|
11
|
+
if !block_given? && AccessKit::UrlHelperAdditions.args_for_link_to_with_supplement?(*args)
|
12
|
+
new_opts = AccessKit::UrlHelperAdditions.process_options_for_link_to_with_supplement(*args)
|
13
|
+
new_name = AccessKit::UrlHelperAdditions.add_supplement_to_text(args[0], new_opts)
|
14
|
+
args.shift
|
15
|
+
|
16
|
+
link_to_without_supplement(new_name, *args)
|
17
|
+
else
|
18
|
+
link_to_without_supplement(*args, &block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
alias_method_chain :link_to, :supplement
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module AccessKit
|
2
|
+
module UrlHelperAdditions
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
class << self
|
6
|
+
DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT = :intro
|
7
|
+
DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT = :outro
|
8
|
+
|
9
|
+
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}
|
11
|
+
opts = default_opts.merge(opts)
|
12
|
+
|
13
|
+
padding = begin
|
14
|
+
if opts[:auto_pad] === true
|
15
|
+
' '
|
16
|
+
elsif opts[:auto_pad] === false
|
17
|
+
''
|
18
|
+
else
|
19
|
+
opts[:auto_pad].to_s
|
20
|
+
end
|
21
|
+
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
|
+
|
31
|
+
"#{before_span}#{text}#{after_span}".html_safe
|
32
|
+
end
|
33
|
+
|
34
|
+
def args_for_link_to_with_supplement?(*args)
|
35
|
+
args[2].is_a?(Hash) && (
|
36
|
+
args[2].keys.include?(DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT) ||
|
37
|
+
args[2].keys.include?(DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT)
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
def process_options_for_link_to_with_supplement(*args)
|
42
|
+
[ DEFAULT_KEY_NAME_FOR_PRECEDING_TEXT, DEFAULT_KEY_NAME_FOR_FOLLOWING_TEXT, :auto_pad ].inject({}) do |memo, k|
|
43
|
+
value = args[2].delete(k)
|
44
|
+
value.blank? ? memo : memo.merge( k => value )
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
# TODO: use Rails content_tag if available
|
50
|
+
def span_tag(content)
|
51
|
+
"<span>#{content}</span>"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/access_kit/version.rb
CHANGED
data/lib/access_kit.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AccessKit do
|
4
|
+
let(:valid_html) { IO.read( File.dirname(__FILE__) + '/../html_samples/valid.html') }
|
5
|
+
|
6
|
+
describe "#check" do
|
7
|
+
it "should have no @errors for a valid HTML document" do
|
8
|
+
AccessKit.find_errors(valid_html).should be_empty
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module AccessKit
|
4
|
+
describe UrlHelperAdditions do
|
5
|
+
context "#link_to_with_supplement" do
|
6
|
+
include ActionView::Helpers::TagHelper
|
7
|
+
include ActionView::Helpers::UrlHelper
|
8
|
+
|
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
|
+
end
|
17
|
+
|
18
|
+
context "#add_supplement_to_text" do
|
19
|
+
it "should add before" do
|
20
|
+
UrlHelperAdditions.add_supplement_to_text(
|
21
|
+
"unicorns",
|
22
|
+
:intro => "Click to learn more about"
|
23
|
+
).should == "<span>Click to learn more about </span>unicorns"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should add after" do
|
27
|
+
UrlHelperAdditions.add_supplement_to_text(
|
28
|
+
"Learn more",
|
29
|
+
:outro => "about unicorns"
|
30
|
+
).should == "Learn more<span> about unicorns</span>"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should add both before and after" do
|
34
|
+
UrlHelperAdditions.add_supplement_to_text(
|
35
|
+
"unicorns",
|
36
|
+
:intro => "Learn more about",
|
37
|
+
:outro => "by clicking here"
|
38
|
+
).should == "<span>Learn more about </span>unicorns<span> by clicking here</span>"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should handle blank values" do
|
42
|
+
UrlHelperAdditions.add_supplement_to_text("unicorns").should == "unicorns"
|
43
|
+
UrlHelperAdditions.add_supplement_to_text("unicorns", :intro => nil).should == "unicorns"
|
44
|
+
UrlHelperAdditions.add_supplement_to_text("unicorns", :outro => nil).should == "unicorns"
|
45
|
+
|
46
|
+
UrlHelperAdditions.add_supplement_to_text(
|
47
|
+
"unicorns",
|
48
|
+
:outro => '',
|
49
|
+
:intro => ''
|
50
|
+
).should == "unicorns"
|
51
|
+
end
|
52
|
+
|
53
|
+
context "auto_pad" do
|
54
|
+
it "should pad with one space by default" do
|
55
|
+
UrlHelperAdditions.add_supplement_to_text(
|
56
|
+
"unicorn",
|
57
|
+
:intro => "Run",
|
58
|
+
:outro => "run!"
|
59
|
+
).should == "<span>Run </span>unicorn<span> run!</span>"
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
it "should add no padding" do
|
64
|
+
UrlHelperAdditions.add_supplement_to_text(
|
65
|
+
"unicorns",
|
66
|
+
:intro => "Learn more about",
|
67
|
+
:outro => "by clicking here",
|
68
|
+
:auto_pad => false
|
69
|
+
).should == "<span>Learn more about</span>unicorns<span>by clicking here</span>"
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should add custom padding" do
|
73
|
+
UrlHelperAdditions.add_supplement_to_text(
|
74
|
+
"unicorns",
|
75
|
+
:intro => "Learn more about",
|
76
|
+
:outro => "by clicking here",
|
77
|
+
:auto_pad => " "
|
78
|
+
).should == "<span>Learn more about </span>unicorns<span> by clicking here</span>"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
7
|
+
|
8
|
+
<title>This is a sample valid document for testing purposes</title>
|
9
|
+
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
|
14
|
+
|
15
|
+
</body>
|
16
|
+
</html>
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'supermodel'
|
2
|
+
require 'ruby-debug'
|
3
|
+
require 'rails/all' # overkill, but lots of headaches trying to pick and choose needed actionpack components
|
4
|
+
require 'access_kit'
|
5
|
+
|
6
|
+
RSpec.configure do |config|
|
7
|
+
# == Mock Framework
|
8
|
+
#
|
9
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
10
|
+
#
|
11
|
+
# config.mock_with :mocha
|
12
|
+
# config.mock_with :flexmock
|
13
|
+
# config.mock_with :rr
|
14
|
+
config.mock_with :rspec
|
15
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: access_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 15
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 2
|
9
|
+
version: "0.02"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mani Tadayon
|
@@ -14,55 +14,57 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-02-25 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
21
|
+
name: rake
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
24
|
none: false
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ~>
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
hash:
|
28
|
+
hash: 49
|
29
29
|
segments:
|
30
30
|
- 0
|
31
|
-
|
32
|
-
|
31
|
+
- 8
|
32
|
+
- 7
|
33
|
+
version: 0.8.7
|
34
|
+
type: :development
|
33
35
|
version_requirements: *id001
|
34
36
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
37
|
+
name: supermodel
|
36
38
|
prerelease: false
|
37
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
40
|
none: false
|
39
41
|
requirements:
|
40
|
-
- -
|
42
|
+
- - ">="
|
41
43
|
- !ruby/object:Gem::Version
|
42
|
-
hash:
|
44
|
+
hash: 3
|
43
45
|
segments:
|
44
46
|
- 0
|
45
|
-
|
46
|
-
- 7
|
47
|
-
version: 0.8.7
|
47
|
+
version: "0"
|
48
48
|
type: :development
|
49
49
|
version_requirements: *id002
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
|
-
name:
|
51
|
+
name: rspec
|
52
52
|
prerelease: false
|
53
53
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
55
55
|
requirements:
|
56
|
-
- -
|
56
|
+
- - ~>
|
57
57
|
- !ruby/object:Gem::Version
|
58
58
|
hash: 3
|
59
59
|
segments:
|
60
|
+
- 2
|
61
|
+
- 3
|
60
62
|
- 0
|
61
|
-
version:
|
63
|
+
version: 2.3.0
|
62
64
|
type: :development
|
63
65
|
version_requirements: *id003
|
64
66
|
- !ruby/object:Gem::Dependency
|
65
|
-
name: rspec
|
67
|
+
name: rspec-rails
|
66
68
|
prerelease: false
|
67
69
|
requirement: &id004 !ruby/object:Gem::Requirement
|
68
70
|
none: false
|
@@ -78,9 +80,25 @@ dependencies:
|
|
78
80
|
type: :development
|
79
81
|
version_requirements: *id004
|
80
82
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
83
|
+
name: rails
|
82
84
|
prerelease: false
|
83
85
|
requirement: &id005 !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ~>
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 7
|
91
|
+
segments:
|
92
|
+
- 3
|
93
|
+
- 0
|
94
|
+
- 0
|
95
|
+
version: 3.0.0
|
96
|
+
type: :development
|
97
|
+
version_requirements: *id005
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: cucumber
|
100
|
+
prerelease: false
|
101
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
84
102
|
none: false
|
85
103
|
requirements:
|
86
104
|
- - ">="
|
@@ -90,7 +108,7 @@ dependencies:
|
|
90
108
|
- 0
|
91
109
|
version: "0"
|
92
110
|
type: :development
|
93
|
-
version_requirements: *
|
111
|
+
version_requirements: *id006
|
94
112
|
description: A series of tools built with ruby to help ensure HTML is accessibile, including an automated evaluation tool and helpers to generate accessible output for common elements.
|
95
113
|
email: mani.tadayon@csun.edu
|
96
114
|
executables: []
|
@@ -100,9 +118,17 @@ extensions: []
|
|
100
118
|
extra_rdoc_files: []
|
101
119
|
|
102
120
|
files:
|
103
|
-
-
|
121
|
+
- lib/access_kit/core_ext/url_helper.rb
|
122
|
+
- lib/access_kit/url_helper_additions.rb
|
104
123
|
- lib/access_kit/version.rb
|
105
124
|
- lib/access_kit.rb
|
125
|
+
- spec/access_kit/semantics_spec.rb
|
126
|
+
- spec/access_kit/url_helper_additions_spec.rb
|
127
|
+
- spec/html_samples/valid.html
|
128
|
+
- spec/spec_helper.rb
|
129
|
+
- Gemfile
|
130
|
+
- Rakefile
|
131
|
+
- README
|
106
132
|
has_rdoc: true
|
107
133
|
homepage: https://github.com/csun-student-affairs/access_kit
|
108
134
|
licenses: []
|
@@ -126,14 +152,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
152
|
requirements:
|
127
153
|
- - ">="
|
128
154
|
- !ruby/object:Gem::Version
|
129
|
-
hash:
|
155
|
+
hash: 23
|
130
156
|
segments:
|
131
|
-
-
|
132
|
-
|
157
|
+
- 1
|
158
|
+
- 3
|
159
|
+
- 6
|
160
|
+
version: 1.3.6
|
133
161
|
requirements: []
|
134
162
|
|
135
163
|
rubyforge_project:
|
136
|
-
rubygems_version: 1.
|
164
|
+
rubygems_version: 1.5.2
|
137
165
|
signing_key:
|
138
166
|
specification_version: 3
|
139
167
|
summary: CSUN Accessibility Compliance Toolkit.
|