styles 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +3 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +725 -0
  5. data/Rakefile +9 -0
  6. data/bin/styles +11 -0
  7. data/lib/styles.rb +18 -0
  8. data/lib/styles/application.rb +190 -0
  9. data/lib/styles/colors.rb +289 -0
  10. data/lib/styles/core_ext.rb +12 -0
  11. data/lib/styles/engine.rb +73 -0
  12. data/lib/styles/line.rb +55 -0
  13. data/lib/styles/properties.rb +34 -0
  14. data/lib/styles/properties/background_color.rb +15 -0
  15. data/lib/styles/properties/base.rb +68 -0
  16. data/lib/styles/properties/border.rb +147 -0
  17. data/lib/styles/properties/color.rb +16 -0
  18. data/lib/styles/properties/display.rb +10 -0
  19. data/lib/styles/properties/font_weight.rb +13 -0
  20. data/lib/styles/properties/function.rb +7 -0
  21. data/lib/styles/properties/margin.rb +83 -0
  22. data/lib/styles/properties/match_background_color.rb +28 -0
  23. data/lib/styles/properties/match_color.rb +21 -0
  24. data/lib/styles/properties/match_font_weight.rb +23 -0
  25. data/lib/styles/properties/match_text_decoration.rb +36 -0
  26. data/lib/styles/properties/padding.rb +81 -0
  27. data/lib/styles/properties/text_align.rb +10 -0
  28. data/lib/styles/properties/text_decoration.rb +20 -0
  29. data/lib/styles/properties/width.rb +11 -0
  30. data/lib/styles/rule.rb +67 -0
  31. data/lib/styles/stylesheet.rb +103 -0
  32. data/lib/styles/sub_engines.rb +4 -0
  33. data/lib/styles/sub_engines/base.rb +16 -0
  34. data/lib/styles/sub_engines/color.rb +115 -0
  35. data/lib/styles/sub_engines/layout.rb +158 -0
  36. data/lib/styles/sub_engines/pre_processor.rb +19 -0
  37. data/lib/styles/version.rb +3 -0
  38. data/styles.gemspec +26 -0
  39. data/test/application_test.rb +92 -0
  40. data/test/colors_test.rb +162 -0
  41. data/test/engine_test.rb +59 -0
  42. data/test/integration_test.rb +136 -0
  43. data/test/line_test.rb +24 -0
  44. data/test/properties/background_color_test.rb +36 -0
  45. data/test/properties/base_test.rb +11 -0
  46. data/test/properties/border_test.rb +154 -0
  47. data/test/properties/color_test.rb +28 -0
  48. data/test/properties/display_test.rb +26 -0
  49. data/test/properties/font_weight_test.rb +24 -0
  50. data/test/properties/function_test.rb +28 -0
  51. data/test/properties/margin_test.rb +98 -0
  52. data/test/properties/match_background_color_test.rb +71 -0
  53. data/test/properties/match_color_test.rb +79 -0
  54. data/test/properties/match_font_weight_test.rb +34 -0
  55. data/test/properties/match_text_decoration_test.rb +38 -0
  56. data/test/properties/padding_test.rb +87 -0
  57. data/test/properties/text_align_test.rb +107 -0
  58. data/test/properties/text_decoration_test.rb +25 -0
  59. data/test/properties/width_test.rb +41 -0
  60. data/test/rule_test.rb +39 -0
  61. data/test/stylesheet_test.rb +245 -0
  62. data/test/sub_engines/color_test.rb +144 -0
  63. data/test/sub_engines/layout_test.rb +110 -0
  64. data/test/test_helper.rb +5 -0
  65. metadata +184 -0
