ricogen 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +234 -0
- data/REVISION +1 -0
- data/Rakefile +24 -0
- data/SNIPPETS.md +32 -0
- data/VERSION +1 -0
- data/bin/ricogen +61 -0
- data/init.rb +123 -0
- data/ricogen.gemspec +27 -0
- data/templates/Gemfile +42 -0
- data/templates/_config.rb +49 -0
- data/templates/application.html.haml +28 -0
- data/templates/application.rb +8 -0
- data/templates/compass.config +15 -0
- data/templates/compass.rb +5 -0
- data/templates/database.yml +10 -0
- data/templates/environment.rb +13 -0
- data/templates/gitignore +6 -0
- data/templates/javascripts/application.js +7 -0
- data/templates/javascripts/rails.js +1 -0
- data/templates/magent.yml +13 -0
- data/templates/mongo.rb +18 -0
- data/templates/sass/_setup.sass +12 -0
- data/templates/sass/application.sass +15 -0
- data/templates/sass/lib/_extend.sass +87 -0
- data/templates/sass/lib/_mixins.sass +78 -0
- data/templates/sass/lib/_reset.sass +150 -0
- data/templates/sass/lib/_variables.sass +26 -0
- data/templates/sass/styles/_common.sass +1 -0
- data/templates/sass/styles/_extend.sass +1 -0
- data/templates/sass/styles/_mixins.sass +1 -0
- data/templates/sass/styles/_template.sass +1 -0
- data/templates/sass/styles/_variables.sass +1 -0
- data/test/hamgen_test.rb +33 -0
- metadata +154 -0
data/ricogen.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
HAML_GEMSPEC = Gem::Specification.new do |s|
|
5
|
+
s.name = 'ricogen'
|
6
|
+
s.rubyforge_project = 'ricogen'
|
7
|
+
s.summary = "My rails 3 app generator based on hamgen"
|
8
|
+
s.version = File.read('VERSION').strip
|
9
|
+
s.authors = ['Hampton Catlin', "David Cuadrado"]
|
10
|
+
s.email = 'krawek@gmail.com'
|
11
|
+
s.description = <<-END
|
12
|
+
A Rails 3.0 generator (like for the whole project) that pre-generates
|
13
|
+
a bunch of shit I like. Most of it is stolen directly from Hampton's Rails Template
|
14
|
+
at http://github.com/hcatlin/hamgen but with changes just for ole' me
|
15
|
+
END
|
16
|
+
|
17
|
+
s.add_runtime_dependency('colored', ['~> 1.2'])
|
18
|
+
s.add_runtime_dependency('rails', ['~> 3.0.0'])
|
19
|
+
s.add_runtime_dependency('haml', ['~> 3.0.18'])
|
20
|
+
|
21
|
+
s.add_development_dependency('rake', ['~> 0.8.7'])
|
22
|
+
|
23
|
+
s.executables = ['ricogen']
|
24
|
+
s.files = Dir['**/**'].to_a.select { |f| f[0..2] != "pkg"}
|
25
|
+
s.homepage = 'http://www.hamptoncatlin.com/'
|
26
|
+
end
|
27
|
+
|
data/templates/Gemfile
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
source "http://gemcutter.org"
|
2
|
+
|
3
|
+
gem "rails", "3.0.1"
|
4
|
+
|
5
|
+
# ui
|
6
|
+
gem "haml"
|
7
|
+
gem 'compass', '0.10.6.pre.1'
|
8
|
+
|
9
|
+
# utils
|
10
|
+
gem 'magic', '~> 0.2.6'
|
11
|
+
gem 'ruby-stemmer', '~> 0.8.2'
|
12
|
+
gem 'magent', '~> 0.5.2'
|
13
|
+
gem 'uuidtools'
|
14
|
+
gem 'sanitize', '~> 1.2.1'
|
15
|
+
|
16
|
+
# mongodb
|
17
|
+
gem 'bson', '1.1.1'
|
18
|
+
gem 'bson_ext', '1.1.1'
|
19
|
+
gem 'plucky', '0.3.6'
|
20
|
+
|
21
|
+
gem 'mongo', '1.1.1'
|
22
|
+
gem 'jnunemaker-validatable', '1.8.4'
|
23
|
+
gem 'mongo_mapper', '0.8.6'
|
24
|
+
gem 'mongomapper_ext', '0.5.1'
|
25
|
+
|
26
|
+
# authentication
|
27
|
+
gem 'omniauth', '0.1.4'
|
28
|
+
gem 'multiauth', '0.2.7'
|
29
|
+
|
30
|
+
group :scripts do
|
31
|
+
gem 'eventmachine', '~> 0.12.10'
|
32
|
+
gem 'em-websocket', '~> 0.1.4'
|
33
|
+
gem 'cronedit'
|
34
|
+
end
|
35
|
+
|
36
|
+
group :development do
|
37
|
+
gem 'rspec', '2.0.0'
|
38
|
+
gem 'rspec-rails', '2.0.0'
|
39
|
+
gem 'mongrel', '1.2.0.pre2'
|
40
|
+
gem 'nifty-generators', '~> 0.4.2'
|
41
|
+
gem 'capistrano'
|
42
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
config_file = Rails.root+"config/app.yml"
|
4
|
+
options = YAML.load_file(config_file)
|
5
|
+
if !options[Rails.env]
|
6
|
+
raise "'#{Rails.env}' was not found in #{config_file}"
|
7
|
+
end
|
8
|
+
AppConfig = OpenStruct.new(options[Rails.env])
|
9
|
+
|
10
|
+
|
11
|
+
SANITIZE_CONFIG = {
|
12
|
+
:protocols => {
|
13
|
+
"a"=>{"href"=>["ftp", "http", "https", "mailto", :relative]},
|
14
|
+
"img"=>{"src"=>["http", "https", :relative]},
|
15
|
+
"blockquote"=>{"cite"=>["http", "https", :relative]},
|
16
|
+
"q"=>{"cite"=>["http", "https", :relative]}
|
17
|
+
},
|
18
|
+
:elements => ["a", "b", "blockquote", "br", "caption", "cite", "code", "col",
|
19
|
+
"colgroup", "dd", "dl", "dt", "em", "h1", "h2", "h3", "h4", "h5",
|
20
|
+
"h6", "i", "img", "li", "ol", "p", "pre", "q", "small", "strike",
|
21
|
+
"strong", "sub", "sup", "table", "tbody", "td", "tfoot", "th",
|
22
|
+
"thead", "tr", "u", "ul", "font", "s", "hr", "div", "span"],
|
23
|
+
:attributes => {
|
24
|
+
"div" => ["style"],
|
25
|
+
"pre" => ["style"],
|
26
|
+
"code" => ["style"],
|
27
|
+
"colgroup"=>["span", "width"],
|
28
|
+
"col"=>["span", "width"],
|
29
|
+
"ul"=>["type"],
|
30
|
+
"a"=>["href", "title"],
|
31
|
+
"img"=>["align", "alt", "height", "src", "title", "width"],
|
32
|
+
"blockquote"=>["cite"],
|
33
|
+
"td"=>["abbr", "axis", "colspan", "rowspan", "width"],
|
34
|
+
"table"=>["summary", "width"],
|
35
|
+
"q"=>["cite"],
|
36
|
+
"ol"=>["start", "type"],
|
37
|
+
"th"=>["abbr", "axis", "colspan", "rowspan", "scope", "width"]
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
Rails.application.config.session_store :cookie_store, :key => AppConfig.session_key, :domain => :all
|
43
|
+
Rails.application.config.secret_token = AppConfig.session_secret
|
44
|
+
|
45
|
+
ActionMailer::Base.default_url_options[:host] = AppConfig.domain
|
46
|
+
|
47
|
+
if File.exist?(Rails.root + "VERSION")
|
48
|
+
AppConfig.version = File.read(Rails.root + "VERSION")
|
49
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
!!!
|
2
|
+
%html{:lang => 'en'}
|
3
|
+
%head
|
4
|
+
%title #{@title}
|
5
|
+
%meta{:charset => 'utf-8'}
|
6
|
+
%meta{'http-equiv' => 'X-UA-Compatible', :content => 'IE=edge,chrome=1'}
|
7
|
+
%meta{:name => 'viewport', :content => 'width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0'}
|
8
|
+
= csrf_meta_tag
|
9
|
+
<!--[if ! lte IE 7]><!-->
|
10
|
+
%link{:rel => 'stylesheet', :href => '/stylesheets/application.css'}
|
11
|
+
<!--<![endif]-->
|
12
|
+
/[if lte IE 7]
|
13
|
+
%link{:rel => 'stylesheet', :href => 'http://universal-ie6-css.googlecode.com/files/ie6.0.3.css'}
|
14
|
+
/[if IE]
|
15
|
+
%script{:src => 'http://html5shiv.googlecode.com/svn/trunk/html5.js'}
|
16
|
+
|
17
|
+
%body{:class => page_class}
|
18
|
+
= yield
|
19
|
+
|
20
|
+
<!--[if ! lte IE 7]><!-->
|
21
|
+
%script{:src => 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'}
|
22
|
+
%script{:src => '/javascripts/application.js'}
|
23
|
+
<!--<![endif]-->
|
24
|
+
/[if lte IE 8]
|
25
|
+
//%script{:src => 'http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js'}
|
26
|
+
|
27
|
+
/ Google Analytics | Don't forget to include your tracking number!!!!
|
28
|
+
%script var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-X']); _gaq.push(['_trackPageview']); (function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);})();
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Require any additional compass plugins here.
|
2
|
+
|
3
|
+
project_type = :rails
|
4
|
+
project_path = RAILS_ROOT if defined?(RAILS_ROOT)
|
5
|
+
# Set this to the root of your project when deployed:
|
6
|
+
http_path = "/"
|
7
|
+
css_dir = "public/stylesheets/compiled"
|
8
|
+
sass_dir = "app/stylesheets"
|
9
|
+
images_dir = "public/images"
|
10
|
+
javascripts_dir = "public/javascripts"
|
11
|
+
# To enable relative paths to assets via compass helper functions. Uncomment:
|
12
|
+
# relative_assets = true
|
13
|
+
http_images_path = "/images"
|
14
|
+
http_stylesheets_path = "/stylesheets"
|
15
|
+
http_javascripts_path = "/javascripts"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# put rails errors inline on the tags themselves
|
2
|
+
ActionView::Base.field_error_proc = (
|
3
|
+
Proc.new do |html_tag, instance|
|
4
|
+
class_name = "error"
|
5
|
+
d = HTML::Document.new(html_tag)
|
6
|
+
tag = d.root.children.first
|
7
|
+
if tag.attributes.has_key?('class')
|
8
|
+
tag.attributes["class"] += " #{class_name}"
|
9
|
+
else
|
10
|
+
tag.attributes["class"] = class_name
|
11
|
+
end
|
12
|
+
tag.to_s.html_safe
|
13
|
+
end)
|
data/templates/gitignore
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
// jQuery Browser Plugin | Version 2.3 | http://jquery.thewikies.com/browser
|
2
|
+
(function($){$.browserTest=function(a,z){var u='unknown',x='X',m=function(r,h){for(var i=0;i<h.length;i=i+1){r=r.replace(h[i][0],h[i][1]);}return r;},c=function(i,a,b,c){var r={name:m((a.exec(i)||[u,u])[1],b)};r[r.name]=true;r.version=(c.exec(i)||[x,x,x,x])[3];if(r.name.match(/safari/)&&r.version>400){r.version='2.0';}if(r.name==='presto'){r.version=($.browser.version>9.27)?'futhark':'linear_b';}r.versionNumber=parseFloat(r.version,10)||0;r.versionX=(r.version!==x)?(r.version+'').substr(0,1):x;r.className=r.name+r.versionX;return r;};a=(a.match(/Opera|Navigator|Minefield|KHTML|Chrome/)?m(a,[[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/,''],['Chrome Safari','Chrome'],['KHTML','Konqueror'],['Minefield','Firefox'],['Navigator','Netscape']]):a).toLowerCase();$.browser=$.extend((!z)?$.browser:{},c(a,/(camino|chrome|firefox|netscape|konqueror|lynx|msie|opera|safari)/,[],/(camino|chrome|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/));$.layout=c(a,/(gecko|konqueror|msie|opera|webkit)/,[['konqueror','khtml'],['msie','trident'],['opera','presto']],/(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/);$.os={name:(/(win|mac|linux|sunos|solaris|iphone)/.exec(navigator.platform.toLowerCase())||[u])[0].replace('sunos','solaris')};if(!z){$('html').addClass([$.os.name,$.browser.name,$.browser.className,$.layout.name,$.layout.className].join(' '));}};$.browserTest(navigator.userAgent);})(jQuery);
|
3
|
+
|
4
|
+
$(document).ready(function(){
|
5
|
+
|
6
|
+
|
7
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
jQuery(function($){var csrf_token=$('meta[name=csrf-token]').attr('content'),csrf_param=$('meta[name=csrf-param]').attr('content');$.fn.extend({triggerAndReturn:function(name,data){var event=new $.Event(name);this.trigger(event,data);return event.result!==false},callRemote:function(){var el=this,data=el.is('form')?el.serializeArray():[],method=el.attr('method')||el.attr('data-method')||'GET',url=el.attr('action')||el.attr('href');if(url===undefined){throw"No URL specified for remote call (action or href must be present).";}else{if(el.triggerAndReturn('ajax:before')){$.ajax({url:url,data:data,dataType:'script',type:method.toUpperCase(),beforeSend:function(xhr){el.trigger('ajax:loading',xhr)},success:function(data,status,xhr){el.trigger('ajax:success',[data,status,xhr])},complete:function(xhr){el.trigger('ajax:complete',xhr)},error:function(xhr,status,error){el.trigger('ajax:failure',[xhr,status,error])}})}el.trigger('ajax:after')}}});$('a[data-confirm],input[data-confirm]').live('click',function(){var el=$(this);if(el.triggerAndReturn('confirm')){if(!confirm(el.attr('data-confirm'))){return false}}});$('form[data-remote]').live('submit',function(e){$(this).callRemote();e.preventDefault()});$('a[data-remote],input[data-remote]').live('click',function(e){$(this).callRemote();e.preventDefault()});$('a[data-method]:not([data-remote])').live('click',function(e){var link=$(this),href=link.attr('href'),method=link.attr('data-method'),form=$('<form method="post" action="'+href+'">'),metadata_input='<input name="_method" value="'+method+'" type="hidden" />';if(csrf_param!=null&&csrf_token!=null){metadata_input+='<input name="'+csrf_param+'" value="'+csrf_token+'" type="hidden" />'}form.hide().append(metadata_input).appendTo('body');e.preventDefault();form.submit()});var disable_with_input_selector='input[data-disable-with]';var disable_with_form_selector='form[data-remote]:has('+disable_with_input_selector+')';$(disable_with_form_selector).live('ajax:before',function(){$(this).find(disable_with_input_selector).each(function(){var input=$(this);input.data('enable-with',input.val()).attr('value',input.attr('data-disable-with')).attr('disabled','disabled')})});$(disable_with_form_selector).live('ajax:after',function(){$(this).find(disable_with_input_selector).each(function(){var input=$(this);input.removeAttr('disabled').val(input.data('enable-with'))})})});
|
data/templates/mongo.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
MongoMapper.setup(YAML.load_file(Rails.root.join('config', 'database.yml')),
|
2
|
+
Rails.env, { :logger => Rails.logger, :passenger => false })
|
3
|
+
|
4
|
+
Magent.setup(YAML.load_file(Rails.root.join('config', 'magent.yml')),
|
5
|
+
Rails.env, {})
|
6
|
+
|
7
|
+
|
8
|
+
MongoMapperExt.init
|
9
|
+
|
10
|
+
Dir.glob("#{RAILS_ROOT}/app/models/**/*.rb") do |model_path|
|
11
|
+
File.basename(model_path, ".rb").classify.constantize
|
12
|
+
end
|
13
|
+
|
14
|
+
# HACK: do not create indexes on every request
|
15
|
+
module MongoMapper::Plugins::Indexes::ClassMethods
|
16
|
+
def ensure_index(*args)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// setup.sass | BOOTSTRAP YOUR PROJECT
|
2
|
+
|
3
|
+
// Default Body Styles
|
4
|
+
$background: white
|
5
|
+
$font-family: $helvetica
|
6
|
+
$font-size: $medium
|
7
|
+
$colour: darken(white, 93%)
|
8
|
+
|
9
|
+
// Default link colours/styles
|
10
|
+
$link_colour: blue
|
11
|
+
$hover_colour: purple
|
12
|
+
$active_colour: red
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// DEFAULT LIBRARIES
|
2
|
+
@import lib/mixins
|
3
|
+
@import lib/variables
|
4
|
+
@import styles/variables
|
5
|
+
@import setup
|
6
|
+
@import lib/reset
|
7
|
+
@import lib/extend
|
8
|
+
|
9
|
+
// DEFAULT BASE STYLES
|
10
|
+
@import styles/extend
|
11
|
+
@import styles/mixins
|
12
|
+
@import styles/common
|
13
|
+
@import styles/template
|
14
|
+
|
15
|
+
|
@@ -0,0 +1,87 @@
|
|
1
|
+
// extend.sass | LIBRARY @EXTEND CLASSES
|
2
|
+
|
3
|
+
// Clearing Floats
|
4
|
+
----------------------------------------------
|
5
|
+
.clear => For non-floating element immediately below a floating element.
|
6
|
+
|
7
|
+
.clearfix => For floating children inside a parent.
|
8
|
+
Class goes on parent holding floating children.
|
9
|
+
|
10
|
+
// Use all of these classes with the @extend option
|
11
|
+
.zoom
|
12
|
+
:zoom 1
|
13
|
+
|
14
|
+
.left
|
15
|
+
:float left
|
16
|
+
|
17
|
+
.right
|
18
|
+
:float right
|
19
|
+
|
20
|
+
.block
|
21
|
+
:display block
|
22
|
+
|
23
|
+
.absolute
|
24
|
+
:position absolute
|
25
|
+
|
26
|
+
.relative
|
27
|
+
:position relative
|
28
|
+
|
29
|
+
.center
|
30
|
+
:text-align center
|
31
|
+
|
32
|
+
.hidden
|
33
|
+
:overflow hidden
|
34
|
+
|
35
|
+
.bold
|
36
|
+
:font-weight bold
|
37
|
+
|
38
|
+
.clear
|
39
|
+
:clear both
|
40
|
+
|
41
|
+
.clearfix:after
|
42
|
+
@extend .clear
|
43
|
+
@extend .block
|
44
|
+
:content ""
|
45
|
+
|
46
|
+
// Replacing text with a background image
|
47
|
+
.hide-text, .h
|
48
|
+
@extend .block
|
49
|
+
@extend .hidden
|
50
|
+
:font-size 0
|
51
|
+
:text-indent -9999em
|
52
|
+
:white-space nowrap
|
53
|
+
:.text-transform capitalize
|
54
|
+
|
55
|
+
// Reset some basic styling
|
56
|
+
.reset, .r
|
57
|
+
:border 0
|
58
|
+
:margin 0
|
59
|
+
:padding 0
|
60
|
+
|
61
|
+
// Consolidate fonts. Works with font $variables in lib/variables.
|
62
|
+
.font_x-small
|
63
|
+
:font-size $x-small
|
64
|
+
|
65
|
+
.font_small
|
66
|
+
:font-size $small
|
67
|
+
|
68
|
+
.font_medium
|
69
|
+
:font-size $medium
|
70
|
+
|
71
|
+
.font_x-medium
|
72
|
+
:font-size $x-medium
|
73
|
+
|
74
|
+
.font_large
|
75
|
+
:font-size $large
|
76
|
+
|
77
|
+
.font_x-large
|
78
|
+
:font-size $x-large
|
79
|
+
|
80
|
+
.font_xx-large
|
81
|
+
:font-size $xx-large
|
82
|
+
|
83
|
+
.font_huge
|
84
|
+
:font-size $huge
|
85
|
+
|
86
|
+
.font_x-huge
|
87
|
+
:font-size $x-huge
|
@@ -0,0 +1,78 @@
|
|
1
|
+
// mixins.sass | LIBRARY MIX-INS
|
2
|
+
|
3
|
+
// Quickly outline any tag for debug purposes
|
4
|
+
=o
|
5
|
+
:background rgba(255, 0, 0, 0.15) !important
|
6
|
+
:outline 1px solid red !important
|
7
|
+
|
8
|
+
// Cross browser box model resizing
|
9
|
+
=box-sizing( $box-sizing)
|
10
|
+
:-moz-box-sizing $box-sizing
|
11
|
+
:-webkit-box-sizing $box-sizing
|
12
|
+
:box-sizing $box-sizing
|
13
|
+
|
14
|
+
// Cross browser opacity
|
15
|
+
=opacity( $opacity)
|
16
|
+
:-ms-filter unquote("progid:DXImageTransform.Microsoft.Alpha(Opacity=") + $opacity + unquote(")")
|
17
|
+
:filter unquote("alpha(opacity=") + $opacity + unquote(")")
|
18
|
+
:opacity $opacity * 0.01
|
19
|
+
|
20
|
+
// Cross browser transition effect
|
21
|
+
=transition( $transition)
|
22
|
+
:-moz-transition $transition
|
23
|
+
:-o-transition $transition
|
24
|
+
:-webkit-transition $transition
|
25
|
+
:transition $transition
|
26
|
+
|
27
|
+
// Cross browser transform effect
|
28
|
+
=transform( $transform)
|
29
|
+
:-moz-transform $transform
|
30
|
+
:-o-transform $transform
|
31
|
+
:-webkit-transform $transform
|
32
|
+
:transform $transform
|
33
|
+
|
34
|
+
// Cross browser multi-column layout
|
35
|
+
// # of columns
|
36
|
+
=column-count( $count)
|
37
|
+
:-moz-column-count $count
|
38
|
+
:-webkit-column-count $count
|
39
|
+
:column-count $count
|
40
|
+
// Space between columns
|
41
|
+
=column-gap( $gap)
|
42
|
+
:-moz-column-gap $gap
|
43
|
+
:-webkit-column-gap $gap
|
44
|
+
:column-gap $gap
|
45
|
+
// Combine -count and -gap into one easy mixin
|
46
|
+
=columns( $count, $gap)
|
47
|
+
+column-count( $count)
|
48
|
+
+column-gap( $gap)
|
49
|
+
|
50
|
+
// Cross browser box shadow
|
51
|
+
// If you want to have multiple box shadows, you must enclose the values in quotes (" ").
|
52
|
+
=box-shadow( $shadow)
|
53
|
+
$shadow: unquote($shadow)
|
54
|
+
:-moz-box-shadow $shadow
|
55
|
+
:-webkit-box-shadow $shadow
|
56
|
+
:box-shadow $shadow
|
57
|
+
|
58
|
+
// Cross browser rounded corners
|
59
|
+
=border-radius( $radius)
|
60
|
+
:-moz-border-radius $radius
|
61
|
+
:-webkit-border-radius $radius
|
62
|
+
:border-radius $radius
|
63
|
+
=border-radius-top-left( $radius)
|
64
|
+
:-moz-border-radius-topleft $radius
|
65
|
+
:-webkit-border-top-left-radius $radius
|
66
|
+
:border-top-left-radius $radius
|
67
|
+
=border-radius-top-right( $radius)
|
68
|
+
:-moz-border-radius-topright $radius
|
69
|
+
:-webkit-border-top-right-radius $radius
|
70
|
+
:border-top-right-radius $radius
|
71
|
+
=border-radius-bottom-right( $radius)
|
72
|
+
:-moz-border-radius-bottomright $radius
|
73
|
+
:-webkit-border-bottom-right-radius $radius
|
74
|
+
:border-bottom-right-radius $radius
|
75
|
+
=border-radius-bottom-left( $radius)
|
76
|
+
:-moz-border-radius-bottomleft $radius
|
77
|
+
:-webkit-border-bottom-left-radius $radius
|
78
|
+
:border-bottom-left-radius $radius
|