tdreyno-middleman 0.3.1 → 0.3.2
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/.gitmodules +1 -4
- data/VERSION +1 -1
- data/lib/middleman/helpers.rb +22 -2
- data/lib/middleman.rb +0 -7
- data/middleman.gemspec +1 -22
- metadata +1 -22
- data/vendor/sinatra-helpers/LICENSE +0 -20
- data/vendor/sinatra-helpers/README.rdoc +0 -29
- data/vendor/sinatra-helpers/Rakefile +0 -44
- data/vendor/sinatra-helpers/VERSION.yml +0 -4
- data/vendor/sinatra-helpers/lib/sinatra-helpers/haml/flash.rb +0 -17
- data/vendor/sinatra-helpers/lib/sinatra-helpers/haml/forms.rb +0 -149
- data/vendor/sinatra-helpers/lib/sinatra-helpers/haml/links.rb +0 -102
- data/vendor/sinatra-helpers/lib/sinatra-helpers/haml/partials.rb +0 -26
- data/vendor/sinatra-helpers/lib/sinatra-helpers/haml.rb +0 -4
- data/vendor/sinatra-helpers/lib/sinatra-helpers/html/escape.rb +0 -20
- data/vendor/sinatra-helpers/lib/sinatra-helpers/html.rb +0 -1
- data/vendor/sinatra-helpers/lib/sinatra-helpers.rb +0 -2
- data/vendor/sinatra-helpers/sinatra-helpers.gemspec +0 -29
- data/vendor/sinatra-helpers/test/haml/flash_test.rb +0 -57
- data/vendor/sinatra-helpers/test/haml/forms_test.rb +0 -219
- data/vendor/sinatra-helpers/test/haml/links_test.rb +0 -71
- data/vendor/sinatra-helpers/test/haml/partials_test.rb +0 -38
- data/vendor/sinatra-helpers/test/haml/views/_object.haml +0 -1
- data/vendor/sinatra-helpers/test/haml/views/_thing.haml +0 -1
- data/vendor/sinatra-helpers/test/html/escape_test.rb +0 -37
- data/vendor/sinatra-helpers/test/test_helper.rb +0 -39
data/.gitmodules
CHANGED
@@ -9,7 +9,4 @@
|
|
9
9
|
url = git://github.com/brynary/rack-test.git
|
10
10
|
[submodule "vendor/sinatra-content-for"]
|
11
11
|
path = vendor/sinatra-content-for
|
12
|
-
url = git://github.com/foca/sinatra-content-for.git
|
13
|
-
[submodule "vendor/sinatra-helpers"]
|
14
|
-
path = vendor/sinatra-helpers
|
15
|
-
url = git://github.com/sbfaulkner/sinatra-helpers.git
|
12
|
+
url = git://github.com/foca/sinatra-content-for.git
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/lib/middleman/helpers.rb
CHANGED
@@ -15,7 +15,27 @@ Middleman.helpers do
|
|
15
15
|
classes.join(' ')
|
16
16
|
end
|
17
17
|
|
18
|
-
def asset_url(path
|
19
|
-
"/#{path}"
|
18
|
+
def asset_url(path)
|
19
|
+
path.include?("://") ? path : "/#{path}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def image_tag(path, options={})
|
23
|
+
options[:alt] ||= ""
|
24
|
+
capture_haml do
|
25
|
+
haml_tag :img, options.merge(:src => asset_url(path))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def javascript_include_tag(path, options={})
|
30
|
+
capture_haml do
|
31
|
+
haml_tag :script, options.merge(:src => asset_url(path), :type => "text/javascript")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def stylesheet_link_tag(path, options={})
|
36
|
+
options[:rel] ||= "stylesheet"
|
37
|
+
capture_haml do
|
38
|
+
haml_tag :link, options.merge(:href => asset_url(path), :type => "text/css")
|
39
|
+
end
|
20
40
|
end
|
21
41
|
end
|
data/lib/middleman.rb
CHANGED
@@ -12,9 +12,6 @@ require File.join(File.dirname(__FILE__), '..', 'vendor', 'sinatra-maruku', 'lib
|
|
12
12
|
# Include content_for support
|
13
13
|
require File.join(File.dirname(__FILE__), '..', 'vendor', 'sinatra-content-for', 'lib', 'sinatra', 'content_for')
|
14
14
|
|
15
|
-
# Include common haml/html helper support
|
16
|
-
require File.join(File.dirname(__FILE__), '..', 'vendor', 'sinatra-helpers', 'lib', 'sinatra-helpers', 'haml')
|
17
|
-
|
18
15
|
class Middleman < Sinatra::Base
|
19
16
|
set :app_file, __FILE__
|
20
17
|
set :static, true
|
@@ -24,9 +21,6 @@ class Middleman < Sinatra::Base
|
|
24
21
|
helpers Sinatra::Markaby
|
25
22
|
helpers Sinatra::Maruku
|
26
23
|
helpers Sinatra::ContentFor
|
27
|
-
helpers Sinatra::Helpers::Haml::Forms
|
28
|
-
helpers Sinatra::Helpers::Haml::Links
|
29
|
-
helpers Sinatra::Helpers::Haml::Partials
|
30
24
|
|
31
25
|
def self.run!(options={}, &block)
|
32
26
|
set options
|
@@ -51,7 +45,6 @@ class Middleman < Sinatra::Base
|
|
51
45
|
end
|
52
46
|
|
53
47
|
configure do
|
54
|
-
puts "config yo"
|
55
48
|
Compass.configuration do |config|
|
56
49
|
config.project_path = Dir.pwd
|
57
50
|
config.sass_dir = File.join(File.basename(self.views), "stylesheets")
|
data/middleman.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{middleman}
|
5
|
-
s.version = "0.3.
|
5
|
+
s.version = "0.3.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Thomas Reynolds"]
|
@@ -71,27 +71,6 @@ Gem::Specification.new do |s|
|
|
71
71
|
"vendor/sinatra-content-for/lib/sinatra/content_for.rb",
|
72
72
|
"vendor/sinatra-content-for/sinatra-content-for.gemspec",
|
73
73
|
"vendor/sinatra-content-for/test/content_for_test.rb",
|
74
|
-
"vendor/sinatra-helpers/LICENSE",
|
75
|
-
"vendor/sinatra-helpers/README.rdoc",
|
76
|
-
"vendor/sinatra-helpers/Rakefile",
|
77
|
-
"vendor/sinatra-helpers/VERSION.yml",
|
78
|
-
"vendor/sinatra-helpers/lib/sinatra-helpers.rb",
|
79
|
-
"vendor/sinatra-helpers/lib/sinatra-helpers/haml.rb",
|
80
|
-
"vendor/sinatra-helpers/lib/sinatra-helpers/haml/flash.rb",
|
81
|
-
"vendor/sinatra-helpers/lib/sinatra-helpers/haml/forms.rb",
|
82
|
-
"vendor/sinatra-helpers/lib/sinatra-helpers/haml/links.rb",
|
83
|
-
"vendor/sinatra-helpers/lib/sinatra-helpers/haml/partials.rb",
|
84
|
-
"vendor/sinatra-helpers/lib/sinatra-helpers/html.rb",
|
85
|
-
"vendor/sinatra-helpers/lib/sinatra-helpers/html/escape.rb",
|
86
|
-
"vendor/sinatra-helpers/sinatra-helpers.gemspec",
|
87
|
-
"vendor/sinatra-helpers/test/haml/flash_test.rb",
|
88
|
-
"vendor/sinatra-helpers/test/haml/forms_test.rb",
|
89
|
-
"vendor/sinatra-helpers/test/haml/links_test.rb",
|
90
|
-
"vendor/sinatra-helpers/test/haml/partials_test.rb",
|
91
|
-
"vendor/sinatra-helpers/test/haml/views/_object.haml",
|
92
|
-
"vendor/sinatra-helpers/test/haml/views/_thing.haml",
|
93
|
-
"vendor/sinatra-helpers/test/html/escape_test.rb",
|
94
|
-
"vendor/sinatra-helpers/test/test_helper.rb",
|
95
74
|
"vendor/sinatra-markaby/CHANGES",
|
96
75
|
"vendor/sinatra-markaby/LICENSE",
|
97
76
|
"vendor/sinatra-markaby/README.rdoc",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tdreyno-middleman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Reynolds
|
@@ -141,27 +141,6 @@ files:
|
|
141
141
|
- vendor/sinatra-content-for/lib/sinatra/content_for.rb
|
142
142
|
- vendor/sinatra-content-for/sinatra-content-for.gemspec
|
143
143
|
- vendor/sinatra-content-for/test/content_for_test.rb
|
144
|
-
- vendor/sinatra-helpers/LICENSE
|
145
|
-
- vendor/sinatra-helpers/README.rdoc
|
146
|
-
- vendor/sinatra-helpers/Rakefile
|
147
|
-
- vendor/sinatra-helpers/VERSION.yml
|
148
|
-
- vendor/sinatra-helpers/lib/sinatra-helpers.rb
|
149
|
-
- vendor/sinatra-helpers/lib/sinatra-helpers/haml.rb
|
150
|
-
- vendor/sinatra-helpers/lib/sinatra-helpers/haml/flash.rb
|
151
|
-
- vendor/sinatra-helpers/lib/sinatra-helpers/haml/forms.rb
|
152
|
-
- vendor/sinatra-helpers/lib/sinatra-helpers/haml/links.rb
|
153
|
-
- vendor/sinatra-helpers/lib/sinatra-helpers/haml/partials.rb
|
154
|
-
- vendor/sinatra-helpers/lib/sinatra-helpers/html.rb
|
155
|
-
- vendor/sinatra-helpers/lib/sinatra-helpers/html/escape.rb
|
156
|
-
- vendor/sinatra-helpers/sinatra-helpers.gemspec
|
157
|
-
- vendor/sinatra-helpers/test/haml/flash_test.rb
|
158
|
-
- vendor/sinatra-helpers/test/haml/forms_test.rb
|
159
|
-
- vendor/sinatra-helpers/test/haml/links_test.rb
|
160
|
-
- vendor/sinatra-helpers/test/haml/partials_test.rb
|
161
|
-
- vendor/sinatra-helpers/test/haml/views/_object.haml
|
162
|
-
- vendor/sinatra-helpers/test/haml/views/_thing.haml
|
163
|
-
- vendor/sinatra-helpers/test/html/escape_test.rb
|
164
|
-
- vendor/sinatra-helpers/test/test_helper.rb
|
165
144
|
- vendor/sinatra-markaby/CHANGES
|
166
145
|
- vendor/sinatra-markaby/LICENSE
|
167
146
|
- vendor/sinatra-markaby/README.rdoc
|
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2009 unwwwired.net
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,29 +0,0 @@
|
|
1
|
-
= sinatra-helpers
|
2
|
-
|
3
|
-
sinatra-helpers is an extension for sinatra that provides a bunch of useful helpers
|
4
|
-
for sinatra applications.
|
5
|
-
|
6
|
-
== Installation
|
7
|
-
|
8
|
-
sudo gem install sbfaulkner-sinatra-helpers -s http://gems.github.com
|
9
|
-
|
10
|
-
== Usage
|
11
|
-
|
12
|
-
To use the helpers simply:
|
13
|
-
|
14
|
-
require 'sinatra-helpers'
|
15
|
-
|
16
|
-
If you don't want to include all of the functionality you can require specific
|
17
|
-
functionality in smaller units:
|
18
|
-
|
19
|
-
require 'sinatra-helpers/haml'
|
20
|
-
|
21
|
-
or even:
|
22
|
-
|
23
|
-
require 'sinatra-helpers/haml/partials'
|
24
|
-
|
25
|
-
|
26
|
-
== Legal
|
27
|
-
|
28
|
-
Author:: S. Brent Faulkner <brentf@unwwwired.net>
|
29
|
-
License:: Copyright (c) 2009 unwwwired.net, released under the MIT license
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'rake'
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'jeweler'
|
5
|
-
Jeweler::Tasks.new do |s|
|
6
|
-
s.name = "sinatra-helpers"
|
7
|
-
s.summary = %Q{a bunch of useful helpers for sinatra applications}
|
8
|
-
s.email = "brentf@unwwwired.net"
|
9
|
-
s.homepage = "http://github.com/sbfaulkner/sinatra-helpers"
|
10
|
-
s.description = "a bunch of useful helpers for sinatra applications"
|
11
|
-
s.authors = ["S. Brent Faulkner"]
|
12
|
-
end
|
13
|
-
rescue LoadError
|
14
|
-
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
15
|
-
end
|
16
|
-
|
17
|
-
require 'rake/rdoctask'
|
18
|
-
Rake::RDocTask.new do |rdoc|
|
19
|
-
rdoc.rdoc_dir = 'rdoc'
|
20
|
-
rdoc.title = 'sinatra-helpers'
|
21
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
22
|
-
rdoc.rdoc_files.include('README*')
|
23
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
24
|
-
end
|
25
|
-
|
26
|
-
require 'rake/testtask'
|
27
|
-
Rake::TestTask.new(:test) do |t|
|
28
|
-
t.libs << 'lib' << 'test'
|
29
|
-
t.pattern = 'test/**/*_test.rb'
|
30
|
-
t.verbose = false
|
31
|
-
end
|
32
|
-
|
33
|
-
begin
|
34
|
-
require 'rcov/rcovtask'
|
35
|
-
Rcov::RcovTask.new do |t|
|
36
|
-
t.libs << 'test'
|
37
|
-
t.test_files = FileList['test/**/*_test.rb']
|
38
|
-
t.verbose = true
|
39
|
-
end
|
40
|
-
rescue LoadError
|
41
|
-
puts "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
42
|
-
end
|
43
|
-
|
44
|
-
task :default => :test
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'sinatra/base'
|
2
|
-
|
3
|
-
module Sinatra
|
4
|
-
module Helpers
|
5
|
-
module Haml
|
6
|
-
module Flash
|
7
|
-
def flash_messages
|
8
|
-
[ :error, :warning, :notice ].each do |f|
|
9
|
-
haml_tag :div, flash[f], :class => f if flash.has?(f)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
helpers Helpers::Haml::Flash
|
17
|
-
end
|
@@ -1,149 +0,0 @@
|
|
1
|
-
require 'sinatra/base'
|
2
|
-
require 'active_support/inflector'
|
3
|
-
|
4
|
-
module Sinatra
|
5
|
-
module Helpers
|
6
|
-
module Haml
|
7
|
-
module Forms
|
8
|
-
CHECKBOX_DEFAULTS = {:type => :checkbox, :value => 1}
|
9
|
-
FILE_FIELD_DEFAULTS = {:type => :file}
|
10
|
-
HIDDEN_FIELD_DEFAULTS = {:type => :hidden}
|
11
|
-
PASSWORD_FIELD_DEFAULTS = {:type => :password}
|
12
|
-
TEXT_FIELD_DEFAULTS = {:type => :text}
|
13
|
-
TEXT_AREA_DEFAULTS = {}
|
14
|
-
SELECT_DEFAULTS = {}
|
15
|
-
|
16
|
-
def errors_for(object)
|
17
|
-
unless object.errors.empty?
|
18
|
-
errors = object.errors.full_messages
|
19
|
-
haml_tag :div, :id => 'errors' do
|
20
|
-
haml_tag :p, %Q(Unable to save #{object.class.name.humanize} due to the following #{errors.size == 1 ? 'error' : "#{errors.size} errors"}:)
|
21
|
-
haml_tag :ul do
|
22
|
-
haml_concat list_of(errors) { |error| haml_concat(error) }
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def parameterize(arg)
|
29
|
-
case arg
|
30
|
-
when Array
|
31
|
-
arg.compact.collect { |a| parameterize(a) }
|
32
|
-
when String
|
33
|
-
arg
|
34
|
-
when Symbol, Numeric
|
35
|
-
arg.to_s
|
36
|
-
else
|
37
|
-
arg.class.name.underscore
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def object_for(*args)
|
42
|
-
args.pop if args.last.is_a?(Hash)
|
43
|
-
args.pop
|
44
|
-
case object = args.last
|
45
|
-
when String, Symbol
|
46
|
-
if args.length > 1
|
47
|
-
object_for(*args).send(object)
|
48
|
-
else
|
49
|
-
instance_variable_get "@#{object}"
|
50
|
-
end
|
51
|
-
else
|
52
|
-
object
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def value_for(*args)
|
57
|
-
object = object_for(*args)
|
58
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
59
|
-
object.send args.pop
|
60
|
-
end
|
61
|
-
|
62
|
-
def id_for(*args)
|
63
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
64
|
-
index = options[:index]
|
65
|
-
method = args.pop
|
66
|
-
args << index << method
|
67
|
-
parameterize(args).join('_')
|
68
|
-
end
|
69
|
-
|
70
|
-
def name_for(*args)
|
71
|
-
options = args.last.is_a?(Hash) ? args.pop : {}
|
72
|
-
index = options[:index]
|
73
|
-
method = args.pop
|
74
|
-
# pluralize collection name when indexed... explicit parameterization
|
75
|
-
args << parameterize(args.pop).pluralize << index if index
|
76
|
-
args << method
|
77
|
-
parameterize(args).inject { |name,part| "#{name}[#{part}]" }
|
78
|
-
end
|
79
|
-
|
80
|
-
def extract_options(*args)
|
81
|
-
args.last.is_a?(Hash) ? args.last.reject { |k,v| k.to_s == 'index' } : {}
|
82
|
-
end
|
83
|
-
|
84
|
-
def label(*args)
|
85
|
-
{ :for => id_for(*args) }.merge extract_options(*args)
|
86
|
-
end
|
87
|
-
|
88
|
-
def input(*args)
|
89
|
-
{ :id => id_for(*args), :name => name_for(*args) }.merge extract_options(*args)
|
90
|
-
end
|
91
|
-
|
92
|
-
def checkbox(*args)
|
93
|
-
args << {} unless args.last.is_a?(Hash)
|
94
|
-
options = args.last
|
95
|
-
options[:checked] = value_for(*args) unless options.include?(:checked)
|
96
|
-
CHECKBOX_DEFAULTS.merge input(*args)
|
97
|
-
end
|
98
|
-
|
99
|
-
def file_field(*args)
|
100
|
-
args << {} unless args.last.is_a?(Hash)
|
101
|
-
options = args.last
|
102
|
-
options[:value] = value_for(*args) unless options.include?(:value)
|
103
|
-
FILE_FIELD_DEFAULTS.merge input(*args)
|
104
|
-
end
|
105
|
-
|
106
|
-
def hidden_field(*args)
|
107
|
-
args << {} unless args.last.is_a?(Hash)
|
108
|
-
options = args.last
|
109
|
-
options[:value] = value_for(*args) unless options.include?(:value)
|
110
|
-
HIDDEN_FIELD_DEFAULTS.merge input(*args)
|
111
|
-
end
|
112
|
-
|
113
|
-
def password_field(*args)
|
114
|
-
args << {} unless args.last.is_a?(Hash)
|
115
|
-
options = args.last
|
116
|
-
options[:value] = value_for(*args) unless options.include?(:value)
|
117
|
-
PASSWORD_FIELD_DEFAULTS.merge input(*args)
|
118
|
-
end
|
119
|
-
|
120
|
-
def text_field(*args)
|
121
|
-
args << {} unless args.last.is_a?(Hash)
|
122
|
-
options = args.last
|
123
|
-
options[:value] = value_for(*args) unless options.include?(:value)
|
124
|
-
TEXT_FIELD_DEFAULTS.merge input(*args)
|
125
|
-
end
|
126
|
-
|
127
|
-
def text_area(*args)
|
128
|
-
args << {} unless args.last.is_a?(Hash)
|
129
|
-
options = args.last
|
130
|
-
TEXT_AREA_DEFAULTS.merge input(*args)
|
131
|
-
end
|
132
|
-
|
133
|
-
def select(*args)
|
134
|
-
SELECT_DEFAULTS.merge input(*args)
|
135
|
-
end
|
136
|
-
|
137
|
-
def options_of(collection, options = {}, &block)
|
138
|
-
collection.each do |option|
|
139
|
-
text, value = option
|
140
|
-
selected = block_given? ? block.call(option) : nil
|
141
|
-
haml_tag :option, text, options.merge(:selected => selected, :value => value)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
helpers Helpers::Haml::Forms
|
149
|
-
end
|
@@ -1,102 +0,0 @@
|
|
1
|
-
require 'sinatra/base'
|
2
|
-
|
3
|
-
module Sinatra
|
4
|
-
module Helpers
|
5
|
-
module Haml
|
6
|
-
module Links
|
7
|
-
def domain(tld_length = 1)
|
8
|
-
request.host.split('.')[-(tld_length+1)..-1].join('.')
|
9
|
-
end
|
10
|
-
|
11
|
-
def subdomain(name, tld_length = 1)
|
12
|
-
"#{name}.#{domain(tld_length)}"
|
13
|
-
end
|
14
|
-
|
15
|
-
def subdomain_url(name, tld_length = 1)
|
16
|
-
"http://#{subdomain(name, tld_length)}"
|
17
|
-
end
|
18
|
-
|
19
|
-
def asset_url(path, tld_length = 1)
|
20
|
-
"#{subdomain_url('assets', tld_length)}#{path}"
|
21
|
-
end
|
22
|
-
|
23
|
-
def css(path, options = {})
|
24
|
-
{ :href => asset_url(path), :media => "all", :rel => "stylesheet", :type => "text/css" }.merge(options)
|
25
|
-
end
|
26
|
-
|
27
|
-
def icon(path, options = {})
|
28
|
-
{ :href => asset_url(path), :rel => 'icon', :type => 'image/x-icon' }.merge(options)
|
29
|
-
end
|
30
|
-
|
31
|
-
def javascript(path, options = {})
|
32
|
-
{ :src => asset_url(path), :type => 'text/javascript' }.merge(options)
|
33
|
-
end
|
34
|
-
|
35
|
-
def image(path, options = {})
|
36
|
-
options[:width], options[:height] = options.delete(:size).split('x') if options.include?(:size)
|
37
|
-
options[:alt] ||= File.basename(path, '.*')
|
38
|
-
{ :src => asset_url(path) }.merge(options)
|
39
|
-
end
|
40
|
-
|
41
|
-
def action(path, options = {})
|
42
|
-
{ :action => path, :method => 'post' }.merge(options)
|
43
|
-
end
|
44
|
-
|
45
|
-
def href(path, options = {})
|
46
|
-
script = if options.include?(:success)
|
47
|
-
path, original_path = '#', path
|
48
|
-
javascript_for_ajax(original_path, options)
|
49
|
-
elsif method = options.delete(:method)
|
50
|
-
path, original_path = '#', path
|
51
|
-
javascript_for_method(original_path, method)
|
52
|
-
else
|
53
|
-
options.delete(:onclick)
|
54
|
-
end
|
55
|
-
confirm = options.delete(:confirm)
|
56
|
-
script = javascript_with_confirmation(script, confirm) if confirm
|
57
|
-
result = { :href => path }
|
58
|
-
result[:onclick] = script unless script.nil?
|
59
|
-
result.merge(options)
|
60
|
-
end
|
61
|
-
|
62
|
-
protected
|
63
|
-
def javascript_options(options)
|
64
|
-
options.collect do |key,value|
|
65
|
-
value = "'#{value}'" if [:type,:url].include? key
|
66
|
-
"#{key}:#{value}"
|
67
|
-
end.join(',')
|
68
|
-
end
|
69
|
-
|
70
|
-
def javascript_with_confirmation(javascript, prompt)
|
71
|
-
prompt = 'Are you sure?' if prompt == true
|
72
|
-
javascript = 'return true;' if javascript.nil?
|
73
|
-
"if (confirm('#{prompt}')) { #{javascript} }; return false;"
|
74
|
-
end
|
75
|
-
|
76
|
-
def javascript_for_method(action, method)
|
77
|
-
javascript = "$('<form></form>').css('display','none').attr({'method':'post','action':'#{action}'})"
|
78
|
-
javascript << ".append($('<input type=\"hidden\">').attr({'name':'_method','value':'#{method}'}))" if method != 'post'
|
79
|
-
javascript << ".appendTo($(this).parent()).submit();return false;"
|
80
|
-
end
|
81
|
-
|
82
|
-
def javascript_for_ajax(url, options = {})
|
83
|
-
ajax_options = {:url => url}
|
84
|
-
success = options.delete(:success)
|
85
|
-
if !success.is_a?(Hash)
|
86
|
-
function = "$('#{success}').replaceWith(html)"
|
87
|
-
elsif success.include?(:update)
|
88
|
-
function = success[:position] || 'replaceWith'
|
89
|
-
function = "$('#{success[:update]}').#{function}(html);"
|
90
|
-
elsif success.include?(:remove)
|
91
|
-
function = "$('#{success[:remove]}').remove();"
|
92
|
-
end
|
93
|
-
ajax_options[:type] = options.delete(:method) if options.include?(:method)
|
94
|
-
ajax_options[:success] = "function(html){#{function}}"
|
95
|
-
"$.ajax({#{javascript_options(ajax_options)}});return false;"
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
helpers Helpers::Haml::Links
|
102
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'sinatra/base'
|
2
|
-
require 'enumerator'
|
3
|
-
|
4
|
-
module Sinatra
|
5
|
-
module Helpers
|
6
|
-
module Haml
|
7
|
-
module Partials
|
8
|
-
def haml_partial(name, options = {})
|
9
|
-
item_name = name.to_sym
|
10
|
-
counter_name = "#{name}_counter".to_sym
|
11
|
-
if collection = options.delete(:collection)
|
12
|
-
collection.enum_for(:each_with_index).collect do |item,index|
|
13
|
-
haml_partial name, options.merge(:locals => {item_name => item, counter_name => index+1})
|
14
|
-
end.join
|
15
|
-
elsif object = options.delete(:object)
|
16
|
-
haml_partial name, options.merge(:locals => {item_name => object, counter_name => nil})
|
17
|
-
else
|
18
|
-
haml "_#{name}".to_sym, options.merge(:layout => false)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
helpers Helpers::Haml::Partials
|
26
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'sinatra/base'
|
2
|
-
|
3
|
-
module Sinatra
|
4
|
-
module Helpers
|
5
|
-
module Html
|
6
|
-
module Escape
|
7
|
-
def h(text)
|
8
|
-
Rack::Utils.escape_html(text)
|
9
|
-
end
|
10
|
-
|
11
|
-
def h!(text, blank_text = ' ')
|
12
|
-
return blank_text if text.nil? || text.empty?
|
13
|
-
h text
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
helpers Helpers::Html::Escape
|
20
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/html/escape'
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
Gem::Specification.new do |s|
|
4
|
-
s.name = %q{sinatra-helpers}
|
5
|
-
s.version = "0.9.1"
|
6
|
-
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = ["S. Brent Faulkner"]
|
9
|
-
s.date = %q{2009-03-27}
|
10
|
-
s.description = %q{a bunch of useful helpers for sinatra applications}
|
11
|
-
s.email = %q{brentf@unwwwired.net}
|
12
|
-
s.files = ["README.rdoc", "VERSION.yml", "lib/sinatra-helpers", "lib/sinatra-helpers/haml", "lib/sinatra-helpers/haml/flash.rb", "lib/sinatra-helpers/haml/forms.rb", "lib/sinatra-helpers/haml/links.rb", "lib/sinatra-helpers/haml/partials.rb", "lib/sinatra-helpers/haml.rb", "lib/sinatra-helpers/html", "lib/sinatra-helpers/html/escape.rb", "lib/sinatra-helpers/html.rb", "lib/sinatra-helpers.rb", "test/haml", "test/haml/flash_test.rb", "test/haml/forms_test.rb", "test/haml/links_test.rb", "test/haml/partials_test.rb", "test/haml/views", "test/haml/views/_object.haml", "test/haml/views/_thing.haml", "test/html", "test/html/escape_test.rb", "test/test_helper.rb"]
|
13
|
-
s.has_rdoc = true
|
14
|
-
s.homepage = %q{http://github.com/sbfaulkner/sinatra-helpers}
|
15
|
-
s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
|
16
|
-
s.require_paths = ["lib"]
|
17
|
-
s.rubygems_version = %q{1.3.1}
|
18
|
-
s.summary = %q{a bunch of useful helpers for sinatra applications}
|
19
|
-
|
20
|
-
if s.respond_to? :specification_version then
|
21
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
22
|
-
s.specification_version = 2
|
23
|
-
|
24
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
25
|
-
else
|
26
|
-
end
|
27
|
-
else
|
28
|
-
end
|
29
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
-
|
3
|
-
class MockFlash < Hash
|
4
|
-
def initialize(flash = {})
|
5
|
-
flash.each { |k,v| self[k] = v }
|
6
|
-
end
|
7
|
-
|
8
|
-
alias_method :has?, :include?
|
9
|
-
end
|
10
|
-
|
11
|
-
class FlashTest < Test::Unit::TestCase
|
12
|
-
include Haml::Helpers
|
13
|
-
include Sinatra::Helpers::Haml::Flash
|
14
|
-
|
15
|
-
attr_reader :flash
|
16
|
-
|
17
|
-
def setup
|
18
|
-
init_haml_helpers
|
19
|
-
super
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_not_show_message_for_empty_flash
|
23
|
-
@flash = MockFlash.new
|
24
|
-
flash_messages
|
25
|
-
assert_html ''
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_should_show_message_for_error_flash
|
29
|
-
@flash = MockFlash.new :error => 'error message'
|
30
|
-
flash_messages
|
31
|
-
assert_html 'div', 1
|
32
|
-
assert_html 'div.error', :html => 'error message', :count => 1
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_should_show_message_for_warning_flash
|
36
|
-
@flash = MockFlash.new :warning => 'warning message'
|
37
|
-
flash_messages
|
38
|
-
assert_html 'div', 1
|
39
|
-
assert_html 'div.warning', :html => 'warning message', :count => 1
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_should_show_message_for_notice_flash
|
43
|
-
@flash = MockFlash.new :notice => 'notice message'
|
44
|
-
flash_messages
|
45
|
-
assert_html 'div', 1
|
46
|
-
assert_html 'div.notice', :html => 'notice message', :count => 1
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_should_show_messages_for_multiple_flash
|
50
|
-
@flash = MockFlash.new :error => 'error message', :warning => 'warning message', :notice => 'notice message'
|
51
|
-
flash_messages
|
52
|
-
assert_html 'div', 3
|
53
|
-
assert_html 'div.error', :html => 'error message', :count => 1
|
54
|
-
assert_html 'div.warning', :html => 'warning message', :count => 1
|
55
|
-
assert_html 'div.notice', :html => 'notice message', :count => 1
|
56
|
-
end
|
57
|
-
end
|
@@ -1,219 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
-
|
3
|
-
class FormsTest < Test::Unit::TestCase
|
4
|
-
include Haml::Helpers
|
5
|
-
include Sinatra::Helpers::Haml::Forms
|
6
|
-
|
7
|
-
def setup
|
8
|
-
@invoice = mock
|
9
|
-
@invoice.stubs(:id => Time.now.to_i, :class => stub(:name => 'Invoice'))
|
10
|
-
init_haml_helpers
|
11
|
-
super
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_object_for_should_return_object
|
15
|
-
assert_equal @invoice, object_for(:invoice, :id)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_object_for_should_support_explicit_object
|
19
|
-
assert_equal @invoice, object_for(@invoice, :id)
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_value_for_should_return_value
|
23
|
-
@invoice.stubs(:client_name => 'Client name')
|
24
|
-
assert_equal @invoice.client_name, value_for(:invoice, :client_name)
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_value_for_should_support_explicit_object
|
28
|
-
@invoice.stubs(:client_name => 'Client name')
|
29
|
-
assert_equal @invoice.client_name, value_for(@invoice, :client_name)
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_id_for_should_build_simple_id
|
33
|
-
assert_equal "invoice_id", id_for(:invoice, :id)
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_name_for_should_build_simple_name
|
37
|
-
assert_equal "invoice[id]", name_for(:invoice, :id)
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_id_for_should_support_explicit_object
|
41
|
-
assert_equal "invoice_id", id_for(@invoice, :id)
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_name_for_should_support_explicit_object
|
45
|
-
assert_equal "invoice[id]", name_for(@invoice, :id)
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_id_for_should_index_collection
|
49
|
-
assert_equal "line_1_id", id_for(:line, :id, :index => 1)
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_name_for_should_index_collection
|
53
|
-
assert_equal "lines[1][id]", name_for(:line, :id, :index => 1)
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_id_for_should_index_collection_by_id
|
57
|
-
line = line_stub
|
58
|
-
assert_equal "invoice_line_#{line.id}_id", id_for(:invoice, line, :id, :index => line.id)
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_name_for_should_index_collection_by_id
|
62
|
-
line = line_stub
|
63
|
-
assert_equal "invoice[lines][#{line.id}][id]", name_for(:invoice, line, :id, :index => line.id)
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_id_for_should_index_collection_by_new_id
|
67
|
-
line = line_stub
|
68
|
-
assert_equal "invoice_line_#{line.id}_id", id_for(:invoice, line, :id, :index => line.id)
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_name_for_should_index_collection_by_new_id
|
72
|
-
line = line_stub
|
73
|
-
assert_equal "invoice[lines][#{line.id}][id]", name_for(:invoice, line, :id, :index => line.id)
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_name_and_id_should_index_collection_by_same_new_id
|
77
|
-
line = line_stub
|
78
|
-
id = line.id
|
79
|
-
assert_equal "invoice_line_#{id}_id", id_for(:invoice, line, :id, :index => line.id)
|
80
|
-
assert_equal "invoice[lines][#{id}][id]", name_for(:invoice, line, :id, :index => line.id)
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_id_for_should_support_parts
|
84
|
-
assert_equal "invoice_invoiced_on_year", id_for(@invoice, :invoiced_on, :year)
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_name_for_should_support_parts
|
88
|
-
assert_equal "invoice[invoiced_on][year]", name_for(@invoice, :invoiced_on, :year)
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_value_for_should_support_parts
|
92
|
-
@invoice.stubs(:invoiced_on => Time.now)
|
93
|
-
assert_equal @invoice.invoiced_on.year, value_for(@invoice, :invoiced_on, :year)
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_id_for_should_support_parent
|
97
|
-
assert_equal "invoice_line_1_description", id_for(:invoice, :line, :description, :index => 1)
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_name_for_should_support_parent
|
101
|
-
assert_equal "invoice[lines][1][description]", name_for(:invoice, :line, :description, :index => 1)
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_id_for_should_support_explicit_object_with_parent
|
105
|
-
line = line_stub
|
106
|
-
assert_equal "invoice_line_1_description", id_for(@invoice, line, :description, :index => 1)
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_name_for_should_support_explicit_object_with_parent
|
110
|
-
line = line_stub
|
111
|
-
assert_equal "invoice[lines][1][description]", name_for(@invoice, line, :description, :index => 1)
|
112
|
-
end
|
113
|
-
|
114
|
-
def test_errors_for_returns_nil_when_no_errors
|
115
|
-
@invoice.stubs(:errors => stub(:empty? => true))
|
116
|
-
errors_for(@invoice)
|
117
|
-
assert_html '', nil
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_errors_for_returns_error_messages
|
121
|
-
@invoice.stubs(:class => stub(:name => 'Class name'), :errors => stub(:empty? => false, :full_messages => ['Field name']))
|
122
|
-
errors_for(@invoice)
|
123
|
-
assert_html 'p', :html => /Class name/, :count => 1
|
124
|
-
assert_html 'li', :html => /Field name/, :min => 1
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_label
|
128
|
-
result = label(@invoice, :client_name)
|
129
|
-
assert_equal id_for(@invoice, :client_name), result[:for]
|
130
|
-
end
|
131
|
-
|
132
|
-
def test_checkbox
|
133
|
-
line = line_stub(:taxable => true)
|
134
|
-
@invoice.stubs(:lines).returns([line])
|
135
|
-
result = checkbox(@invoice, line, :taxable, :index => 1)
|
136
|
-
assert_equal :checkbox, result[:type]
|
137
|
-
assert_equal name_for(@invoice, line, :taxable, :index => 1), result[:name]
|
138
|
-
assert_equal id_for(@invoice, line, :taxable, :index => 1), result[:id]
|
139
|
-
assert_equal 1, result[:value]
|
140
|
-
assert result[:checked]
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_checkbox_not_checked
|
144
|
-
line = line_stub(:taxable => false)
|
145
|
-
@invoice.stubs(:lines => [line])
|
146
|
-
result = checkbox(@invoice, line, :taxable, :index => 1)
|
147
|
-
assert_equal :checkbox, result[:type]
|
148
|
-
assert_equal name_for(@invoice, line, :taxable, :index => 1), result[:name]
|
149
|
-
assert_equal id_for(@invoice, line, :taxable, :index => 1), result[:id]
|
150
|
-
assert_equal 1, result[:value]
|
151
|
-
assert !result[:checked]
|
152
|
-
end
|
153
|
-
|
154
|
-
def test_hidden_field
|
155
|
-
@invoice.stubs(:client_name => 'Client name')
|
156
|
-
result = hidden_field(@invoice, :client_name)
|
157
|
-
assert_equal :hidden, result[:type]
|
158
|
-
assert_equal name_for(@invoice, :client_name), result[:name]
|
159
|
-
assert_equal id_for(@invoice, :client_name), result[:id]
|
160
|
-
assert_equal @invoice.client_name, result[:value]
|
161
|
-
end
|
162
|
-
|
163
|
-
def test_text_field
|
164
|
-
@invoice.stubs(:client_name => 'Client name')
|
165
|
-
result = text_field(@invoice, :client_name)
|
166
|
-
assert_equal :text, result[:type]
|
167
|
-
assert_equal name_for(@invoice, :client_name), result[:name]
|
168
|
-
assert_equal id_for(@invoice, :client_name), result[:id]
|
169
|
-
assert_equal @invoice.client_name, result[:value]
|
170
|
-
end
|
171
|
-
|
172
|
-
def test_text_area
|
173
|
-
result = text_area(@invoice, :client_name)
|
174
|
-
assert_equal name_for(@invoice, :client_name), result[:name]
|
175
|
-
assert_equal id_for(@invoice, :client_name), result[:id]
|
176
|
-
end
|
177
|
-
|
178
|
-
def test_select
|
179
|
-
result = select(@invoice, :client_name)
|
180
|
-
assert_equal name_for(@invoice, :client_name), result[:name]
|
181
|
-
assert_equal id_for(@invoice, :client_name), result[:id]
|
182
|
-
end
|
183
|
-
|
184
|
-
def test_options_of
|
185
|
-
dwarfs = %w(Bashful Doc Dopey Grumpy Happy Sleepy Sneezy)
|
186
|
-
options_of dwarfs
|
187
|
-
assert_html 'option', :count => 7 do |options|
|
188
|
-
assert_equal dwarfs, options.collect { |o| o.inner_html }
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
def test_options_of_with_selection
|
193
|
-
dwarfs = %w(Bashful Doc Dopey Grumpy Happy Sleepy Sneezy)
|
194
|
-
options_of dwarfs do |dwarf|
|
195
|
-
dwarf == 'Sleepy'
|
196
|
-
end
|
197
|
-
assert_html 'option', :count => 7 do |options|
|
198
|
-
assert_equal dwarfs, options.collect { |o| o.inner_html }
|
199
|
-
end
|
200
|
-
assert_html 'option[@selected="selected"]', :count => 1, :html => 'Sleepy'
|
201
|
-
end
|
202
|
-
|
203
|
-
def test_options_of_with_values
|
204
|
-
months = Date::MONTHNAMES.enum_for(:each_with_index).collect[1..12]
|
205
|
-
options_of months
|
206
|
-
assert_html 'option', :count => 12 do |options|
|
207
|
-
options.each_with_index do |option,i|
|
208
|
-
assert_html option, "option[@value='#{months[i].last}']", months[i].first
|
209
|
-
end
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
protected
|
214
|
-
def line_stub(methods = {})
|
215
|
-
line = stub({:class => stub(:name => 'Line'), :id => Time.now.to_i}.merge(methods))
|
216
|
-
@invoice.stubs(:lines).returns([line])
|
217
|
-
line
|
218
|
-
end
|
219
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
-
|
3
|
-
class LinksTest < Test::Unit::TestCase
|
4
|
-
include Haml::Helpers
|
5
|
-
include Sinatra::Helpers::Haml::Links
|
6
|
-
|
7
|
-
attr_reader :request
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@request = mock()
|
11
|
-
@request.stubs(:host => 'www.example.com')
|
12
|
-
init_haml_helpers
|
13
|
-
super
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_domain
|
17
|
-
assert_equal 'example.com', domain
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_subdomain
|
21
|
-
assert_equal 'test.example.com', subdomain('test')
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_subdomain_url
|
25
|
-
assert_equal 'http://another.example.com', subdomain_url('another')
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_asset_url
|
29
|
-
assert_equal 'http://assets.example.com/images/logo.gif', asset_url('/images/logo.gif')
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_css
|
33
|
-
assert_equal({ :href => 'http://assets.example.com/stylesheets/test.css', :media => 'all', :rel => 'stylesheet', :type => 'text/css' }, css('/stylesheets/test.css'))
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_icon
|
37
|
-
assert_equal({ :href => 'http://assets.example.com/icons/save.gif', :rel => 'icon', :type => 'image/x-icon' }, icon('/icons/save.gif'))
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_javascript
|
41
|
-
assert_equal({ :src => 'http://assets.example.com/javascripts/jquery.js', :type => 'text/javascript' }, javascript('/javascripts/jquery.js'))
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_image
|
45
|
-
assert_equal({ :alt => 'test', :height => '100', :src => 'http://assets.example.com/images/test.jpg', :width => '200' }, image('/images/test.jpg', :size => '200x100'))
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_action
|
49
|
-
assert_equal({ :action => '/invoices/123', :method => 'post' }, action('/invoices/123'))
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_action_should_override_method
|
53
|
-
assert_equal({ :action => '/invoices/123', :method => 'delete' }, action('/invoices/123', :method => 'delete'))
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_href
|
57
|
-
assert_equal({ :href => '/link' }, href('/link'))
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_href_should_support_method_using_hidden_form
|
61
|
-
assert_equal({ :href => '#', :onclick => "$('<form></form>').css('display','none').attr({'method':'post','action':'/link'}).append($('<input type=\"hidden\">').attr({'name':'_method','value':'put'})).appendTo($(this).parent()).submit();return false;" }, href('/link', :method => 'put'))
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_href_should_support_confirm
|
65
|
-
assert_equal({ :href=>"/link", :onclick => "if (confirm('Really?')) { return true; }; return false;" }, href('/link', :confirm => 'Really?'))
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_href_should_support_ajax
|
69
|
-
assert_equal({ :href=> "#", :onclick=> "$.ajax({url:'/link',success:function(html){$('#result').replaceWith(html);}});return false;" }, href('/link', :success => { :update => '#result' }))
|
70
|
-
end
|
71
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
-
|
3
|
-
class PartialsTest < Test::Unit::TestCase
|
4
|
-
include Haml::Helpers
|
5
|
-
include Sinatra::Helpers::Haml::Partials
|
6
|
-
include Sinatra::Templates
|
7
|
-
|
8
|
-
@templates = {}
|
9
|
-
|
10
|
-
class << self
|
11
|
-
attr_accessor :templates
|
12
|
-
end
|
13
|
-
|
14
|
-
attr_accessor :options
|
15
|
-
|
16
|
-
def setup
|
17
|
-
@options = mock()
|
18
|
-
@options.stubs(:views => File.dirname(__FILE__) + '/views')
|
19
|
-
init_haml_helpers
|
20
|
-
super
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_partial
|
24
|
-
assert_html haml_partial('thing'), nil, "<p>Hello world</p>\n"
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_partial_with_object
|
28
|
-
assert_html haml_partial('object', :object => mock(:name => 'object')), nil, "<p>Hello object</p>\n"
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_partial_with_locals
|
32
|
-
assert_html haml_partial('object', :locals => { :object => mock(:name => 'local')}), nil, "<p>Hello local</p>\n"
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_partial_with_collection
|
36
|
-
assert_html haml_partial('object', :collection => [ mock(:name => 'one'), mock(:name => 'two')]), nil, "<p>Hello one</p>\n<p>Hello two</p>\n"
|
37
|
-
end
|
38
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
%p== Hello #{object.name}
|
@@ -1 +0,0 @@
|
|
1
|
-
%p Hello world
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
-
|
3
|
-
class EscapeTest < Test::Unit::TestCase
|
4
|
-
include Sinatra::Helpers::Html::Escape
|
5
|
-
|
6
|
-
def test_h_should_escape_text
|
7
|
-
assert_equal 'this & that', h('this & that')
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_h_should_return_blank_for_empty_string
|
11
|
-
assert_equal '', h('')
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_h_should_return_blank_for_nil
|
15
|
-
assert_equal '', h(nil)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_hbang_should_escape_text
|
19
|
-
assert_equal 'this & that', h!('this & that')
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_hbang_should_return_nbsp_for_empty_string
|
23
|
-
assert_equal ' ', h!('')
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_hbang_should_return_nbsp_for_nil
|
27
|
-
assert_equal ' ', h!(nil)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_hbang_should_return_arbitrary_placeholder_for_empty_string
|
31
|
-
assert_equal 'N/A', h!('', 'N/A')
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_hbang_should_return_arbitrary_placeholder_for_nil
|
35
|
-
assert_equal 'N/A', h!(nil, 'N/A')
|
36
|
-
end
|
37
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
$:.unshift File.dirname(__FILE__) + '../lib'
|
4
|
-
|
5
|
-
require 'haml'
|
6
|
-
|
7
|
-
require 'sinatra-helpers'
|
8
|
-
|
9
|
-
require 'test/unit'
|
10
|
-
require 'mocha'
|
11
|
-
require 'hpricot'
|
12
|
-
|
13
|
-
class Test::Unit::TestCase
|
14
|
-
def assert_html(*args) # [doc], selector, match)
|
15
|
-
match = args.pop
|
16
|
-
selector = args.pop
|
17
|
-
html = args.pop || haml_buffer.buffer
|
18
|
-
html = html.to_html if html.respond_to? :to_html
|
19
|
-
selection = Hpricot(html)/selector unless match.nil?
|
20
|
-
case match
|
21
|
-
when NilClass
|
22
|
-
assert_equal selector, html
|
23
|
-
when Numeric
|
24
|
-
assert_equal match, selection.size, "Expected selection of exactly <#{match}>"
|
25
|
-
when String
|
26
|
-
assert_equal match, selection.inner_html, "Expected selection to equal <#{match}>"
|
27
|
-
when Regexp
|
28
|
-
assert_match match, selection.inner_html, "Expected selection to match <#{match}>"
|
29
|
-
when Hash
|
30
|
-
assert selection.size >= match[:min], "Expected selection of at least <#{match[:min]}>" if match.include?(:min)
|
31
|
-
assert selection.size <= match[:max], "Expected selection of at most <#{match[:max]}>" if match.include?(:max)
|
32
|
-
assert_html html, selector, match[:count] if match.include?(:count)
|
33
|
-
assert_html html, selector, match[:html] if match.include?(:html)
|
34
|
-
end
|
35
|
-
if block_given? && !selection.empty?
|
36
|
-
yield selection
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|