@@ -0,0 +1,144 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+ require 'term/ansicolor'
3
+
4
+ class ColorSubEngineTest < MiniTest::Unit::TestCase
5
+ def test_can_combine_line_properties
6
+ test_line = 'this line has a certain word in it'
7
+ color_prop = ::Styles::Properties::Color.new('word', :color, :blue)
8
+ text_decor_prop = ::Styles::Properties::TextDecoration.new('word', :text_decoration, :underline)
9
+ font_weight_prop = ::Styles::Properties::FontWeight.new('word', :font_weight, :bold)
10
+ no_back_color_prop = ::Styles::Properties::BackgroundColor.new('word', :background_color, :none)
11
+
12
+ assert_equal "#{color.blue}#{test_line}#{color.reset}", process([color_prop], test_line)
13
+
14
+ assert_equal "#{color.blue}#{color.underline}#{test_line}#{color.reset}",
15
+ process([color_prop, text_decor_prop], test_line)
16
+
17
+ assert_equal "#{color.blue}#{color.bold}#{color.underline}#{test_line}#{color.reset}",
18
+ process([color_prop, text_decor_prop, font_weight_prop], test_line)
19
+
20
+ assert_equal "#{color.blue}#{test_line}#{color.reset}",
21
+ process([color_prop, no_back_color_prop], test_line)
22
+ end
23
+
24
+ def test_can_combine_line_and_match_properties
25
+ test_line = 'this line has a certain word in it'
26
+ color_prop = ::Styles::Properties::Color.new('word', :color, :blue)
27
+ bg_color_prop = ::Styles::Properties::BackgroundColor.new('word', :background_color, :blue)
28
+ string_match_color_prop = ::Styles::Properties::MatchColor.new('word', :match_color, :green)
29
+ string_match_no_color_prop = ::Styles::Properties::MatchColor.new('word', :match_color, :none)
30
+ regex_match_color_prop = ::Styles::Properties::MatchColor.new(/word/, :match_color, :green)
31
+ regex_match_no_color_prop = ::Styles::Properties::MatchColor.new(/word/, :match_color, :none)
32
+
33
+ assert_equal "#{color.blue}this line has a certain #{color.green}word#{color.blue} in it#{color.reset}",
34
+ process([color_prop, string_match_color_prop], test_line)
35
+ assert_equal "#{color.blue}this line has a certain #{color.green}word#{color.blue} in it#{color.reset}",
36
+ process([color_prop, regex_match_color_prop], test_line)
37
+
38
+ assert_equal "#{color.on_blue}this line has a certain #{color.green}word#{color.reset}#{color.on_blue} in it#{color.reset}",
39
+ process([bg_color_prop, string_match_color_prop], test_line)
40
+ assert_equal "#{color.on_blue}this line has a certain #{color.green}word#{color.reset}#{color.on_blue} in it#{color.reset}",
41
+ process([bg_color_prop, regex_match_color_prop], test_line)
42
+
43
+ assert_equal "#{color.blue}this line has a certain #{color.reset}word#{color.blue} in it#{color.reset}",
44
+ process([color_prop, string_match_no_color_prop], test_line)
45
+ assert_equal "#{color.blue}this line has a certain #{color.reset}word#{color.blue} in it#{color.reset}",
46
+ process([color_prop, regex_match_no_color_prop], test_line)
47
+ end
48
+
49
+ def test_can_combine_line_and_match_properties_with_multiple_matches
50
+ test_line = 'this line has the number 12 and the number 89 in it'
51
+ color_prop = ::Styles::Properties::Color.new('line', :color, :blue)
52
+ string_match_color_prop = ::Styles::Properties::MatchColor.new('number', :match_color, :green)
53
+ regex_match_color_prop = ::Styles::Properties::MatchColor.new(/\d\d/, :match_color, :green)
54
+
55
+ assert_equal "#{color.blue}this line has the #{color.green}number#{color.blue}" +
56
+ " 12 and the #{color.green}number#{color.blue} 89 in it#{color.reset}",
57
+ process([color_prop, string_match_color_prop], test_line)
58
+
59
+ assert_equal "#{color.blue}this line has the number #{color.green}12#{color.blue}" +
60
+ " and the number #{color.green}89#{color.blue} in it#{color.reset}",
61
+ process([color_prop, regex_match_color_prop], test_line)
62
+ end
63
+
64
+ def test_can_combine_line_and_match_properties_with_multiple_match_colors
65
+ test_line = 'this line has the number 12 in it'
66
+ color_prop = ::Styles::Properties::Color.new('line', :color, :blue)
67
+ regex_match_color_prop = ::Styles::Properties::MatchColor.new(/(number) (\d\d)/, :match_color, [:green, :red])
68
+ regex_match_color_prop_with_none = ::Styles::Properties::MatchColor.new(/(number) (\d\d)/, :match_color, [:green, :none])
69
+
70
+ assert_equal "#{color.blue}this line has the #{color.green}number#{color.blue}" +
71
+ " #{color.red}12#{color.blue} in it#{color.reset}",
72
+ process([color_prop, regex_match_color_prop], test_line)
73
+ assert_equal "#{color.blue}this line has the #{color.green}number#{color.blue}" +
74
+ " #{color.reset}12#{color.blue} in it#{color.reset}",
75
+ process([color_prop, regex_match_color_prop_with_none], test_line)
76
+ end
77
+
78
+ def test_can_combine_misc_line_and_match_properties
79
+ test_line = 'this line has the number 12 in it'
80
+ underline_prop = ::Styles::Properties::TextDecoration.new('number', :text_decoration, :underline)
81
+ blink_match_prop = ::Styles::Properties::MatchTextDecoration.new('number', :match_text_decoration, :blink)
82
+
83
+ assert_equal "#{color.underline}this line has the #{color.reset}#{color.blink}number#{color.reset}" +
84
+ "#{color.underline} 12 in it#{color.reset}",
85
+ process([underline_prop, blink_match_prop], test_line)
86
+ end
87
+
88
+ def test_background_colors_for_line_applies_to_matches_if_no_background_color_of_their_own
89
+ test_line = 'this line has a certain word in it'
90
+ bg_color_prop = ::Styles::Properties::BackgroundColor.new('word', :background_color, :blue)
91
+ string_match_color_prop = ::Styles::Properties::MatchColor.new('word', :match_color, :green)
92
+ regex_match_color_prop = ::Styles::Properties::MatchColor.new(/word/, :match_color, :green)
93
+ regex_groups_match_color_prop = ::Styles::Properties::MatchColor.new(/(certain) (word)/, :match_color, [:green, :red])
94
+ regex_groups_match_color_prop_with_none = ::Styles::Properties::MatchColor.new(/(certain) (word)/, :match_color, [:green, :none])
95
+
96
+ assert_equal "#{color.on_blue}this line has a certain #{color.green}word#{color.reset}#{color.on_blue} in it#{color.reset}",
97
+ process([bg_color_prop, string_match_color_prop], test_line)
98
+ assert_equal "#{color.on_blue}this line has a certain #{color.green}word#{color.reset}#{color.on_blue} in it#{color.reset}",
99
+ process([bg_color_prop, regex_match_color_prop], test_line)
100
+
101
+ assert_equal "#{color.on_blue}this line has a #{color.green}certain#{color.reset}#{color.on_blue}" +
102
+ " #{color.red}word#{color.reset}#{color.on_blue} in it#{color.reset}",
103
+ process([bg_color_prop, regex_groups_match_color_prop], test_line)
104
+ assert_equal "#{color.on_blue}this line has a #{color.green}certain#{color.reset}#{color.on_blue}" +
105
+ " word in it#{color.reset}",
106
+ process([bg_color_prop, regex_groups_match_color_prop_with_none], test_line)
107
+ end
108
+
109
+ def test_color_for_line_applies_to_matches_if_no_color_of_their_own
110
+ test_line = 'this line has a certain word in it'
111
+ bg_color_prop = ::Styles::Properties::Color.new('word', :color, :blue)
112
+ string_match_color_prop = ::Styles::Properties::MatchBackgroundColor.new('word', :match_background_color, :green)
113
+ regex_match_color_prop = ::Styles::Properties::MatchBackgroundColor.new(/word/, :match_background_color, :green)
114
+ regex_groups_match_color_prop = ::Styles::Properties::MatchBackgroundColor.new(/(certain) (word)/,
115
+ :match_background_color, [:green, :red])
116
+ regex_groups_match_color_prop_with_none = ::Styles::Properties::MatchBackgroundColor.new(/(certain) (word)/,
117
+ :match_background_color, [:green, :none])
118
+
119
+ assert_equal "#{color.blue}this line has a certain #{color.on_green}word#{color.reset}#{color.blue} in it#{color.reset}",
120
+ process([bg_color_prop, string_match_color_prop], test_line)
121
+ assert_equal "#{color.blue}this line has a certain #{color.on_green}word#{color.reset}#{color.blue} in it#{color.reset}",
122
+ process([bg_color_prop, regex_match_color_prop], test_line)
123
+
124
+ assert_equal "#{color.blue}this line has a #{color.on_green}certain#{color.reset}#{color.blue}" +
125
+ " #{color.on_red}word#{color.reset}#{color.blue} in it#{color.reset}",
126
+ process([bg_color_prop, regex_groups_match_color_prop], test_line)
127
+ assert_equal "#{color.blue}this line has a #{color.on_green}certain#{color.reset}#{color.blue} word in it#{color.reset}",
128
+ process([bg_color_prop, regex_groups_match_color_prop_with_none], test_line)
129
+ end
130
+
131
+ private
132
+
133
+ def process(properties, line)
134
+ sub_engine.process(::Styles::Line.new(line, properties)).to_s
135
+ end
136
+
137
+ def sub_engine
138
+ @sub_engine ||= ::Styles::SubEngines::Color.new
139
+ end
140
+
141
+ def color
142
+ ::Term::ANSIColor
143
+ end
144
+ end
@@ -0,0 +1,110 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+ require 'term/ansicolor'
3
+
4
+ class LayoutSubEngineTest < MiniTest::Unit::TestCase
5
+ def test_can_combine_padding_and_margin
6
+ test_line = 'here it is'
7
+ margin_left = ::Styles::Properties::Margin.new('here', :margin_left, 2)
8
+ padding_left = ::Styles::Properties::Padding.new('here', :padding_left, 2)
9
+ margin = ::Styles::Properties::Margin.new('here', :margin, 1)
10
+ padding = ::Styles::Properties::Padding.new('here', :padding, 2)
11
+
12
+ assert_equal " #{test_line}", process([margin_left, padding_left], test_line)
13
+ blank = "#{' ' * 16}\n"
14
+ assert_equal "#{blank * 3} #{test_line} \n#{blank * 3}", process([margin, padding], test_line)
15
+ end
16
+
17
+ def test_can_combine_padding_and_border
18
+ test_line = 'here it is'
19
+ s = ::Styles::Properties::Border::SOLID_CHARS
20
+
21
+ border = ::Styles::Properties::Border.new('here', :border, :solid)
22
+ padding_1 = ::Styles::Properties::Padding.new('here', :padding, 1)
23
+ padding_2 = ::Styles::Properties::Padding.new('here', :padding, 2)
24
+
25
+ output = <<RESULT
26
+ #{s[:top_left]}#{s[:top] * (1 + test_line.size + 1)}#{s[:top_right]}
27
+ #{s[:left]}#{' ' * (1 + test_line.size + 1)}#{s[:right]}
28
+ #{s[:left]} #{test_line} #{s[:right]}
29
+ #{s[:left]}#{' ' * (1 + test_line.size + 1)}#{s[:right]}
30
+ #{s[:bottom_left]}#{s[:bottom] * (1 + test_line.size + 1)}#{s[:bottom_right]}
31
+ RESULT
32
+
33
+ assert_equal output, process([padding_1, border], test_line)
34
+
35
+ output = <<RESULT
36
+ #{s[:top_left]}#{s[:top] * (2 + test_line.size + 2)}#{s[:top_right]}
37
+ #{s[:left]}#{' ' * (2 + test_line.size + 2)}#{s[:right]}
38
+ #{s[:left]}#{' ' * (2 + test_line.size + 2)}#{s[:right]}
39
+ #{s[:left]} #{test_line} #{s[:right]}
40
+ #{s[:left]}#{' ' * (2 + test_line.size + 2)}#{s[:right]}
41
+ #{s[:left]}#{' ' * (2 + test_line.size + 2)}#{s[:right]}
42
+ #{s[:bottom_left]}#{s[:bottom] * (2 + test_line.size + 2)}#{s[:bottom_right]}
43
+ RESULT
44
+
45
+ assert_equal output, process([padding_2, border], test_line)
46
+
47
+ output = <<RESULT
48
+ #{s[:top_left]}#{s[:top] * (test_line.size + 1)}#{s[:top_right]}
49
+ #{s[:left]}#{' ' * (test_line.size + 1)}#{s[:right]}
50
+ #{s[:left]}#{' ' * (test_line.size + 1)}#{s[:right]}
51
+ #{s[:left]}#{test_line} #{s[:right]}
52
+ #{s[:bottom_left]}#{s[:bottom] * (test_line.size + 1)}#{s[:bottom_right]}
53
+ RESULT
54
+
55
+ top_padding = ::Styles::Properties::Padding.new('here', :padding_top, 2)
56
+ right_padding = ::Styles::Properties::Padding.new('here', :padding_right, 1)
57
+ top_and_right_padding = ::Styles::Properties::Padding.new([top_padding, right_padding])
58
+ assert_equal output, process([top_and_right_padding, border], test_line)
59
+ end
60
+
61
+ def test_can_combine_padding_and_margin_and_border
62
+ test_line = 'here it is'
63
+ s = ::Styles::Properties::Border::SOLID_CHARS
64
+
65
+ margin_1 = ::Styles::Properties::Margin.new('here', :margin, 1)
66
+ padding_1 = ::Styles::Properties::Padding.new('here', :padding, 1)
67
+ border = ::Styles::Properties::Border.new('here', :border, :solid)
68
+
69
+ # Add trailing whitespace in a peculiar way so it doesn't get stripped by tools
70
+ output = <<RESULT
71
+ #{' ' * (3 + test_line.size + 3)}
72
+ #{s[:top_left]}#{s[:top] * (1 + test_line.size + 1)}#{s[:top_right]}#{' '}
73
+ #{s[:left]}#{' ' * (1 + test_line.size + 1)}#{s[:right]}#{' '}
74
+ #{s[:left]} #{test_line} #{s[:right]}#{' '}
75
+ #{s[:left]}#{' ' * (1 + test_line.size + 1)}#{s[:right]}#{' '}
76
+ #{s[:bottom_left]}#{s[:bottom] * (1 + test_line.size + 1)}#{s[:bottom_right]}#{' '}
77
+ #{' ' * (3 + test_line.size + 3)}
78
+ RESULT
79
+
80
+ assert_equal output, process([margin_1, padding_1, border], test_line)
81
+ end
82
+
83
+ def test_can_combine_padding_and_background_color
84
+ test_line = "#{color.on_blue}here it is#{color.reset}" # assume already processed by color sub-engine
85
+ padding = ::Styles::Properties::Padding.new('here', :padding, 1)
86
+ bg_color = ::Styles::Properties::BackgroundColor.new('here', :background_color, :blue)
87
+
88
+ output = <<RESULT
89
+ #{color.on_blue}#{' ' * 12}#{color.reset}
90
+ #{color.on_blue} #{color.reset}#{test_line}#{color.on_blue} #{color.reset}
91
+ #{color.on_blue}#{' ' * 12}#{color.reset}
92
+ RESULT
93
+
94
+ assert_equal output, process([padding, bg_color], test_line)
95
+ end
96
+
97
+ private
98
+
99
+ def process(properties, line)
100
+ sub_engine.process(::Styles::Line.new(line, properties)).to_s
101
+ end
102
+
103
+ def sub_engine
104
+ @sub_engine ||= ::Styles::SubEngines::Layout.new
105
+ end
106
+
107
+ def color
108
+ ::Term::ANSIColor
109
+ end
110
+ end
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'minitest/autorun'
3
+ require "mocha/setup"
4
+
5
+ require File.join(File.dirname(__FILE__), *%w[.. lib styles])
metadata ADDED
@@ -0,0 +1,184 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: styles
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Aaron Royer
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: term-ansicolor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.1.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.1.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: timecop
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: mocha
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: plain text stylesheets
63
+ email:
64
+ - aaronroyer@gmail.com
65
+ executables:
66
+ - styles
67
+ extensions: []
68
+ extra_rdoc_files: []
69
+ files:
70
+ - .gitignore
71
+ - Gemfile
72
+ - LICENSE.txt
73
+ - README.md
74
+ - Rakefile
75
+ - bin/styles
76
+ - lib/styles.rb
77
+ - lib/styles/application.rb
78
+ - lib/styles/colors.rb
79
+ - lib/styles/core_ext.rb
80
+ - lib/styles/engine.rb
81
+ - lib/styles/line.rb
82
+ - lib/styles/properties.rb
83
+ - lib/styles/properties/background_color.rb
84
+ - lib/styles/properties/base.rb
85
+ - lib/styles/properties/border.rb
86
+ - lib/styles/properties/color.rb
87
+ - lib/styles/properties/display.rb
88
+ - lib/styles/properties/font_weight.rb
89
+ - lib/styles/properties/function.rb
90
+ - lib/styles/properties/margin.rb
91
+ - lib/styles/properties/match_background_color.rb
92
+ - lib/styles/properties/match_color.rb
93
+ - lib/styles/properties/match_font_weight.rb
94
+ - lib/styles/properties/match_text_decoration.rb
95
+ - lib/styles/properties/padding.rb
96
+ - lib/styles/properties/text_align.rb
97
+ - lib/styles/properties/text_decoration.rb
98
+ - lib/styles/properties/width.rb
99
+ - lib/styles/rule.rb
100
+ - lib/styles/stylesheet.rb
101
+ - lib/styles/sub_engines.rb
102
+ - lib/styles/sub_engines/base.rb
103
+ - lib/styles/sub_engines/color.rb
104
+ - lib/styles/sub_engines/layout.rb
105
+ - lib/styles/sub_engines/pre_processor.rb
106
+ - lib/styles/version.rb
107
+ - styles.gemspec
108
+ - test/application_test.rb
109
+ - test/colors_test.rb
110
+ - test/engine_test.rb
111
+ - test/integration_test.rb
112
+ - test/line_test.rb
113
+ - test/properties/background_color_test.rb
114
+ - test/properties/base_test.rb
115
+ - test/properties/border_test.rb
116
+ - test/properties/color_test.rb
117
+ - test/properties/display_test.rb
118
+ - test/properties/font_weight_test.rb
119
+ - test/properties/function_test.rb
120
+ - test/properties/margin_test.rb
121
+ - test/properties/match_background_color_test.rb
122
+ - test/properties/match_color_test.rb
123
+ - test/properties/match_font_weight_test.rb
124
+ - test/properties/match_text_decoration_test.rb
125
+ - test/properties/padding_test.rb
126
+ - test/properties/text_align_test.rb
127
+ - test/properties/text_decoration_test.rb
128
+ - test/properties/width_test.rb
129
+ - test/rule_test.rb
130
+ - test/stylesheet_test.rb
131
+ - test/sub_engines/color_test.rb
132
+ - test/sub_engines/layout_test.rb
133
+ - test/test_helper.rb
134
+ homepage: http://github.com/aaronroyer/styles
135
+ licenses: []
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: 1.9.0
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ requirements: []
153
+ rubyforge_project:
154
+ rubygems_version: 1.8.23
155
+ signing_key:
156
+ specification_version: 3
157
+ summary: A utility for processing text that provides a Ruby DSL leveraging CSS concepts
158
+ test_files:
159
+ - test/application_test.rb
160
+ - test/colors_test.rb
161
+ - test/engine_test.rb
162
+ - test/integration_test.rb
163
+ - test/line_test.rb
164
+ - test/properties/background_color_test.rb
165
+ - test/properties/base_test.rb
166
+ - test/properties/border_test.rb
167
+ - test/properties/color_test.rb
168
+ - test/properties/display_test.rb
169
+ - test/properties/font_weight_test.rb
170
+ - test/properties/function_test.rb
171
+ - test/properties/margin_test.rb
172
+ - test/properties/match_background_color_test.rb
173
+ - test/properties/match_color_test.rb
174
+ - test/properties/match_font_weight_test.rb
175
+ - test/properties/match_text_decoration_test.rb
176
+ - test/properties/padding_test.rb
177
+ - test/properties/text_align_test.rb
178
+ - test/properties/text_decoration_test.rb
179
+ - test/properties/width_test.rb
180
+ - test/rule_test.rb
181
+ - test/stylesheet_test.rb
182
+ - test/sub_engines/color_test.rb
183
+ - test/sub_engines/layout_test.rb
184
+ - test/test_helper.rb