| Class | Builder::CSS |
| In: |
vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb
|
| Parent: | BlankSlate |
Create a Cascading Style Sheet (CSS) using Ruby.
Example usage:
css = Builder::CSS.new
text_color = '#7F7F7F'
preferred_fonts = 'Helvetica, Arial, sans_serif'
css.comment! 'This is our stylesheet'
css.body {
background_color '#FAFAFA'
font_size 'small'
font_family preferred_fonts
color text_color
}
css.id!('navbar') {
width '500px'
}
css.class!('navitem') {
color 'red'
}
css.a :hover {
text_decoration 'underline'
}
css.div(:id => 'menu') {
background 'green'
}
css.div(:class => 'foo') {
background 'red'
}
This will yield the following stylesheet:
/* This is our stylesheet */
body {
background_color: #FAFAFA;
font_size: small;
font_family: Helvetica, Arial, sans_serif;
color: #7F7F7F;
}
#navbar {
width: 500px;
}
.navitem {
color: red;
}
a:hover {
text_decoration: underline;
}
div#menu {
background: green;
}
div.foo {
background: red;
}
Create a CSS builder.
| out: | Object receiving the markup.1 out must respond to <<. |
| indent: | Number of spaces used for indentation (0 implies no indentation and no line breaks). |
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 101
101: def initialize(indent=2)
102: @indent = indent
103: @target = []
104: @parts = []
105: @library = {}
106: end
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 108
108: def +(part)
109: _join_with_op! '+'
110: self
111: end
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 118
118: def >(part)
119: _join_with_op! '>'
120: self
121: end
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 113
113: def >>(part)
114: _join_with_op! ''
115: self
116: end
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 145
145: def class!(arg, &block)
146: _start_container('.'+arg.to_s, nil, block_given?)
147: _css_block(block) if block
148: _unify_block
149: self
150: end
Create a comment string in the output.
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 134
134: def comment!(comment_text)
135: @target << "/* #{comment_text} */\n"
136: end
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 156
156: def group!(*args, &block)
157: args.each do |arg|
158: if arg.is_a?(Symbol)
159: instance_eval(&@library[arg])
160: else
161: instance_eval(&arg)
162: end
163: _text ', ' unless arg == args.last
164: end
165: if block
166: _css_block(block)
167: _unify_block
168: end
169: end
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 138
138: def id!(arg, &block)
139: _start_container('#'+arg.to_s, nil, block_given?)
140: _css_block(block) if block
141: _unify_block
142: self
143: end
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 171
171: def method_missing(sym, *args, &block)
172: sym = "#{sym}:#{args.shift}" if args.first.kind_of?(Symbol)
173: if block
174: _start_container(sym, args.first)
175: _css_block(block)
176: _unify_block
177: elsif @in_block
178: _indent
179: _css_line(sym, *args)
180: _newline
181: return self
182: else
183: _start_container(sym, args.first, false)
184: _unify_block
185: end
186: self
187: end
"Cargo culted" from Jim who also "cargo culted" it. See xmlbase.rb.
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 190
190: def nil?
191: false
192: end
# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 152
152: def store!(sym, &block)
153: @library[sym] = block.to_proc
154: end