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 ADDED
File without changes
@@ -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
@@ -0,0 +1,2 @@
1
+ require 'css/selector.rb'
2
+ require 'css/writer.rb'
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
+