css_builder 0.1.3 → 0.1.4
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/README.md +91 -0
- data/VERSION +1 -1
- data/css_builder.gemspec +1 -1
- data/lib/css_builder.rb +55 -0
- data/spec/css_builder_spec.rb +59 -0
- metadata +10 -10
data/README.md
CHANGED
@@ -83,6 +83,97 @@ A ruby interface for creating CSS files; LESS and SASS planned;
|
|
83
83
|
border : 1px;
|
84
84
|
}
|
85
85
|
|
86
|
+
## LESS support
|
87
|
+
|
88
|
+
The LESS templating language has limited support right now. You can use it in the following way.
|
89
|
+
|
90
|
+
###
|
91
|
+
|
92
|
+
css = CssBuilder.new
|
93
|
+
|
94
|
+
css.div {
|
95
|
+
font_size "1.2em"
|
96
|
+
class!("roger") {
|
97
|
+
color "green"
|
98
|
+
}
|
99
|
+
a {
|
100
|
+
text_decoration "none"
|
101
|
+
self.&(:hover => nil) {
|
102
|
+
color "#333"
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
css.value! # outputs =>
|
108
|
+
|
109
|
+
div {
|
110
|
+
font-size : 1.2em;
|
111
|
+
.roger {
|
112
|
+
color : "green";
|
113
|
+
}
|
114
|
+
a {
|
115
|
+
text-decoration : "none";
|
116
|
+
&:hover() {
|
117
|
+
color : "#333";
|
118
|
+
}
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
Variables
|
123
|
+
|
124
|
+
###
|
125
|
+
|
126
|
+
css = CssBuilder.new
|
127
|
+
|
128
|
+
@css.variable!("color", "#4D926F")
|
129
|
+
|
130
|
+
@css.id!("header") {
|
131
|
+
color variable!("color")
|
132
|
+
}
|
133
|
+
|
134
|
+
css.value! # outputs =>
|
135
|
+
|
136
|
+
@color: #4D926F;
|
137
|
+
|
138
|
+
#header {
|
139
|
+
color: @color;
|
140
|
+
}
|
141
|
+
|
142
|
+
Mixins
|
143
|
+
|
144
|
+
###
|
145
|
+
|
146
|
+
css = CssBuilder.new
|
147
|
+
|
148
|
+
@css.mixin!("rounded-corners", ["radius", "5px"]) {
|
149
|
+
border_radius variable!("radius")
|
150
|
+
_webkit_border_radius variable!("radius")
|
151
|
+
_moz_border_radius variable!("radius")
|
152
|
+
}
|
153
|
+
|
154
|
+
@css.id!("header") {
|
155
|
+
mixin! "rounded-corners"
|
156
|
+
}
|
157
|
+
|
158
|
+
@css.id!("footer") {
|
159
|
+
mixin!("rounded-corners", "10px")
|
160
|
+
}
|
161
|
+
|
162
|
+
css.value! # outputs =>
|
163
|
+
|
164
|
+
.rounded-corners (@radius: 5px) {
|
165
|
+
border-radius: @radius;
|
166
|
+
-webkit-border-radius: @radius;
|
167
|
+
-moz-border-radius: @radius;
|
168
|
+
}
|
169
|
+
|
170
|
+
#header {
|
171
|
+
.rounded-corners;
|
172
|
+
}
|
173
|
+
#footer {
|
174
|
+
.rounded-corners(10px);
|
175
|
+
}
|
176
|
+
|
86
177
|
## Contributing to css_builder
|
87
178
|
|
88
179
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/css_builder.gemspec
CHANGED
data/lib/css_builder.rb
CHANGED
@@ -25,6 +25,38 @@ class CssBuilder
|
|
25
25
|
@css
|
26
26
|
end
|
27
27
|
|
28
|
+
## enventaully move all LESS specific stuff to another file
|
29
|
+
|
30
|
+
def variable!(name, value=nil)
|
31
|
+
if value
|
32
|
+
css! "@#{_dasherize name} : #{value};"
|
33
|
+
_newline
|
34
|
+
else
|
35
|
+
return "@#{_dasherize name}"
|
36
|
+
end
|
37
|
+
@css
|
38
|
+
end
|
39
|
+
|
40
|
+
def mixin!(name, *args, &block)
|
41
|
+
css! _class(name)
|
42
|
+
_args_param_values(args)
|
43
|
+
if block
|
44
|
+
_open
|
45
|
+
_newline
|
46
|
+
|
47
|
+
self.instance_eval(&block)
|
48
|
+
|
49
|
+
_close
|
50
|
+
_newline
|
51
|
+
else
|
52
|
+
css! ";"
|
53
|
+
end
|
54
|
+
_newline
|
55
|
+
@css
|
56
|
+
end
|
57
|
+
|
58
|
+
## the magic
|
59
|
+
|
28
60
|
def method_missing(m, *args, &block)
|
29
61
|
|
30
62
|
if block
|
@@ -109,4 +141,27 @@ private
|
|
109
141
|
end
|
110
142
|
end
|
111
143
|
|
144
|
+
## enventaully move all LESS specific stuff to another file
|
145
|
+
|
146
|
+
def _args_param_values(args)
|
147
|
+
return if args.empty?
|
148
|
+
css! " ("
|
149
|
+
|
150
|
+
len = args.length
|
151
|
+
args.each_with_index do |v, idx|
|
152
|
+
if v.is_a?(Array)
|
153
|
+
case v.length
|
154
|
+
when 0
|
155
|
+
when 1
|
156
|
+
css! "@#{_dasherize v[0]}"
|
157
|
+
else
|
158
|
+
css! "@#{_dasherize v[0]}: #{v[1]}"
|
159
|
+
end
|
160
|
+
else
|
161
|
+
css! v
|
162
|
+
end
|
163
|
+
css! ", " if idx < len - 1
|
164
|
+
end
|
165
|
+
css! ")"
|
166
|
+
end
|
112
167
|
end
|
data/spec/css_builder_spec.rb
CHANGED
@@ -169,4 +169,63 @@ describe "CssBuilder" do
|
|
169
169
|
|
170
170
|
end
|
171
171
|
|
172
|
+
describe "LESS" do
|
173
|
+
|
174
|
+
it "can create and set variables" do
|
175
|
+
@css.variable!("color", "#4D926F")
|
176
|
+
|
177
|
+
@css.id!("header") {
|
178
|
+
color variable!("color")
|
179
|
+
}
|
180
|
+
@css.value!.should match /^@color\s+:\s+#4D926F;\s+#header\s+\{\s+color\s+:\s+@color;\s+\}/
|
181
|
+
end
|
182
|
+
|
183
|
+
it "can create and use mixins" do
|
184
|
+
@css.mixin!("rounded-corners", ["radius", "5px"]) {
|
185
|
+
border_radius variable!("radius")
|
186
|
+
_webkit_border_radius variable!("radius")
|
187
|
+
_moz_border_radius variable!("radius")
|
188
|
+
}
|
189
|
+
|
190
|
+
@css.id!("header") {
|
191
|
+
mixin! "rounded-corners"
|
192
|
+
}
|
193
|
+
|
194
|
+
@css.id!("footer") {
|
195
|
+
mixin!("rounded-corners", "10px")
|
196
|
+
}
|
197
|
+
|
198
|
+
@css.value!.should match /^\.rounded-corners\s+\(@radius:\s+5px\)\s+{\s+border-radius\s+:\s+@radius;\s+-webkit-border-radius\s+:\s+@radius;\s+-moz-border-radius\s+:\s+@radius;\s+}\s+#header\s+{\s+\.rounded-corners;\s+}\s+#footer\s+{\s+\.rounded-corners\s+\(10px\);\s+}/
|
199
|
+
end
|
200
|
+
|
201
|
+
it "can create and use mixins many params" do
|
202
|
+
@css.mixin!("rounded-corners", ["radius", "5px"], ["color", "red"]) {
|
203
|
+
border_radius variable!("radius")
|
204
|
+
}
|
205
|
+
|
206
|
+
@css.id!("footer") {
|
207
|
+
mixin!("rounded-corners", "10px", "green")
|
208
|
+
}
|
209
|
+
|
210
|
+
@css.value!.should match /^\.rounded-corners\s+\(@radius:\s+5px,\s+@color:\s+red\)\s+{\s+border-radius\s+:\s+@radius;\s+}\s+#footer\s+{\s+\.rounded-corners\s+\(10px,\s+green\);\s+}/
|
211
|
+
end
|
212
|
+
|
213
|
+
it "can create and use mixins no defualt" do
|
214
|
+
@css.mixin!("rounded-corners", ["radius"]) {
|
215
|
+
border_radius variable!("radius")
|
216
|
+
}
|
217
|
+
|
218
|
+
@css.value!.should match /^\.rounded-corners\s+\(@radius\)\s+{\s+border-radius\s+:\s+@radius;\s+}/
|
219
|
+
end
|
220
|
+
|
221
|
+
it "can create and use mixins empty" do
|
222
|
+
@css.mixin!("rounded-corners", []) {
|
223
|
+
border_radius variable!("radius")
|
224
|
+
}
|
225
|
+
|
226
|
+
@css.value!.should match /^\.rounded-corners\s+\(\)\s+{\s+border-radius\s+:\s+@radius;\s+}/
|
227
|
+
end
|
228
|
+
|
229
|
+
end
|
230
|
+
|
172
231
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: css_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-28 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153594100 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.8.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153594100
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
requirement: &
|
27
|
+
requirement: &2154252480 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.12'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2154252480
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bundler
|
38
|
-
requirement: &
|
38
|
+
requirement: &2154251160 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2154251160
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: jeweler
|
49
|
-
requirement: &
|
49
|
+
requirement: &2154249760 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 1.8.3
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2154249760
|
58
58
|
description: A ruby interface for creating CSS files; LESS and SASS planned;
|
59
59
|
email: jvaneat@iit.edu
|
60
60
|
executables: []
|
@@ -90,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
segments:
|
92
92
|
- 0
|
93
|
-
hash: -
|
93
|
+
hash: -410341613257085463
|
94
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|