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 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.3
1
+ 0.1.4
data/css_builder.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "css_builder"
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Derrek Van Eaton"]
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
@@ -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.3
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: &2161210120 !ruby/object:Gem::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: *2161210120
24
+ version_requirements: *2153594100
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &2161209160 !ruby/object:Gem::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: *2161209160
35
+ version_requirements: *2154252480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &2161869580 !ruby/object:Gem::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: *2161869580
46
+ version_requirements: *2154251160
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &2161868200 !ruby/object:Gem::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: *2161868200
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: -2673597597399935291
93
+ hash: -410341613257085463
94
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements: