thumblemonks-chicago 0.1.2.4 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.txt +8 -0
- data/chicago.gemspec +2 -2
- data/lib/chicago/application.rb +14 -10
- data/lib/chicago/helpers.rb +46 -5
- data/lib/chicago/responders.rb +5 -5
- data/lib/chicago/shoulda/sinatra.rb +3 -17
- data/lib/chicago.rb +1 -0
- data/test/application_test.rb +10 -0
- data/test/test_helper.rb +10 -5
- metadata +2 -2
data/HISTORY.txt
CHANGED
data/chicago.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "chicago"
|
3
|
-
s.version = "0.
|
4
|
-
s.date = "2009-
|
3
|
+
s.version = "0.2"
|
4
|
+
s.date = "2009-03-12"
|
5
5
|
s.summary = "Sinatra runtime and testing extensions used commonly by Thumblemonks"
|
6
6
|
s.email = %w[gus@gusg.us gabriel.gironda@gmail.com]
|
7
7
|
s.homepage = "http://github.com/thumblemonks/chicago/tree/master"
|
data/lib/chicago/application.rb
CHANGED
@@ -1,26 +1,30 @@
|
|
1
|
-
module
|
2
|
-
module
|
1
|
+
module Sinatra
|
2
|
+
module ThumbleMonks
|
3
3
|
module Base
|
4
4
|
|
5
5
|
# Assumes all CSS is SASS and is referenced as being in a directory named stylesheets
|
6
|
+
# If SASS file is not defined, the route will passed on to - theoretically - the real
|
7
|
+
# CSS in the public directory.
|
6
8
|
def catch_all_css(path='/stylesheets')
|
7
9
|
get("#{path}/*.css") do
|
8
|
-
|
9
|
-
|
10
|
+
begin
|
11
|
+
content_type 'text/css'
|
12
|
+
sass params["splat"].first.to_sym
|
13
|
+
rescue Errno::ENOENT
|
14
|
+
pass
|
15
|
+
end
|
10
16
|
end
|
11
17
|
end
|
12
18
|
|
13
|
-
# When you don't want anything special, but to load a named view
|
19
|
+
# When you don't want anything special, but to load a named view as HAML.
|
14
20
|
def get_obvious(name)
|
15
21
|
get "/#{name}" do
|
16
|
-
title = name.to_s
|
17
22
|
haml name.to_sym
|
18
23
|
end
|
19
24
|
end
|
20
25
|
|
21
26
|
end # Base
|
27
|
+
end # ThumbleMonks
|
22
28
|
|
23
|
-
|
24
|
-
end #
|
25
|
-
|
26
|
-
Sinatra::Base.extend(Thumblemonks::Sinatra::Base)
|
29
|
+
register ThumbleMonks::Base
|
30
|
+
end # Sinatra
|
data/lib/chicago/helpers.rb
CHANGED
@@ -1,12 +1,37 @@
|
|
1
|
-
module
|
2
|
-
module
|
1
|
+
module Sinatra
|
2
|
+
module ThumbleMonks
|
3
3
|
module Helpers
|
4
|
+
# A basic anchor (link_to) tag
|
5
|
+
#
|
6
|
+
# Exmaples:
|
7
|
+
#
|
8
|
+
# anchor('GusGus', 'http://gusg.us')
|
9
|
+
# => <a href="http://gusg.us">GusG.us</a>
|
10
|
+
#
|
11
|
+
# anchor('GusGus', 'http://gusg.us', :title => 'You know who!')
|
12
|
+
# => <a href="http://gusg.us" title="You know who!">GusG.us</a>
|
4
13
|
def anchor(name, url, options={})
|
5
14
|
defaults = {:href => url}
|
6
15
|
options_str = hash_to_attributes(defaults.merge(options))
|
7
16
|
%Q[<a #{options_str}>#{name}</a>]
|
8
17
|
end
|
9
18
|
|
19
|
+
# A helper to include stylesheet links. Currently defaults everything to
|
20
|
+
# load from a /stylesheets directory.
|
21
|
+
#
|
22
|
+
# Exmaples:
|
23
|
+
#
|
24
|
+
# stylesheet_include('foo')
|
25
|
+
# => <link href="/stylsheets/foo.css" media="screen" rel="stylesheet" type="text/css" />
|
26
|
+
#
|
27
|
+
# stylesheet_include('foo/bar')
|
28
|
+
# => <link href="/stylsheets/foo/bar.css" media="screen" rel="stylesheet" type="text/css" />
|
29
|
+
#
|
30
|
+
# stylesheet_include('foo', :media => "print")
|
31
|
+
# => <link href="/stylsheets/foo.css" media="print" rel="stylesheet" type="text/css" />
|
32
|
+
#
|
33
|
+
# stylesheet_include('http://example.com/foo.css')
|
34
|
+
# => <link href="http://example.com/foo.css" media="print" rel="stylesheet" type="text/css" />
|
10
35
|
def stylesheet_include(name, options={})
|
11
36
|
name = "/stylesheets/#{name}.css" unless remote_asset?(name)
|
12
37
|
defaults = {:href => name, :media => "screen",
|
@@ -15,6 +40,22 @@ module Thumblemonks
|
|
15
40
|
%Q[<link #{options_str}/>]
|
16
41
|
end
|
17
42
|
|
43
|
+
# A helper to include javascript source tags. Currently defaults everything
|
44
|
+
# to load from a /javascripts directory.
|
45
|
+
#
|
46
|
+
# Exmaples:
|
47
|
+
#
|
48
|
+
# javascript_include('foo')
|
49
|
+
# => <javascript src="/javascripts/foo.js" type="text/javascript"></script>
|
50
|
+
#
|
51
|
+
# javascript_include('foo/bar')
|
52
|
+
# => <javascript src="/javascripts/foo/bar.js" type="text/javascript"></script>
|
53
|
+
#
|
54
|
+
# javascript_include('foo', :something => "great")
|
55
|
+
# => <javascript src="/javascripts/foo.js" type="text/javascript" something="great"></script>
|
56
|
+
#
|
57
|
+
# javascript_include('http://example.com/foo.js')
|
58
|
+
# => <javascript src="http://example.com/foo.js" type="text/javascript"></script>
|
18
59
|
def javascript_include(name, options={})
|
19
60
|
name = "/javascripts/#{name}.js" unless remote_asset?(name)
|
20
61
|
defaults = {:src => name, :type => "text/javascript"}
|
@@ -30,7 +71,7 @@ module Thumblemonks
|
|
30
71
|
options.map {|k,v| "#{k}=\"#{v}\""}.join(' ')
|
31
72
|
end
|
32
73
|
end # Helpers
|
33
|
-
end #
|
34
|
-
end # Thumblemonks
|
74
|
+
end # ThumbleMonks
|
35
75
|
|
36
|
-
|
76
|
+
helpers ThumbleMonks::Helpers
|
77
|
+
end # Sinatra
|
data/lib/chicago/responders.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
module
|
2
|
-
module
|
1
|
+
module Sinatra
|
2
|
+
module Thumblemonks
|
3
3
|
module Responders
|
4
4
|
|
5
5
|
# Returns a JSON response for an object
|
@@ -9,7 +9,7 @@ module Thumblemonks
|
|
9
9
|
end
|
10
10
|
|
11
11
|
end # Responders
|
12
|
-
end #
|
13
|
-
end # Thumblemonks
|
12
|
+
end # Thumblemonks
|
14
13
|
|
15
|
-
|
14
|
+
helpers Thumblemonks::Responders
|
15
|
+
end # Sinatra
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'ostruct'
|
3
3
|
|
4
|
-
module
|
4
|
+
module ThumbleMonks
|
5
5
|
module Shoulda
|
6
6
|
module Sinatra
|
7
7
|
|
@@ -32,20 +32,6 @@ module Thumblemonks
|
|
32
32
|
assert_response_body json
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
36
|
-
# Will invoke a helper method in the EventContext and set the result of
|
37
|
-
# output to @response.body.
|
38
|
-
#
|
39
|
-
# NOTE: This will probably break right now if you need access to specific
|
40
|
-
# event context methods or Sinatra.app options in your helper.
|
41
|
-
def should_invoke_helper(name, *args, &assert_block)
|
42
|
-
should "invoke helper #{name} with #{args.inspect}" do
|
43
|
-
@response = OpenStruct.new(:body => nil)
|
44
|
-
event_context = ::Sinatra::EventContext.new(nil, @response, nil)
|
45
|
-
@response.body = event_context.send(name, *args)
|
46
|
-
self.instance_eval(&assert_block)
|
47
|
-
end
|
48
|
-
end
|
49
35
|
end # Macros
|
50
36
|
|
51
37
|
module Helpers
|
@@ -80,6 +66,6 @@ module Thumblemonks
|
|
80
66
|
|
81
67
|
end # Sinatra
|
82
68
|
end # Shoulda
|
83
|
-
end #
|
69
|
+
end # ThumbleMonks
|
84
70
|
|
85
|
-
Test::Unit::TestCase.instance_eval { include
|
71
|
+
Test::Unit::TestCase.instance_eval { include ThumbleMonks::Shoulda::Sinatra }
|
data/lib/chicago.rb
CHANGED
data/test/application_test.rb
CHANGED
@@ -34,6 +34,16 @@ class ApplicationTest < Test::Unit::TestCase
|
|
34
34
|
should_have_content_type 'text/css'
|
35
35
|
should_have_response_body %r[.car \{\s+display: some; \}\s]
|
36
36
|
end
|
37
|
+
|
38
|
+
context "with path that's not a defined a sass file" do
|
39
|
+
setup do
|
40
|
+
mock_app { catch_all_css }
|
41
|
+
get '/stylesheets/goo.css'
|
42
|
+
end
|
43
|
+
|
44
|
+
should_have_response_status 404
|
45
|
+
should_have_content_type 'text/css'
|
46
|
+
end
|
37
47
|
end # catching all css
|
38
48
|
|
39
49
|
context "getting obvious views" do
|
data/test/test_helper.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
require '
|
4
|
-
|
5
|
-
require '
|
3
|
+
require 'haml'
|
4
|
+
require 'sinatra'
|
5
|
+
require 'test/unit'
|
6
6
|
require 'sinatra/test'
|
7
|
-
|
7
|
+
|
8
|
+
require 'shoulda'
|
8
9
|
|
9
10
|
require 'chicago'
|
10
11
|
require 'chicago/shoulda'
|
@@ -13,7 +14,11 @@ module Sinatra::Test
|
|
13
14
|
# Sets up a Sinatra::Base subclass defined with the block
|
14
15
|
# given. Used in setup or individual spec methods to establish
|
15
16
|
# the application.
|
16
|
-
def mock_app(base=Sinatra::
|
17
|
+
def mock_app(base=Sinatra::Default, &block)
|
17
18
|
@app = Sinatra.new(base, &block)
|
18
19
|
end
|
19
20
|
end
|
21
|
+
|
22
|
+
class Test::Unit::TestCase
|
23
|
+
include Sinatra::Test
|
24
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thumblemonks-chicago
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: "0.2"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Knowlden
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-03-12 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|