ehrenmurdick-css_writer 0.0.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 +0 -0
- data/lib/css/selector.rb +58 -0
- data/lib/css/writer.rb +54 -0
- data/lib/css_writer.rb +2 -0
- metadata +57 -0
data/README
ADDED
File without changes
|
data/lib/css/selector.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
module CSS
|
2
|
+
class Selector
|
3
|
+
attr_accessor :property
|
4
|
+
attr_reader :name
|
5
|
+
def initialize name, id_or_class, css, parent = nil
|
6
|
+
parent_name = parent.name + " " if parent
|
7
|
+
@name = "#{parent_name}#{name}#{id_or_class}"
|
8
|
+
@property = {}
|
9
|
+
@css = css
|
10
|
+
end
|
11
|
+
|
12
|
+
def any id_or_class = '', &block
|
13
|
+
if id_or_class.to_s == ''
|
14
|
+
send("*", "", &block)
|
15
|
+
else
|
16
|
+
method_missing("", id_or_class, &block)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def method_missing method_name, id_or_class = '', &block
|
21
|
+
if block_given?
|
22
|
+
if id_or_class =~ /#/
|
23
|
+
s = Selector.new '', id_or_class, @css, nil
|
24
|
+
else
|
25
|
+
s = Selector.new method_name, id_or_class, @css, self
|
26
|
+
end
|
27
|
+
s = @css.selectors[s.name] if @css.selectors[s.name]
|
28
|
+
s.instance_eval &block
|
29
|
+
@css.selectors[s.name] = s
|
30
|
+
else
|
31
|
+
p = method_name.to_s.gsub(/[A-Z]/) do |match|
|
32
|
+
"-#{match.downcase}"
|
33
|
+
end
|
34
|
+
@property[p] = id_or_class
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def []=(key, value)
|
39
|
+
@property[key] = value
|
40
|
+
end
|
41
|
+
|
42
|
+
def render(minified = false)
|
43
|
+
if minified
|
44
|
+
res = "#{name}{"
|
45
|
+
@property.each do |key, value|
|
46
|
+
res << "#{key}:#{value};"
|
47
|
+
end
|
48
|
+
res << "}"
|
49
|
+
else
|
50
|
+
res = "#{name} {\n"
|
51
|
+
@property.each do |key, value|
|
52
|
+
res << " #{key}: #{value};\n"
|
53
|
+
end
|
54
|
+
res << "}\n"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/css/writer.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
module CSS
|
2
|
+
class Writer
|
3
|
+
attr_accessor :selectors
|
4
|
+
# +nodoc+
|
5
|
+
def initialize
|
6
|
+
@output = ""
|
7
|
+
@selectors = {}
|
8
|
+
@headers = []
|
9
|
+
end
|
10
|
+
|
11
|
+
# start a css dsl in a block
|
12
|
+
def css &block
|
13
|
+
instance_eval &block
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
def header str
|
18
|
+
@headers << str
|
19
|
+
end
|
20
|
+
|
21
|
+
def import path
|
22
|
+
header "@import \"#{path}\";"
|
23
|
+
end
|
24
|
+
|
25
|
+
def any id_or_class = '', &block
|
26
|
+
if id_or_class.to_s == ''
|
27
|
+
send("*", "", &block)
|
28
|
+
else
|
29
|
+
method_missing("", id_or_class, &block)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def method_missing method_name, id_or_class = '', &block
|
34
|
+
if id_or_class =~ /#/
|
35
|
+
s = Selector.new '', id_or_class, self
|
36
|
+
else
|
37
|
+
s = Selector.new method_name, id_or_class, self
|
38
|
+
end
|
39
|
+
s = @selectors[s.name] if @selectors[s.name]
|
40
|
+
s.instance_eval &block
|
41
|
+
@selectors[s.name] = s
|
42
|
+
end
|
43
|
+
|
44
|
+
def render(minified = false)
|
45
|
+
res = ""
|
46
|
+
res << @headers.join("\n")
|
47
|
+
res << "\n"
|
48
|
+
@selectors.each_value do |s|
|
49
|
+
res << s.render(minified) unless s.property.size == 0
|
50
|
+
end
|
51
|
+
res
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/css_writer.rb
ADDED
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ehrenmurdick-css_writer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ehren Murdick
|
8
|
+
autorequire: css_writer
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-06-25 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description:
|
17
|
+
email: ehren.murdick@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
files:
|
25
|
+
- lib/css
|
26
|
+
- lib/css/writer.rb
|
27
|
+
- lib/css/selector.rb
|
28
|
+
- lib/css_writer.rb
|
29
|
+
- README
|
30
|
+
has_rdoc: true
|
31
|
+
homepage: http://theedgecase.com
|
32
|
+
post_install_message:
|
33
|
+
rdoc_options: []
|
34
|
+
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: "0"
|
42
|
+
version:
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: "0"
|
48
|
+
version:
|
49
|
+
requirements: []
|
50
|
+
|
51
|
+
rubyforge_project:
|
52
|
+
rubygems_version: 1.2.0
|
53
|
+
signing_key:
|
54
|
+
specification_version: 2
|
55
|
+
summary: CSS::Writer is css in ruby
|
56
|
+
test_files: []
|
57
|
+
|