css-snippets 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/lib/css-snippets.rb +19 -0
- data/lib/css-snippets/engine.rb +1 -0
- data/lib/css-snippets/renderer.rb +32 -0
- data/lib/css-snippets/renderer/base.rb +30 -0
- data/lib/css-snippets/renderer/justified_items.rb +34 -0
- data/lib/css-snippets/renderer/right_menu_liquid_layout.rb +33 -0
- data/lib/css-snippets/version.rb +3 -0
- data/stylesheets/_css-snippets.scss +5 -0
- data/stylesheets/css-snippets/_justified_items.scss +45 -0
- data/stylesheets/css-snippets/_mixins.scss +0 -0
- data/stylesheets/css-snippets/_right_menu_liquid_layout.scss +42 -0
- data/stylesheets/css-snippets/_variables.scss +6 -0
- metadata +102 -0
data/lib/css-snippets.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'active_support/dependencies/autoload'
|
|
2
|
+
|
|
3
|
+
module CssSnippets
|
|
4
|
+
|
|
5
|
+
autoload :Renderer, 'css-snippets/renderer'
|
|
6
|
+
autoload :Version, 'css-snippets/version'
|
|
7
|
+
|
|
8
|
+
def self.register_framework!
|
|
9
|
+
require 'compass'
|
|
10
|
+
Compass::Frameworks.register "css-snippets", :path => File.expand_path("#{File.dirname(__FILE__)}/../.")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.enable_rails_engine!
|
|
14
|
+
require 'css-snippets/engine'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
CssSnippets.register_framework!
|
|
19
|
+
CssSnippets.enable_rails_engine! if defined?(::Rails)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
class CssSnippets::Engine < ::Rails::Engine; end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
|
2
|
+
|
|
3
|
+
module CssSnippets::Renderer
|
|
4
|
+
|
|
5
|
+
SNIPPETS = %w(
|
|
6
|
+
justified_items
|
|
7
|
+
right_menu_liquid_layout
|
|
8
|
+
).freeze
|
|
9
|
+
|
|
10
|
+
autoload :Base, "css-snippets/renderer/base"
|
|
11
|
+
|
|
12
|
+
SNIPPETS.each do |snippet_name|
|
|
13
|
+
autoload :"#{snippet_name.camelize}", "css-snippets/renderer/#{snippet_name}"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.render_html helper, snippet_name, options, &block
|
|
17
|
+
snippet_instance(snippet_name, helper).to_html options, &block
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def self.snippet_instance name, helper
|
|
23
|
+
snippet_klass(name).new(helper)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.snippet_klass name
|
|
27
|
+
stringified_name = name.to_s
|
|
28
|
+
raise "Unknown snippet #{stringified_name}" if not SNIPPETS.include?(stringified_name)
|
|
29
|
+
"CssSnippets::Renderer::#{stringified_name.camelize}".constantize
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
class CssSnippets::Renderer::Base < Struct.new(:helper)
|
|
2
|
+
|
|
3
|
+
attr_accessor :options
|
|
4
|
+
|
|
5
|
+
def to_html options = {}, &block
|
|
6
|
+
helper.capture { instance_exec(self, &block) }
|
|
7
|
+
render.html_safe
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def render; end
|
|
13
|
+
|
|
14
|
+
def method_missing method, *args, &block
|
|
15
|
+
helper.send method, *args, &block
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def element content_or_element_options = nil, element_options = {}, &block
|
|
19
|
+
if block_given?
|
|
20
|
+
[ helper.capture(&block), ensure_options(content_or_element_options) ]
|
|
21
|
+
else
|
|
22
|
+
[ content_or_element_options, ensure_options(element_options) ]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def ensure_options value
|
|
27
|
+
value.is_a?(Hash) ? value : {}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module CssSnippets::Renderer
|
|
2
|
+
|
|
3
|
+
class JustifiedItems < Base
|
|
4
|
+
|
|
5
|
+
ITEM_DOM_CLASS = 'b-justified-item'
|
|
6
|
+
CONTAINER_DOM_CLASS = 'b-justified-container'
|
|
7
|
+
WRAPPER_DOM_CLASS = 'l-default-justified-items'
|
|
8
|
+
|
|
9
|
+
def item content_or_options = nil, options = {}, &block
|
|
10
|
+
@items ||= []
|
|
11
|
+
@items << render_item(*element(content_or_options, options, &block))
|
|
12
|
+
return_nothing
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def render_item content, dirty_options
|
|
18
|
+
helper.content_tag :li, content, dirty_options.merge(:class => ITEM_DOM_CLASS)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def render
|
|
22
|
+
helper.content_tag :div, render_list, :class => WRAPPER_DOM_CLASS
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def render_list
|
|
26
|
+
helper.content_tag :ul, @items.join("\n").html_safe, :class => CONTAINER_DOM_CLASS
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def return_nothing
|
|
30
|
+
''
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module CssSnippets::Renderer
|
|
2
|
+
|
|
3
|
+
class RightMenuLiquidLayout < Base
|
|
4
|
+
|
|
5
|
+
WRAPPER_DOM_CLASS = 'l-default-right-menu-liquid-layout'
|
|
6
|
+
|
|
7
|
+
def left_column content_or_options = nil, options = {}, &block
|
|
8
|
+
@left_column_content, _ = element(content_or_options, options, &block)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def right_column content_or_options = nil, options = {}, &block
|
|
12
|
+
@right_column_content, _ = element(content_or_options, options, &block)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def render
|
|
18
|
+
<<-HTML
|
|
19
|
+
<div class="#{WRAPPER_DOM_CLASS}">
|
|
20
|
+
<div class="l-right-column">
|
|
21
|
+
<div class="l-left-column-wrap">
|
|
22
|
+
<div class="l-left-column">
|
|
23
|
+
<div class="b-left-column">#{@left_column_content}</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="b-right-column">#{@right_column_content}</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
HTML
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
@mixin justify-items($font-size: $justified-container-item-font-size) {
|
|
2
|
+
.b-justified-container {
|
|
3
|
+
@include justify-items-container;
|
|
4
|
+
|
|
5
|
+
.b-justified-item {
|
|
6
|
+
@include justify-container-item($font-size);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@mixin justify-items-container {
|
|
12
|
+
line-height: 0;
|
|
13
|
+
font-size: 1px; // for Opera
|
|
14
|
+
|
|
15
|
+
text-align: justify;
|
|
16
|
+
|
|
17
|
+
// IE6-7
|
|
18
|
+
text-justify: newspaper;
|
|
19
|
+
zoom: 1;
|
|
20
|
+
text-align-last: justify;
|
|
21
|
+
|
|
22
|
+
&:after {
|
|
23
|
+
width: 100%;
|
|
24
|
+
height: 0px;
|
|
25
|
+
visibility: hidden;
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
content: '';
|
|
28
|
+
@include inline-block;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@mixin justify-container-item($font-size: $justified-container-item-font-size) {
|
|
33
|
+
text-align: left;
|
|
34
|
+
|
|
35
|
+
line-height: normal;
|
|
36
|
+
font-size: $font-size;
|
|
37
|
+
|
|
38
|
+
// Opera
|
|
39
|
+
vertical-align: top;
|
|
40
|
+
@include inline-block;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.l-default-justified-items {
|
|
44
|
+
@include justify-items;
|
|
45
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
@mixin right-menu-liquid-layout {
|
|
2
|
+
.l-right-column {
|
|
3
|
+
clear: both;
|
|
4
|
+
float: left;
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
position: relative;
|
|
7
|
+
width: 100%;
|
|
8
|
+
|
|
9
|
+
.l-left-column-wrap {
|
|
10
|
+
float: left;
|
|
11
|
+
margin-left: -$right-menu-liquid-layout-right-column-width;
|
|
12
|
+
position: relative;
|
|
13
|
+
right: 100%;
|
|
14
|
+
width: 200%;
|
|
15
|
+
background: $right-menu-liquid-layout-left-column-background;
|
|
16
|
+
|
|
17
|
+
.l-left-column {
|
|
18
|
+
float: left;
|
|
19
|
+
left: 50%;
|
|
20
|
+
position: relative;
|
|
21
|
+
width: 50%;
|
|
22
|
+
|
|
23
|
+
.b-left-column {
|
|
24
|
+
margin: 0 0 0 $right-menu-liquid-layout-right-column-width;
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.b-right-column {
|
|
30
|
+
float: right;
|
|
31
|
+
left: $right-menu-liquid-layout-right-column-width;
|
|
32
|
+
position: relative;
|
|
33
|
+
width: $right-menu-liquid-layout-right-column-width - $right-menu-liquid-layout-space-between-columns;
|
|
34
|
+
background: $right-menu-liquid-layout-right-column-background;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.l-default-right-menu-liquid-layout {
|
|
41
|
+
@include right-menu-liquid-layout;
|
|
42
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
$justified-container-item-font-size: 12px !default;
|
|
2
|
+
|
|
3
|
+
$right-menu-liquid-layout-right-column-width: 200px !default;
|
|
4
|
+
$right-menu-liquid-layout-right-column-background: none !default;
|
|
5
|
+
$right-menu-liquid-layout-left-column-background: none !default;
|
|
6
|
+
$right-menu-liquid-layout-space-between-columns: 50px !default;
|
metadata
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: css-snippets
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease: false
|
|
5
|
+
segments:
|
|
6
|
+
- 0
|
|
7
|
+
- 0
|
|
8
|
+
- 1
|
|
9
|
+
version: 0.0.1
|
|
10
|
+
platform: ruby
|
|
11
|
+
authors:
|
|
12
|
+
- Ivan Garmatenko
|
|
13
|
+
autorequire:
|
|
14
|
+
bindir: bin
|
|
15
|
+
cert_chain: []
|
|
16
|
+
|
|
17
|
+
date: 2012-02-24 00:00:00 +04:00
|
|
18
|
+
default_executable:
|
|
19
|
+
dependencies:
|
|
20
|
+
- !ruby/object:Gem::Dependency
|
|
21
|
+
name: compass
|
|
22
|
+
prerelease: false
|
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
24
|
+
none: false
|
|
25
|
+
requirements:
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
segments:
|
|
29
|
+
- 0
|
|
30
|
+
version: "0"
|
|
31
|
+
type: :runtime
|
|
32
|
+
version_requirements: *id001
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: activesupport
|
|
35
|
+
prerelease: false
|
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
37
|
+
none: false
|
|
38
|
+
requirements:
|
|
39
|
+
- - ~>
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
segments:
|
|
42
|
+
- 3
|
|
43
|
+
- 1
|
|
44
|
+
version: "3.1"
|
|
45
|
+
type: :runtime
|
|
46
|
+
version_requirements: *id002
|
|
47
|
+
description: Gem contains stylesheets and rails helpers which provides simple way to add useful css snippets to your site
|
|
48
|
+
email:
|
|
49
|
+
- cheef.che@gmail.com
|
|
50
|
+
executables: []
|
|
51
|
+
|
|
52
|
+
extensions: []
|
|
53
|
+
|
|
54
|
+
extra_rdoc_files: []
|
|
55
|
+
|
|
56
|
+
files:
|
|
57
|
+
- lib/css-snippets.rb
|
|
58
|
+
- lib/css-snippets/version.rb
|
|
59
|
+
- lib/css-snippets/renderer.rb
|
|
60
|
+
- lib/css-snippets/renderer/justified_items.rb
|
|
61
|
+
- lib/css-snippets/renderer/base.rb
|
|
62
|
+
- lib/css-snippets/renderer/right_menu_liquid_layout.rb
|
|
63
|
+
- lib/css-snippets/engine.rb
|
|
64
|
+
- stylesheets/css-snippets/_justified_items.scss
|
|
65
|
+
- stylesheets/css-snippets/_mixins.scss
|
|
66
|
+
- stylesheets/css-snippets/_variables.scss
|
|
67
|
+
- stylesheets/css-snippets/_right_menu_liquid_layout.scss
|
|
68
|
+
- stylesheets/_css-snippets.scss
|
|
69
|
+
has_rdoc: true
|
|
70
|
+
homepage: http://css-snippets.heroku.com
|
|
71
|
+
licenses: []
|
|
72
|
+
|
|
73
|
+
post_install_message:
|
|
74
|
+
rdoc_options: []
|
|
75
|
+
|
|
76
|
+
require_paths:
|
|
77
|
+
- lib
|
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
|
+
none: false
|
|
80
|
+
requirements:
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
segments:
|
|
84
|
+
- 0
|
|
85
|
+
version: "0"
|
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
|
+
none: false
|
|
88
|
+
requirements:
|
|
89
|
+
- - ">="
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
segments:
|
|
92
|
+
- 0
|
|
93
|
+
version: "0"
|
|
94
|
+
requirements: []
|
|
95
|
+
|
|
96
|
+
rubyforge_project: css-snippets
|
|
97
|
+
rubygems_version: 1.3.7
|
|
98
|
+
signing_key:
|
|
99
|
+
specification_version: 3
|
|
100
|
+
summary: Provides a useful css snippets and layouts
|
|
101
|
+
test_files: []
|
|
102
|
+
|