css_canon 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in css_canon.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Michael Johnston
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # css_canon
2
+
3
+ Imposes a "canonical" css/sass/[SMACSS][2] structure on a Rails 3.x project.
4
+
5
+ * Assumes using [Zurb Foundation][1]. Pull requests for Bootstrap or other frameworks welcome.
6
+ * imposes the following directory structures
7
+
8
+ ```
9
+
10
+ ├── app
11
+ │   ├── assets
12
+ │   │   └── stylesheets
13
+ │   │   ├── application.css.scss
14
+ │   │   ├── base.css.scss
15
+ │   │   ├── foundation_and_overrides.scss
16
+ │   │   ├── home.css.scss
17
+ │   │   ├── layout
18
+ │   │   │   └── grid_additions.css.scss
19
+ │   │   ├── module
20
+ │   │   │   └──
21
+ │   │   └── vendor_overrides
22
+ │   │   └──
23
+ └── vendor
24
+ ├── assets
25
+ │   └── stylesheets
26
+ │   ├── non_sass
27
+ │   │   └──
28
+ │   ├── sass
29
+ │   │   └──
30
+ │   └── vendor.css
31
+
32
+ ```
33
+
34
+ ## Example
35
+ For an example rails app using this structure, see [this repo][3]
36
+ ## Installation
37
+
38
+ Add this line to your application's Gemfile:
39
+
40
+ gem 'css_canon'
41
+
42
+ And then execute:
43
+
44
+ $ bundle
45
+
46
+ Or install it yourself as:
47
+
48
+ $ gem install css_canon
49
+
50
+ ## Usage
51
+
52
+ rails g css_canon
53
+
54
+ ## Contributing
55
+
56
+ 1. Fork it
57
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
58
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
59
+ 4. Push to the branch (`git push origin my-new-feature`)
60
+ 5. Create new Pull Request
61
+
62
+ [1]: https://github.com/zurb/foundation "Zurb Foundation"
63
+ [2]: http://smacss.com "Scalable and Modular Architecture for CSS"
64
+ [3]: https://github.com/lastobelus/assets_css_structure "Example Rails app using the css_canon setup"
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/css_canon.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'css_canon/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "css_canon"
8
+ gem.version = CssCanon::VERSION
9
+ gem.authors = ["Michael Johnston"]
10
+ gem.email = ["lastobelus@mac.com"]
11
+ gem.description = %q{Imposes a "canonical" css/sass/SMACSS structure on a Rails 3.x project.}
12
+ gem.summary = %q{Imposes a "canonical" css/sass/SMACSS structure on a Rails 3.x project.}
13
+ gem.homepage = "https://github.com/lastobelus/css_canon"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency "zurb-foundation", "~> 3.2.0"
21
+
22
+ end
@@ -0,0 +1,46 @@
1
+ module CssCanon
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ source_root File.join(File.dirname(__FILE__), 'templates')
5
+ desc 'imposes a canonical css structure'
6
+
7
+ def install_foundation_if_not_installed
8
+ unless File.exists?("app/assets/stylesheets/foundation_and_overrides.scss")
9
+ generate "foundation:install"
10
+ end
11
+ end
12
+
13
+ def copy_app_asset_templates
14
+ say "setting up app/assets/stylesheets..."
15
+ if File.exists? "app/assets/stylesheets/application.css"
16
+ File.rename "app/assets/stylesheets/application.css", "app/assets/stylesheets/TO_MIGRATE.css"
17
+ end
18
+ copy_file "app/assets/stylesheets/application.css.scss"
19
+ copy_file "app/assets/stylesheets/base.css.scss"
20
+ directory "app/assets/stylesheets/layout"
21
+ directory "app/assets/stylesheets/module"
22
+ end
23
+
24
+ def copy_vendor_asset_templates
25
+ say "setting up vendor/assets/stylesheets..."
26
+ copy_file "vendor/assets/stylesheets/vendor.css.scss"
27
+ end
28
+
29
+ def modify_zurb_overrides_file
30
+ say "adding example use of brand variables to foundation_and_overrides..."
31
+ foundation_file = "app/assets/stylesheets/foundation_and_overrides.scss"
32
+ color_example_regex = %r{^ *// *\$mainColor:.*}
33
+ our_color_example = <<-EOCSS
34
+ \n// override foundation variables with variables defined in base.css.scss,
35
+ // so that branding can easily be changed in a single place
36
+ // $mainColor: $brandOne;"
37
+ EOCSS
38
+ if File.readlines(foundation_file).grep(color_example_regex).size > 0
39
+ gsub_file foundation_file, color_example_regex, our_color_example
40
+ else
41
+ inject_into_file foundation_file, our_color_example, after: %r{// Colors Settings}
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,23 @@
1
+ // non-sass files go in vendor/assetts/stylesheets/application
2
+ // and vendor/assetts/stylesheets/vendor.css does a require_tree .
3
+ //= require vendor
4
+ //= require_self
5
+
6
+ // site/brand specific sass variables go here
7
+ @import "base";
8
+ // here foundation variables are set to values defined in base
9
+ @import "foundation_and_overrides";
10
+
11
+ // overrides/customizations of vendor libs go here.
12
+ // If possible they should be independent, so this can be left as a blob
13
+ @import "vendor_overrides/**/*";
14
+
15
+ // styles which build on basic foundation layouts.
16
+ // Should use SMACSS -- if the glob stops working
17
+ // consider that a css code smell
18
+ @import "layout/**/*";
19
+
20
+ // styles which build modules.
21
+ // Should use SMACSS -- if the glob stops working
22
+ // consider that a css code smell
23
+ @import "module/**/*";
@@ -0,0 +1,6 @@
1
+ // Place sass variable here, and then refer to those variables in other sass files.
2
+ // This makes branding easier and in one place.
3
+
4
+ // $brandOne: orange;
5
+ // $brandTwo: green;
6
+ // $brandThree: pink;
@@ -0,0 +1,3 @@
1
+ # Modules
2
+ Include files here that define modules for your app (see http://smacss.com)
3
+ These files are imported after base.css.scss and foundation_overrides.css.scss, so they can use sass variables/mixins defined there
@@ -0,0 +1,2 @@
1
+ Include files here that override styles in vendored css, with a file or directory with a name matching the name of the directory in vendor/assets/stylesheets that contains the 3rd-party css
2
+ These files are imported after base.css.scss and foundation_overrides.css.scss, so they can use sass variables/mixins defined there
@@ -0,0 +1,3 @@
1
+ //= require_tree ./non_sass
2
+
3
+ @import "sass/**/*"
@@ -0,0 +1,3 @@
1
+ module CssCanon
2
+ VERSION = "0.0.1"
3
+ end
data/lib/css_canon.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "css_canon/version"
2
+
3
+
4
+ if defined?(Rails)
5
+ require "css_canon/generators/install_generator"
6
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: css_canon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Michael Johnston
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: zurb-foundation
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.0
30
+ description: Imposes a "canonical" css/sass/SMACSS structure on a Rails 3.x project.
31
+ email:
32
+ - lastobelus@mac.com
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - .gitignore
38
+ - Gemfile
39
+ - LICENSE.txt
40
+ - README.md
41
+ - Rakefile
42
+ - css_canon.gemspec
43
+ - lib/css_canon.rb
44
+ - lib/css_canon/generators/install_generator.rb
45
+ - lib/css_canon/generators/templates/app/assets/stylesheets/application.css.scss
46
+ - lib/css_canon/generators/templates/app/assets/stylesheets/base.css.scss
47
+ - lib/css_canon/generators/templates/app/assets/stylesheets/layout/grid_additions.css.scss
48
+ - lib/css_canon/generators/templates/app/assets/stylesheets/module/README
49
+ - lib/css_canon/generators/templates/app/assets/stylesheets/vendor_overrides/README
50
+ - lib/css_canon/generators/templates/vendor/assets/stylesheets/vendor.css.scss
51
+ - lib/css_canon/version.rb
52
+ homepage: https://github.com/lastobelus/css_canon
53
+ licenses: []
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ segments:
65
+ - 0
66
+ hash: -2663183119578062736
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ segments:
74
+ - 0
75
+ hash: -2663183119578062736
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 1.8.24
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: Imposes a "canonical" css/sass/SMACSS structure on a Rails 3.x project.
82
+ test_files: []