facades 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.rbenv-gemsets +1 -0
- data/.rvmrc +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +12 -0
- data/Guardfile +19 -0
- data/README.md +115 -101
- data/Rakefile +8 -0
- data/app/assets/javascripts/facades/debug/grid.js +0 -0
- data/app/helpers/facades_helper.rb +1 -0
- data/config.ru +7 -0
- data/facades.gemspec +9 -2
- data/lib/facades/helpers/layout.rb +36 -73
- data/lib/facades/helpers/navigation.rb +182 -110
- data/lib/facades/helpers/{elements.rb → notifications.rb} +9 -36
- data/lib/facades/helpers.rb +6 -17
- data/lib/facades/patterns/tabs.rb +75 -0
- data/lib/facades/patterns.rb +7 -0
- data/lib/facades/{sass_ext → sass_extensions}/color.rb +5 -13
- data/lib/facades/sass_extensions/conversions.rb +27 -0
- data/lib/facades/sass_extensions/functions.rb +84 -0
- data/lib/facades/sass_extensions/icons.rb +66 -0
- data/lib/facades/sass_extensions.rb +21 -0
- data/lib/facades/support/compass/project/MIT-LICENSE.txt +20 -0
- data/lib/facades/support/compass/project/humans.txt +8 -0
- data/lib/facades/support/compass/project/index.html +45 -0
- data/lib/facades/support/compass/project/manifest.rb +18 -0
- data/lib/facades/support/compass/project/robots.txt +4 -0
- data/lib/facades/support/compass.rb +9 -0
- data/lib/facades/support/rails.rb +12 -15
- data/lib/facades/support/simple_form.rb +32 -0
- data/lib/facades/version.rb +1 -1
- data/lib/facades.rb +21 -44
- data/spec/internal/app/helpers/application_helper.rb +3 -0
- data/spec/internal/app/views/navigation/_multi_list.html.erb +11 -0
- data/spec/internal/app/views/navigation/_multi_option_list.html.erb +14 -0
- data/spec/internal/app/views/navigation/_single_list.html.erb +9 -0
- data/spec/internal/config/database.yml +3 -0
- data/spec/internal/config/routes.rb +3 -0
- data/spec/internal/db/schema.rb +3 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/spec_helper.rb +16 -6
- data/spec/unit/helpers/layout_spec.rb +4 -0
- data/spec/unit/helpers/navigation_spec.rb +384 -0
- data/spec/unit/helpers/notifications_spec.rb +4 -0
- data/spec/unit/patterns/tabs_spec.rb +58 -0
- data/src/icons/facades.yml +105 -0
- data/src/icons/font-awesome.yml +210 -0
- data/src/scss/facades/_buttons.scss +10 -0
- data/src/scss/facades/_config.scss +99 -0
- data/src/scss/facades/_debug.scss +8 -0
- data/src/scss/facades/_forms.scss +228 -0
- data/src/scss/facades/_global.scss +104 -0
- data/src/scss/facades/_icons.scss +61 -0
- data/src/scss/facades/_mixins.scss +115 -0
- data/src/scss/facades/_mobile.scss +3 -0
- data/src/scss/facades/_setup.scss +191 -0
- data/src/scss/facades/_typography.scss +220 -0
- data/src/scss/facades/buttons/_glossy.scss +29 -0
- data/src/scss/facades/buttons/_gradient.scss +36 -0
- data/src/scss/facades/buttons/_shared.scss +33 -0
- data/src/scss/facades/buttons/_simple.scss +28 -0
- data/src/scss/facades/icons/_classes.scss +37 -0
- data/src/scss/facades/icons/_legacy.scss +27 -0
- data/src/scss/facades/layout/_lists.scss +43 -0
- data/src/scss/facades/mixins/_gradients.scss +30 -0
- data/src/scss/facades/mixins/_rhythm.scss +37 -0
- data/src/scss/facades/mobile/_buttons.scss +97 -0
- data/src/scss/facades/mobile/_config.scss +30 -0
- data/src/scss/facades/mobile/_global.scss +81 -0
- data/src/scss/facades/mobile/_mixins.scss +49 -0
- data/src/scss/facades/mobile/_setup.scss +50 -0
- data/src/scss/facades/mobile/patterns/_navbar.scss +21 -0
- data/src/scss/facades/mobile/patterns/_panel.scss +37 -0
- data/src/scss/facades/mobile/patterns/_stage.scss +20 -0
- data/src/scss/facades/mobile/patterns/_toolbar.scss +25 -0
- data/src/scss/facades/mobile/themes/_apple.scss +17 -0
- data/src/scss/facades/patterns/_labels.scss +50 -0
- data/src/scss/facades/patterns/_navbar.scss +4 -0
- data/src/scss/facades/patterns/_notifications.scss +82 -0
- data/src/scss/facades/patterns/_pagination.scss +4 -0
- data/src/scss/facades/patterns/_pills.scss +50 -0
- data/src/scss/facades/patterns/_tabs.scss +83 -0
- data/src/scss/facades/patterns/_twipsy.scss +84 -0
- data/src/scss/facades/typography/_tables.scss +95 -0
- metadata +201 -58
- data/app/views/facades/_pagination.html.erb +0 -20
- data/lib/facades/builders/form/base.rb +0 -212
- data/lib/facades/builders/form/elements.rb +0 -112
- data/lib/facades/builders/form/helper.rb +0 -29
- data/lib/facades/builders/form.rb +0 -22
- data/lib/facades/builders/sprite.rb +0 -50
- data/lib/facades/builders/table.rb +0 -76
- data/lib/facades/debug/html.rb +0 -6
- data/lib/facades/helpers/builders.rb +0 -24
- data/lib/facades/helpers/mobile.rb +0 -57
- data/lib/facades/helpers/pagination.rb +0 -83
- data/lib/facades/helpers/utility.rb +0 -31
- data/lib/facades/sass_ext/form_elements.rb +0 -52
- data/lib/facades/sass_ext/funcs.rb +0 -33
- data/lib/facades/sass_ext.rb +0 -14
- data/lib/facades/stylesheets/facades/_common.scss +0 -7
- data/lib/facades/stylesheets/facades/_css3.scss +0 -93
- data/lib/facades/stylesheets/facades/_layout.scss +0 -5
- data/lib/facades/stylesheets/facades/_normalize.scss +0 -5
- data/lib/facades/stylesheets/facades/_setup.scss +0 -104
- data/lib/facades/stylesheets/facades/_typography.scss +0 -2
- data/lib/facades/stylesheets/facades/_ui.scss +0 -3
- data/lib/facades/stylesheets/facades/_utilities.scss +0 -32
- data/lib/facades/stylesheets/facades/layout/_dropdown-list.scss +0 -7
- data/lib/facades/stylesheets/facades/layout/_forms.scss +0 -53
- data/lib/facades/stylesheets/facades/layout/_grid.scss +0 -49
- data/lib/facades/stylesheets/facades/layout/_responsive_grid.scss +0 -164
- data/lib/facades/stylesheets/facades/setup/_forms.scss +0 -284
- data/lib/facades/stylesheets/facades/setup/_ie.scss +0 -12
- data/lib/facades/stylesheets/facades/setup/_reset.scss +0 -255
- data/lib/facades/stylesheets/facades/typography/_baseline.scss +0 -91
- data/lib/facades/stylesheets/facades/typography/_lists.scss +0 -34
- data/lib/facades/stylesheets/facades/typography/_shadow.scss +0 -8
- data/lib/facades/stylesheets/facades/ui/_buttons.scss +0 -34
- data/lib/facades/stylesheets/facades/ui/_flash-messages.scss +0 -29
- data/lib/facades/stylesheets/facades/ui/_tabbed.scss +0 -5
- data/lib/facades/stylesheets/facades/ui/_tool-tip.scss +0 -44
- data/lib/facades/stylesheets/facades/utilities/_clearfix.scss +0 -20
- data/lib/facades/stylesheets/facades/utilities/_color.scss +0 -7
- data/lib/facades/stylesheets/facades/utilities/_cursors.scss +0 -4
- data/lib/facades/support/serve.rb +0 -17
- data/lib/facades/support/tipsy.rb +0 -17
- data/spec/facades/helpers/elements_spec.rb +0 -86
- data/spec/facades/helpers/layout_helpers_spec.rb +0 -5
- data/spec/facades/helpers/navigation_spec.rb +0 -107
@@ -0,0 +1,66 @@
|
|
1
|
+
module Facades
|
2
|
+
module SassExtensions
|
3
|
+
module Icons
|
4
|
+
class << self
|
5
|
+
|
6
|
+
def glyph_sets
|
7
|
+
@glyph_sets ||= {}
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
##
|
13
|
+
# Creates a unicode entity for use in a content: description in css.
|
14
|
+
#
|
15
|
+
def icon_glyph(name, set = 'facades')
|
16
|
+
Sass::Script::String.new("\\#{icon_glyph_value(name, set)}")
|
17
|
+
end
|
18
|
+
|
19
|
+
##
|
20
|
+
# Creates a entity representation of the unicode character.
|
21
|
+
# Used in IE7/legacy support.
|
22
|
+
#
|
23
|
+
def icon_entity(name, set = 'facades')
|
24
|
+
Sass::Script::String.new("#{icon_glyph_value(name, set)}; ")
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# Create a sass list of icon names from an icon pack.
|
29
|
+
#
|
30
|
+
def icon_names(set = "facades")
|
31
|
+
listing = icon_translations(set)
|
32
|
+
keys = (listing.keys || [])
|
33
|
+
keys = keys.collect{ |k| Sass::Script::String.new(k) }
|
34
|
+
Sass::Script::List.new(keys, ',')
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Maps a "pack" name to a font name.
|
39
|
+
#
|
40
|
+
def icon_font(name)
|
41
|
+
Sass::Script::String.new({
|
42
|
+
'facades' => 'FacadesRegular',
|
43
|
+
'font-awesome' => 'FontAwesome'
|
44
|
+
}[name])
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def icon_translations(set)
|
50
|
+
set = set.value if set.respond_to?(:value)
|
51
|
+
glyphs = Icons.glyph_sets[set] || YAML::load(File.open(File.join(Facades.icon_path, "#{set}.yml")))
|
52
|
+
Icons.glyph_sets[set] ||= Hash[glyphs.map{ |k, v| [k.to_s.gsub("_", "-"), v] }]
|
53
|
+
Icons.glyph_sets[set]
|
54
|
+
end
|
55
|
+
|
56
|
+
def icon_glyph_value(name, set = 'facades')
|
57
|
+
name = name.to_s
|
58
|
+
value = icon_translations(set)[name]
|
59
|
+
if value.nil?
|
60
|
+
raise Sass::SyntaxError, "The icon '#{name}' does not exist within icon pack #{set}."
|
61
|
+
end
|
62
|
+
value
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'sass'
|
2
|
+
|
3
|
+
module Facades
|
4
|
+
module SassExtensions
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def vendor_prefixes
|
8
|
+
[:webkit, :moz, :ms, :o]
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
['color', 'conversions', 'functions', 'icons'].each do |extension|
|
15
|
+
require "facades/sass_extensions/#{extension}"
|
16
|
+
Sass::Script::Functions.send(:include, Facades::SassExtensions.const_get(extension.camelize))
|
17
|
+
end
|
18
|
+
|
19
|
+
class Sass::Script::Functions::EvaluationContext
|
20
|
+
include Sass::Script::Functions
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 kurb media llc, http://www.kurbmedia.com/
|
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.
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
|
3
|
+
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
|
4
|
+
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
|
5
|
+
<!--[if gt IE 8]><!-->
|
6
|
+
<html class="no-js" lang="en"><!--<![endif]-->
|
7
|
+
<head>
|
8
|
+
<meta charset="utf-8">
|
9
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
10
|
+
<title>My awesome project</title>
|
11
|
+
<meta name="description" content="">
|
12
|
+
<meta name="keywords" content="">
|
13
|
+
<meta name="author" content="" />
|
14
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
15
|
+
<!-- pre-fetch dns info for external sites -->
|
16
|
+
<link rel="dns-prefetch" href="//ajax.googleapis.com" />
|
17
|
+
<!-- 'pinned' sites in IE ( see: http://html5boilerplate.com/docs/head-Tips/ ) -->
|
18
|
+
<meta name="application-name" content="" />
|
19
|
+
<meta name="msapplication-tooltip" content="" />
|
20
|
+
<!-- Facebook open graph ( seff: http://developers.facebook.com/docs/share ) -->
|
21
|
+
<meta property="og:title" content="" />
|
22
|
+
<meta property="og:description" content="" />
|
23
|
+
<meta property="og:image" content="" />
|
24
|
+
<link rel="stylesheet" href="assets/styles.css">
|
25
|
+
<!--[if lte IE 8]>
|
26
|
+
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
|
27
|
+
<!-->
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<header>
|
31
|
+
|
32
|
+
</header>
|
33
|
+
<div id="main" role="main">
|
34
|
+
|
35
|
+
</div>
|
36
|
+
<footer>
|
37
|
+
|
38
|
+
</footer>
|
39
|
+
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
|
40
|
+
<!--[if lt IE 7 ]>
|
41
|
+
<script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"></script>
|
42
|
+
<script>window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})})</script>
|
43
|
+
<![endif]-->
|
44
|
+
</body>
|
45
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
description "Facades. Front end development awesome-ness."
|
2
|
+
|
3
|
+
stylesheet 'screen.scss', :media => 'all'
|
4
|
+
stylesheet '_config.scss', :to => 'shared/_config.scss'
|
5
|
+
stylesheet 'assets/styles.css', :to => 'assets/styles.css'
|
6
|
+
|
7
|
+
html 'index.html'
|
8
|
+
file 'humans.txt'
|
9
|
+
file 'robots.txt'
|
10
|
+
file 'MIT-LICENSE.txt'
|
11
|
+
|
12
|
+
help %Q{
|
13
|
+
Facades front end awesome-ness. For more information visit https://github.com/kurbmedia/facades
|
14
|
+
}
|
15
|
+
|
16
|
+
welcome_message %Q{
|
17
|
+
Awww yeahhh, now your getting awesome. If you need more information, visit https://github.com/kurbmedia/facades
|
18
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'compass'
|
2
|
+
##
|
3
|
+
# Creates the facades compass extension
|
4
|
+
#
|
5
|
+
Compass::Frameworks.register('facades',
|
6
|
+
:stylesheets_directory => Facades.scss_path,
|
7
|
+
:templates_directory => File.join(File.dirname(__FILE__), 'compass'))
|
8
|
+
|
9
|
+
require 'facades/sass_extensions'
|
@@ -1,26 +1,23 @@
|
|
1
1
|
require 'rails'
|
2
|
+
require 'sass/rails'
|
2
3
|
|
3
|
-
|
4
|
+
##
|
5
|
+
# Integrates facades assets into the Rails asset pipeline.
|
6
|
+
#
|
4
7
|
module Facades
|
5
8
|
class Engine < Rails::Engine
|
6
9
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
require 'sass/rails'
|
11
|
-
|
12
|
-
config.sass.load_paths << File.expand_path("../../stylesheets", __FILE__)
|
13
|
-
Facades::Builders::Sprite
|
14
|
-
|
15
|
-
ActiveSupport.on_load(:action_controller) do
|
16
|
-
include Facades::Helpers::MobileController
|
10
|
+
initializer 'load facades assets' do |app|
|
11
|
+
app.config.sass.load_paths ||= []
|
12
|
+
app.config.sass.load_paths << Facades.scss_path
|
17
13
|
end
|
18
14
|
|
19
|
-
initializer '
|
20
|
-
|
21
|
-
|
15
|
+
initializer 'configure simple_form' do |app|
|
16
|
+
begin
|
17
|
+
require 'simple_form'
|
18
|
+
require 'facades/support/simple_form'
|
19
|
+
rescue Exception => e
|
22
20
|
end
|
23
21
|
end
|
24
|
-
|
25
22
|
end
|
26
23
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'simple_form/version'
|
2
|
+
|
3
|
+
if SimpleForm::VERSION.to_i >= 2
|
4
|
+
SimpleForm.setup do |config|
|
5
|
+
|
6
|
+
config.label_text = lambda { |label, required| "#{label} #{required}" }
|
7
|
+
config.required_by_default = false
|
8
|
+
config.country_priority = 'United States'
|
9
|
+
config.default_input_size = 30
|
10
|
+
|
11
|
+
config.wrappers tag: :li, class: 'field', error_class: 'invalid-field' do |b|
|
12
|
+
b.use :html5
|
13
|
+
b.use :placeholder
|
14
|
+
|
15
|
+
b.optional :maxlength
|
16
|
+
b.optional :pattern
|
17
|
+
b.optional :min_max
|
18
|
+
b.optional :readonly
|
19
|
+
|
20
|
+
b.use :label_input, wrap_with: { error_class: 'invalid', tag: false }
|
21
|
+
b.use :hint, wrap_with: { tag: :span, class: :hint }
|
22
|
+
b.use :error, wrap_with: { tag: :span, class: :error }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
SimpleForm.html5 = true
|
27
|
+
SimpleForm.error_method = :first
|
28
|
+
SimpleForm.error_notification_id = nil
|
29
|
+
SimpleForm.browser_validations = false
|
30
|
+
SimpleForm.collection_wrapper_tag = nil
|
31
|
+
end
|
32
|
+
|
data/lib/facades/version.rb
CHANGED
data/lib/facades.rb
CHANGED
@@ -1,57 +1,34 @@
|
|
1
|
-
require 'active_support'
|
2
|
-
require 'active_support/core_ext/object'
|
1
|
+
require 'active_support/all'
|
3
2
|
require 'facades/version'
|
4
3
|
|
5
4
|
module Facades
|
5
|
+
extend self
|
6
|
+
autoload :Helpers, 'facades/helpers'
|
7
|
+
autoload :Patterns, 'facades/patterns'
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
+
def scss_path
|
10
|
+
File.expand_path("../../src", __FILE__) << "/scss"
|
9
11
|
end
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
def image_path
|
14
|
+
File.expand_path("../../src", __FILE__) << "/images"
|
13
15
|
end
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
-
autoload :Form, 'facades/builders/form'
|
18
|
-
end
|
19
|
-
|
20
|
-
# When enabled, HTML5 elements are used within helpers
|
21
|
-
# This includes things like using <nav> within pagination
|
22
|
-
# and the nav helper.
|
23
|
-
#
|
24
|
-
mattr_accessor :enable_html5
|
25
|
-
@@enable_html5 = true
|
26
|
-
|
27
|
-
# When enabled, a div is added to each HTML page which displays
|
28
|
-
# errors with the resulting html. This includes things like missing page titles,
|
29
|
-
# missing keywords, etc.
|
30
|
-
#
|
31
|
-
mattr_accessor :debug_html
|
32
|
-
@@debug_html = false
|
33
|
-
|
34
|
-
def self.helpers
|
35
|
-
Facades::Helpers
|
36
|
-
end
|
37
|
-
|
38
|
-
def setup(&block)
|
39
|
-
yield self
|
17
|
+
def icon_path
|
18
|
+
File.expand_path("../../src", __FILE__) << "/icons"
|
40
19
|
end
|
41
20
|
|
42
21
|
end
|
43
22
|
|
44
|
-
require 'facades/
|
45
|
-
|
46
|
-
begin
|
47
|
-
require 'compass'
|
48
|
-
rescue LoadError
|
49
|
-
end
|
50
|
-
|
51
|
-
if defined?(Compass)
|
52
|
-
Compass::Frameworks.register('facades',
|
53
|
-
:stylesheets_directory => File.join(File.dirname(__FILE__), 'facades/stylesheets'),
|
54
|
-
:templates_directory => File.join(File.dirname(__FILE__), 'facades/templates'))
|
55
|
-
end
|
23
|
+
require 'facades/sass_extensions'
|
56
24
|
|
57
|
-
|
25
|
+
##
|
26
|
+
# Use the rails pipeline directly unless functioning
|
27
|
+
# in a non-rails environment. Otherwise include the
|
28
|
+
# compass extension.
|
29
|
+
#
|
30
|
+
if defined?(Rails)
|
31
|
+
require 'facades/support/rails'
|
32
|
+
else
|
33
|
+
require 'facades/support/compass'
|
34
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%
|
2
|
+
@link_options = @link_options || {}
|
3
|
+
@link_options.reverse_merge!({ :home => {}, :about => {} })
|
4
|
+
%>
|
5
|
+
|
6
|
+
<%= nav((@options || {})) do |n| %>
|
7
|
+
<%= n.link "Home", "/", @link_options[:about] %>
|
8
|
+
<%= n.link "About", "/about" do |subnav| %>
|
9
|
+
<%= subnav.link "About Sub Path", "/about/sub-path" %>
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%
|
2
|
+
@link_options = @link_options || {}
|
3
|
+
@link_options.reverse_merge!({ :home => {}, :about => {} })
|
4
|
+
@subnav ||= []
|
5
|
+
%>
|
6
|
+
|
7
|
+
<%= nav((@options || {})) do |n| %>
|
8
|
+
<%= n.link "Home", "/", @link_options[:about] %>
|
9
|
+
<%= n.link "About", "/about" do |subnav| %>
|
10
|
+
<% @subnav.each do |item| %>
|
11
|
+
<%= subnav.link item, "/#{item.to_s.downcase}" %>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%
|
2
|
+
@link_options = @link_options || {}
|
3
|
+
@link_options.reverse_merge!({ :home => {}, :about => {} })
|
4
|
+
%>
|
5
|
+
|
6
|
+
<%= nav((@options || {})) do |n| %>
|
7
|
+
<%= n.link "Home", "/", @link_options[:home] %>
|
8
|
+
<%= n.link "About", "/about", @link_options[:about] %>
|
9
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
*.log
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,22 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
require 'bundler/setup'
|
4
|
+
|
5
|
+
Bundler.require :default, :development
|
6
|
+
|
7
|
+
Combustion.initialize! :action_controller, :action_view, :sprockets
|
8
|
+
|
9
|
+
require 'facades/support/rails'
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'growl'
|
13
|
+
rescue LoadError
|
14
|
+
end
|
3
15
|
|
4
|
-
require 'facades'
|
5
|
-
require 'facades/helpers'
|
6
16
|
require 'rspec'
|
7
|
-
require '
|
8
|
-
require 'compass'
|
17
|
+
require 'rspec/rails'
|
9
18
|
|
19
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
10
20
|
|
11
21
|
RSpec.configure do |config|
|
12
22
|
end
|