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 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
1
+ 0.3.2
@@ -15,7 +15,27 @@ Middleman.helpers do
15
15
  classes.join(' ')
16
16
  end
17
17
 
18
- def asset_url(path, tld_length = 1)
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.1"
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.1
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,4 +0,0 @@
1
- ---
2
- :major: 0
3
- :minor: 9
4
- :patch: 1
@@ -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,4 +0,0 @@
1
- require File.dirname(__FILE__) + '/haml/flash.rb'
2
- require File.dirname(__FILE__) + '/haml/forms.rb'
3
- require File.dirname(__FILE__) + '/haml/links.rb'
4
- require File.dirname(__FILE__) + '/haml/partials.rb'
@@ -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 = '&nbsp;')
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,2 +0,0 @@
1
- require 'sinatra-helpers/haml'
2
- require 'sinatra-helpers/html'
@@ -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 &amp; 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 &amp; that', h!('this & that')
20
- end
21
-
22
- def test_hbang_should_return_nbsp_for_empty_string
23
- assert_equal '&nbsp;', h!('')
24
- end
25
-
26
- def test_hbang_should_return_nbsp_for_nil
27
- assert_equal '&nbsp;', 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