visionmedia-ass 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.rdoc ADDED
@@ -0,0 +1,4 @@
1
+
2
+ === 0.0.1 / 2009-01-12
3
+
4
+ * Initial release
data/Manifest ADDED
@@ -0,0 +1,18 @@
1
+ ass.gemspec
2
+ bin/ass
3
+ examples/benchmarks.rb
4
+ History.rdoc
5
+ lib/ass/parser.rb
6
+ lib/ass/version.rb
7
+ lib/ass.rb
8
+ Manifest
9
+ Rakefile
10
+ README.rdoc
11
+ spec/fixtures/test.ass
12
+ spec/functional/parser_spec.rb
13
+ spec/spec_helper.rb
14
+ tasks/benchmark.rake
15
+ tasks/docs.rake
16
+ tasks/gemspec.rake
17
+ tasks/spec.rake
18
+ Todo.rdoc
data/README.rdoc ADDED
@@ -0,0 +1,102 @@
1
+
2
+ = Amazing Style Sheets
3
+
4
+ Like Sass, but without the s-uck. Just kidding, Sass is great, however I am not fond of
5
+ some of the grammar choices, and for how simple the library COULD be, it is rather large.
6
+ That being said this is simply my 'flavour' of a CSS DSL.
7
+
8
+ == Features:
9
+
10
+ * Sexy, intuative grammar
11
+ * DRY with selector nesting
12
+ * Mixins
13
+ * Nesting of mixins
14
+ * Constants
15
+ * Both literal and Ass specific comments
16
+ * Commandline executable for compilation etc
17
+ * Compilation / aggregation of several files into a single file, or batches
18
+ * Has a funny name
19
+
20
+ == Installation:
21
+
22
+ $ sudo gem install visionmedia-ass
23
+ $ sudo gem install visionmedia-commander (used for executable)
24
+
25
+ == Sub-commands:
26
+
27
+ $ ass help, for more examples
28
+ $ ass compile directory_of_ass --to-dir ./directory_of_css
29
+
30
+ == Looks like:
31
+
32
+ // Constants
33
+
34
+ :primary_color = blue
35
+
36
+ // Mixins
37
+
38
+ +hidden
39
+ visibility hidden
40
+ height 0
41
+
42
+ +clearfix
43
+ display block
44
+ content '.'
45
+ clear both
46
+ +hidden
47
+
48
+ // Stylesheet
49
+
50
+ body
51
+ margin 20px 0
52
+ color :primary_color
53
+
54
+ .clear
55
+ +clearfix
56
+
57
+ h1, h2, h3
58
+ font 12px
59
+ color :primary_color
60
+
61
+ == Compiles to:
62
+
63
+ body {
64
+ margin: 20px 0;
65
+ color: blue;
66
+ }
67
+ body .clear {
68
+ visibility: hidden;
69
+ height: 0;
70
+ display: block;
71
+ content: '.';
72
+ clear: both;
73
+ }
74
+ h1, h2, h3 {
75
+ font: 12px;
76
+ color: blue;
77
+ }
78
+
79
+ == License:
80
+
81
+ (The MIT License)
82
+
83
+ Copyright (c) 2008 TJ Holowaychuk <tj@vision-media.ca>
84
+
85
+ Permission is hereby granted, free of charge, to any person obtaining
86
+ a copy of this software and associated documentation files (the
87
+ 'Software'), to deal in the Software without restriction, including
88
+ without limitation the rights to use, copy, modify, merge, publish,
89
+ distribute, sublicense, an d/or sell copies of the Software, and to
90
+ permit persons to whom the Software is furnished to do so, subject to
91
+ the following conditions:
92
+
93
+ The above copyright notice and this permission notice shall be
94
+ included in all copies or substantial portions of the Software.
95
+
96
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
97
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
98
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
99
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
100
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
101
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
102
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+
2
+ require 'rubygems'
3
+ require 'rake'
4
+ require 'echoe'
5
+ require './lib/ass.rb'
6
+
7
+ Echoe.new("ass", Ass::VERSION::STRING) do |p|
8
+ p.author = "TJ Holowaychuk"
9
+ p.email = "tj@vision-media.ca"
10
+ p.summary = "'Amazing Style Sheets'"
11
+ p.url = "http://github.com/visionmedia/ass"
12
+ p.runtime_dependencies = ['visionmedia-commander']
13
+ end
14
+
15
+ Dir['tasks/**/*.rake'].sort.each { |lib| load lib }
data/Todo.rdoc ADDED
@@ -0,0 +1,27 @@
1
+
2
+ == Major:
3
+
4
+ * Real parser (remove lame/quick scripting prototype)
5
+ * Finish commander exec portion
6
+ * Revamp spec
7
+ * Revamp EOF
8
+ * Caching
9
+ * Auto-compliation on modification (optional)
10
+ * Implement in C
11
+ * Think of more cool stuff to set apart from Sass
12
+ * Benchmark VS Sass
13
+ * Order properties alphabetically
14
+ * Different compressions / aggregations of style sheets
15
+ * nested like sass:
16
+ font
17
+ weight
18
+ color
19
+ family
20
+
21
+ == Minor:
22
+
23
+ * Nothing
24
+
25
+ == Brainstorming:
26
+
27
+ * Nothing
data/ass.gemspec ADDED
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{ass}
5
+ s.version = "0.0.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["TJ Holowaychuk"]
9
+ s.date = %q{2009-01-15}
10
+ s.default_executable = %q{ass}
11
+ s.description = %q{'Amazing Style Sheets'}
12
+ s.email = %q{tj@vision-media.ca}
13
+ s.executables = ["ass"]
14
+ s.extra_rdoc_files = ["bin/ass", "lib/ass/parser.rb", "lib/ass/version.rb", "lib/ass.rb", "README.rdoc", "tasks/benchmark.rake", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
15
+ s.files = ["ass.gemspec", "bin/ass", "examples/benchmarks.rb", "History.rdoc", "lib/ass/parser.rb", "lib/ass/version.rb", "lib/ass.rb", "Manifest", "Rakefile", "README.rdoc", "spec/fixtures/test.ass", "spec/functional/parser_spec.rb", "spec/spec_helper.rb", "tasks/benchmark.rake", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake", "Todo.rdoc"]
16
+ s.has_rdoc = true
17
+ s.homepage = %q{http://github.com/visionmedia/ass}
18
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Ass", "--main", "README.rdoc"]
19
+ s.require_paths = ["lib"]
20
+ s.rubyforge_project = %q{ass}
21
+ s.rubygems_version = %q{1.3.1}
22
+ s.summary = %q{'Amazing Style Sheets'}
23
+
24
+ if s.respond_to? :specification_version then
25
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
+ s.specification_version = 2
27
+
28
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
29
+ s.add_runtime_dependency(%q<visionmedia-commander>, [">= 0"])
30
+ s.add_development_dependency(%q<echoe>, [">= 0"])
31
+ else
32
+ s.add_dependency(%q<visionmedia-commander>, [">= 0"])
33
+ s.add_dependency(%q<echoe>, [">= 0"])
34
+ end
35
+ else
36
+ s.add_dependency(%q<visionmedia-commander>, [">= 0"])
37
+ s.add_dependency(%q<echoe>, [">= 0"])
38
+ end
39
+ end
data/bin/ass ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'commander'
5
+ require 'ass'
6
+
7
+ program :name, 'ass'
8
+ program :version, Ass::VERSION::STRING
9
+ program :description, 'Amazing Style Sheets.'
10
+
11
+ command :compile do |c|
12
+ c.syntax = 'ass compile <file | dir ...> [options]'
13
+ c.summary = 'Compile ass files to css'
14
+ c.description = 'Compile a single, or several *.ass files into Cascading Style Sheets. The combinations of compilation below may be mixed to your needs.'
15
+ c.example 'Compile a single file with output to STDOUT', 'ass compile style.ass'
16
+ c.example 'Compile several files to a specific directory (defaults to same dir)', 'ass compile style.ass print.ass iphone.ass --to-dir ./stylesheets'
17
+ c.example 'Compile several files in a directory to a single file', 'ass compile directory_of_ass --to-file ./compiled-style.css'
18
+ c.option '--to-dir', 'Compile file(s) to a directory, maintaining their original names.'
19
+ c.option '--to-file', 'Compile file(s) to a new file, aggregating when multiple files are compiled.'
20
+ c.option '--verbose', 'Output compilation information while in progress'
21
+ c.when_called do |args, options|
22
+ # TODO
23
+ end
24
+ end
25
+
@@ -0,0 +1,75 @@
1
+
2
+ $:.unshift File.dirname(__FILE__) + '/../lib/'
3
+ require 'ass'
4
+ require 'benchmark'
5
+
6
+ large_ass = <<-ASS
7
+ /* Inline comment
8
+
9
+ // Literal imports
10
+ @import 'something.css'
11
+
12
+ // Constants
13
+
14
+ :primary_color = #fff
15
+ :heading_size = 16px
16
+
17
+ // Mixins
18
+ +large_font
19
+ font-size 16px
20
+ font-weight bold
21
+
22
+ +add_color
23
+ color :primary_color
24
+
25
+ +clearfix
26
+ display block
27
+ content '.'
28
+ height 0
29
+ clear both
30
+ visibility hidden
31
+ +add_color
32
+ +large_font
33
+
34
+ // Stylesheet
35
+
36
+ body
37
+ font 12px
38
+ color :primary_color
39
+
40
+ h1, h2, h3
41
+ font-weight bold
42
+ font-size :heading_size
43
+ color #fff
44
+
45
+ a
46
+ color black
47
+
48
+ :hover
49
+ color blue
50
+
51
+ #primary .content
52
+ margin 15px
53
+
54
+ #comments
55
+ padding 5px
56
+ font-size 11px
57
+ color gray
58
+
59
+ .comment
60
+ border white 1px solid
61
+
62
+ a
63
+ color black !important
64
+
65
+ #footer
66
+ +clearfix
67
+
68
+ ASS
69
+
70
+ Benchmark.bm(15) do |x|
71
+ x.report("60 lines") {
72
+ Ass::Parser.parse(large_ass)
73
+ }
74
+ end
75
+
data/lib/ass/parser.rb ADDED
@@ -0,0 +1,117 @@
1
+
2
+ module Ass
3
+ class Parser
4
+
5
+ OPEN_BRACE = " {\n"
6
+ CLOSING_BRACE = "}\n"
7
+
8
+ AT = /^ *@/
9
+ COMMENT = /^ *\/\*(.*)(?:\*\/)?$/
10
+ ASS_COMMENT = /&\/\//
11
+ BLANK = /^ *$/ # TODO: Single \n char as well, update test.ass
12
+ WORD = /([\w]+)/
13
+ HYPHENATED_WORD = /([\w\-]+)/
14
+ MIXIN = /^ *\+#{WORD}/
15
+ SELECTOR = /^([#\w\-\.,:\[\]\~\* ]+) *$/ # TODO: review CSS specification
16
+ EQUALS = / *= */
17
+ CONSTANT = /:#{WORD}/
18
+ CONSTANT_VALUE = /([#\w]+)/
19
+ CONSTANT_WITH_VALUE = /^ *#{CONSTANT}#{EQUALS}#{CONSTANT_VALUE}/
20
+ PROPERTY = /^ *#{HYPHENATED_WORD}/
21
+
22
+ attr_accessor :ass, :constants, :css
23
+ alias :to_s :ass
24
+
25
+ def initialize ass = ''
26
+ @ass, @css, @constants = ass, '', {}
27
+ end
28
+
29
+ def parse!
30
+ mixins = Hash.new ''
31
+ in_block, in_mixin = false, false
32
+ last_selector = ''
33
+ lines = @ass.split "\n"
34
+ lines.each do |line|
35
+ if line.match COMMENT
36
+ @css << "/* #{$1.strip} */\n"
37
+ elsif line.match CONSTANT_WITH_VALUE
38
+ @constants[$1.to_sym] = $2
39
+ elsif not in_block and line.match MIXIN
40
+ in_mixin, in_block = $1, true
41
+ elsif in_block and line.match MIXIN
42
+ next if in_mixin
43
+ @css << mixins[$1]
44
+ elsif in_block and line.match BLANK
45
+ in_block = false
46
+ next if in_mixin
47
+ @css << CLOSING_BRACE
48
+ elsif line.match AT
49
+ @css << line << "\n"
50
+ elsif line.match BLANK or line.match ASS_COMMENT
51
+ # Do nothing
52
+ elsif not in_block and line.match SELECTOR
53
+ in_block = true
54
+ if sub_selector?($1, last_selector)
55
+ next if in_mixin
56
+ selector = join_selectors last_selector, $1.strip
57
+ @css << selector << OPEN_BRACE
58
+ else
59
+ in_mixin = false
60
+ selector = $1.strip
61
+ @css << selector << OPEN_BRACE
62
+ end
63
+ last_selector = selector
64
+ elsif line.match PROPERTY
65
+ if mixin = in_mixin
66
+ mixins[mixin] << format_property(line)
67
+ else
68
+ @css << format_property(line)
69
+ end
70
+ end
71
+ end
72
+ self
73
+ end
74
+
75
+ def join_selectors selector_a, selector_b
76
+ if selector_b[0,1] == ':'
77
+ if selector_a.include? ','
78
+ selector_a.split(',').collect { |selector| selector << selector_b }.join(',')
79
+ else
80
+ selector_a << selector_b
81
+ end
82
+ else
83
+ if selector_a.include? ','
84
+ selector_a.split(',').collect { |selector| selector << ' ' << selector_b }.join(',')
85
+ else
86
+ selector_a << ' ' << selector_b
87
+ end
88
+ end
89
+ end
90
+
91
+ def sub_selector? selector_a, selector_b
92
+ true if indents_in(selector_a) > indents_in(selector_b)
93
+ end
94
+
95
+ def indents_in string
96
+ string.match(/^( *)/).captures.first.length / 2 rescue 0
97
+ end
98
+
99
+ def format_property line
100
+ line.gsub! PROPERTY, ' \1:'
101
+ line.gsub! CONSTANT do |constant|
102
+ constant_sym = constant.gsub(':', '').to_sym
103
+ @constants[constant_sym] || 'undefined_constant'
104
+ end
105
+ line << ";\n"
106
+ end
107
+
108
+ def self.parse ass
109
+ new(ass).parse!.css
110
+ end
111
+
112
+ def self.parse_file file
113
+ new(File.read(file)).parse!.css
114
+ end
115
+
116
+ end
117
+ end
@@ -0,0 +1,7 @@
1
+
2
+ module Ass
3
+ module VERSION #:nodoc:
4
+ MAJOR, MINOR, TINY = [0, 0, 2]
5
+ STRING = [MAJOR, MINOR, TINY].join '.'
6
+ end
7
+ end
data/lib/ass.rb ADDED
@@ -0,0 +1,27 @@
1
+ #--
2
+ # Copyright (c) 2008 TJ Holowaychuk
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ $:.unshift File.dirname(__FILE__)
25
+
26
+ require 'ass/version'
27
+ require 'ass/parser'
@@ -0,0 +1,4 @@
1
+ body.some-class
2
+ margin 0
3
+
4
+
@@ -0,0 +1,159 @@
1
+
2
+ describe Ass::Parser do
3
+
4
+ before :each do
5
+ @parser = Ass::Parser.new
6
+ end
7
+
8
+ it "should determine indentations (2 spaces)" do
9
+ @parser.indents_in('none').should == 0
10
+ @parser.indents_in(' one').should == 1
11
+ @parser.indents_in(' two').should == 2
12
+ end
13
+
14
+ it "should determine sub selectors" do
15
+ @parser.sub_selector?(' sub', 'primary').should be_true
16
+ @parser.sub_selector?('primary', 'primary').should be_nil
17
+ end
18
+
19
+ it "should join sub selectors" do
20
+ @parser.join_selectors('a', ':hover').should == 'a:hover'
21
+ @parser.join_selectors('h1', 'a').should == 'h1 a'
22
+ @parser.join_selectors('h1, h2, h3', ':hover').should == 'h1:hover, h2:hover, h3:hover'
23
+ @parser.join_selectors('h1, h2, h3', 'a').should == 'h1 a, h2 a, h3 a'
24
+ end
25
+
26
+ it "should populate constants" do
27
+ @parser.ass = <<-ASS
28
+ :primary_color = #fff
29
+ :primary_size = 15px
30
+ :tertiary_size = 9em
31
+ ASS
32
+ @parser.parse!
33
+ @parser.constants[:primary_color].should == '#fff'
34
+ @parser.constants[:primary_size].should == '15px'
35
+ @parser.constants[:tertiary_size].should == '9em'
36
+ end
37
+
38
+ it "should translate ass document from file" do
39
+ Ass::Parser.parse_file(File.dirname(__FILE__) + '/../fixtures/test.ass').should == <<-ASS.deindent
40
+ body.some-class {
41
+ margin: 0;
42
+ }
43
+ ASS
44
+ end
45
+
46
+ it "should fail when parsing a file that does not exist" do
47
+ lambda { Ass::Parser.parse_file('does_not_exist.ass') }.should raise_error
48
+ end
49
+
50
+ it "should translate an ass document" do
51
+ ass = <<-ASS.deindent
52
+ /* Inline comment
53
+
54
+ // Literal imports
55
+ @import 'something.css'
56
+
57
+ // Constants
58
+
59
+ :primary_color = #fff
60
+ :heading_size = 16px
61
+
62
+ // Mixins
63
+ +large font
64
+ font-size 16px
65
+ font-weight bold
66
+
67
+ +add color
68
+ color :primary_color
69
+
70
+ +clearfix
71
+ display block
72
+ content '.'
73
+ height 0
74
+ clear both
75
+ visibility hidden
76
+ +add color
77
+ +large font
78
+
79
+ // Stylesheet
80
+
81
+ body
82
+ font 12px
83
+ color :primary_color
84
+
85
+ h1, h2, h3
86
+ font-weight bold
87
+ font-size :heading_size
88
+ color #fff
89
+
90
+ a
91
+ color black
92
+
93
+ :hover
94
+ color blue
95
+
96
+ #primary .content
97
+ margin 15px
98
+
99
+ #comments
100
+ padding 5px
101
+ font-size 11px
102
+ color gray
103
+
104
+ .comment
105
+ border white 1px solid
106
+
107
+ a
108
+ color black !important
109
+
110
+ #footer
111
+ +clearfix
112
+
113
+ ASS
114
+ Ass::Parser.parse(ass).should == <<-CSS.deindent
115
+ /* Inline comment */
116
+ @import 'something.css'
117
+ body {
118
+ font: 12px;
119
+ color: #fff;
120
+ }
121
+ h1, h2, h3 {
122
+ font-weight: bold;
123
+ font-size: 16px;
124
+ color: #fff;
125
+ }
126
+ a {
127
+ color: black;
128
+ }
129
+ a:hover {
130
+ color: blue;
131
+ }
132
+ #primary .content {
133
+ margin: 15px;
134
+ }
135
+ #primary .content #comments {
136
+ padding: 5px;
137
+ font-size: 11px;
138
+ color: gray;
139
+ }
140
+ #primary .content #comments .comment {
141
+ border: white 1px solid;
142
+ }
143
+ #primary .content #comments .comment a {
144
+ color: black !important;
145
+ }
146
+ #footer {
147
+ font-size: 16px;
148
+ font-weight: bold;
149
+ color: #fff;
150
+ display: block;
151
+ content: '.';
152
+ height: 0;
153
+ clear: both;
154
+ visibility: hidden;
155
+ }
156
+ CSS
157
+ end
158
+
159
+ end
@@ -0,0 +1,8 @@
1
+
2
+ require 'ass'
3
+
4
+ class String
5
+ def deindent spaces = 6
6
+ gsub! /^ {#{spaces}}/, ''
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+
2
+ desc 'Run benchmarks'
3
+ task :benchmark do
4
+ ruby 'examples/benchmarks.rb'
5
+ end
data/tasks/docs.rake ADDED
@@ -0,0 +1,13 @@
1
+
2
+ namespace :docs do
3
+
4
+ desc 'Remove rdoc products'
5
+ task :remove => [:clobber_docs]
6
+
7
+ desc 'Build docs, and open in browser for viewing (specify BROWSER)'
8
+ task :open do
9
+ browser = ENV["BROWSER"] || "safari"
10
+ sh "open -a #{browser} doc/index.html"
11
+ end
12
+
13
+ end
@@ -0,0 +1,3 @@
1
+
2
+ desc 'Build gemspec file'
3
+ task :gemspec => [:build_gemspec]
data/tasks/spec.rake ADDED
@@ -0,0 +1,25 @@
1
+
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all specifications"
5
+ Spec::Rake::SpecTask.new(:spec) do |t|
6
+ t.libs << "lib"
7
+ t.spec_opts = ["--color", "--require", "spec/spec_helper.rb"]
8
+ end
9
+
10
+ namespace :spec do
11
+
12
+ desc "Run all specifications verbosely"
13
+ Spec::Rake::SpecTask.new(:verbose) do |t|
14
+ t.libs << "lib"
15
+ t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
16
+ end
17
+
18
+ desc "Run specific specification verbosely (specify SPEC)"
19
+ Spec::Rake::SpecTask.new(:select) do |t|
20
+ t.libs << "lib"
21
+ t.spec_files = [ENV["SPEC"]]
22
+ t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
23
+ end
24
+
25
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: visionmedia-ass
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - TJ Holowaychuk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-15 00:00:00 -08:00
13
+ default_executable: ass
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: visionmedia-commander
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: echoe
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "0"
32
+ version:
33
+ description: "'Amazing Style Sheets'"
34
+ email: tj@vision-media.ca
35
+ executables:
36
+ - ass
37
+ extensions: []
38
+
39
+ extra_rdoc_files:
40
+ - bin/ass
41
+ - lib/ass/parser.rb
42
+ - lib/ass/version.rb
43
+ - lib/ass.rb
44
+ - README.rdoc
45
+ - tasks/benchmark.rake
46
+ - tasks/docs.rake
47
+ - tasks/gemspec.rake
48
+ - tasks/spec.rake
49
+ files:
50
+ - ass.gemspec
51
+ - bin/ass
52
+ - examples/benchmarks.rb
53
+ - History.rdoc
54
+ - lib/ass/parser.rb
55
+ - lib/ass/version.rb
56
+ - lib/ass.rb
57
+ - Manifest
58
+ - Rakefile
59
+ - README.rdoc
60
+ - spec/fixtures/test.ass
61
+ - spec/functional/parser_spec.rb
62
+ - spec/spec_helper.rb
63
+ - tasks/benchmark.rake
64
+ - tasks/docs.rake
65
+ - tasks/gemspec.rake
66
+ - tasks/spec.rake
67
+ - Todo.rdoc
68
+ has_rdoc: true
69
+ homepage: http://github.com/visionmedia/ass
70
+ post_install_message:
71
+ rdoc_options:
72
+ - --line-numbers
73
+ - --inline-source
74
+ - --title
75
+ - Ass
76
+ - --main
77
+ - README.rdoc
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: "0"
85
+ version:
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "1.2"
91
+ version:
92
+ requirements: []
93
+
94
+ rubyforge_project: ass
95
+ rubygems_version: 1.2.0
96
+ signing_key:
97
+ specification_version: 2
98
+ summary: "'Amazing Style Sheets'"
99
+ test_files: []
100
+