kss 0.1.0
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/LICENSE +20 -0
- data/README.md +23 -0
- data/Rakefile +56 -0
- data/lib/kss.rb +9 -0
- data/lib/kss/modifier.rb +36 -0
- data/lib/kss/parser.rb +68 -0
- data/lib/kss/section.rb +80 -0
- data/lib/kss/version.rb +3 -0
- data/test/fixtures/css/buttons.css +38 -0
- data/test/fixtures/scss/buttons.scss +47 -0
- data/test/helper.rb +19 -0
- data/test/parser_test.rb +58 -0
- data/test/section_test.rb +40 -0
- metadata +94 -0
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Tom Preston-Werner, Kyle Neath
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
Software), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Knyle Style Sheets
|
2
|
+
|
3
|
+
This is a ruby library for parsing KSS documented stylesheets and generating styleguides.
|
4
|
+
|
5
|
+
Inspired by [TomDoc](http://tomdoc.org), KSS attempts to provide a methodology for writing maintainable, documented CSS within a team. Specifically, KSS is a CSS structure, documentation specification, and styleguide format. It is **not** a preprocessor, CSS framework, naming convention, or specificity guideline.
|
6
|
+
|
7
|
+
## Spec
|
8
|
+
|
9
|
+
If you would like to learn more about the methodology and ideas behind Knyle Style Sheets, you should read SPEC.md. It contains the documenting syntax and styleguide guidelines.
|
10
|
+
|
11
|
+
## Ruby Library
|
12
|
+
|
13
|
+
This repository includes a ruby library suitable for parsing SASS, SCSS, and CSS documented with KSS guidelines.
|
14
|
+
|
15
|
+
The library is also fully TomDoc'd, completing the circle of life.
|
16
|
+
|
17
|
+
## Development
|
18
|
+
|
19
|
+
To hack on KSS, you'll need to install dependencies with `bundle install`. Run tests with `rake`.
|
20
|
+
|
21
|
+
To make your life easier, I suggest `bundle install --binstubs` and adding `bin/` to your `$PATH`. If you don't understand this, just blindly add `bundle exec` in front of everything you'd normally do, like `bundle exec rake`.
|
22
|
+
|
23
|
+
I apologize on behalf of the Ruby community for this, it's embarrassing and disappointing that dependency management is still so clumsy.
|
data/Rakefile
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'rake/testtask'
|
2
|
+
|
3
|
+
task :default => :test
|
4
|
+
|
5
|
+
def command?(command)
|
6
|
+
system("type #{command} > /dev/null 2>&1")
|
7
|
+
end
|
8
|
+
|
9
|
+
#
|
10
|
+
# Tests
|
11
|
+
#
|
12
|
+
|
13
|
+
if command? :turn
|
14
|
+
desc "Run tests"
|
15
|
+
task :test do
|
16
|
+
suffix = "-n #{ENV['TEST']}" if ENV['TEST']
|
17
|
+
sh "turn -Ilib:. test/*.rb #{suffix}"
|
18
|
+
end
|
19
|
+
else
|
20
|
+
Rake::TestTask.new do |t|
|
21
|
+
t.libs << 'lib'
|
22
|
+
t.libs << '.'
|
23
|
+
t.pattern = 'test/**/*_test.rb'
|
24
|
+
t.verbose = false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
#
|
29
|
+
# Development
|
30
|
+
#
|
31
|
+
|
32
|
+
desc "Drop to irb."
|
33
|
+
task :console do
|
34
|
+
exec "irb -I lib -rkss"
|
35
|
+
end
|
36
|
+
|
37
|
+
#
|
38
|
+
# Gems
|
39
|
+
#
|
40
|
+
|
41
|
+
begin
|
42
|
+
require 'mg'
|
43
|
+
MG.new("kss.gemspec")
|
44
|
+
rescue LoadError
|
45
|
+
warn "mg not available."
|
46
|
+
warn "Install it with: gem install mg"
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Push a new version to Gemcutter and publish docs."
|
50
|
+
task :publish => "gem:publish" do
|
51
|
+
require File.dirname(__FILE__) + '/lib/kss/version'
|
52
|
+
|
53
|
+
sh "git tag v#{Kss::VERSION}"
|
54
|
+
sh "git push origin master --tags"
|
55
|
+
sh "git clean -fd"
|
56
|
+
end
|
data/lib/kss.rb
ADDED
data/lib/kss/modifier.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
module Kss
|
2
|
+
# Public: Represents a style modifier. Usually a class name or a
|
3
|
+
# pseudo-class such as :hover. See the spec on The Modifiers Section for
|
4
|
+
# more information.
|
5
|
+
class Modifier
|
6
|
+
|
7
|
+
# Public: Returns the modifier name String.
|
8
|
+
attr_accessor :name
|
9
|
+
|
10
|
+
# Public: Returns the description String for a Modifier.
|
11
|
+
attr_accessor :description
|
12
|
+
|
13
|
+
# Public: Initialize a new Modifier.
|
14
|
+
#
|
15
|
+
# name - The name String of the modifier.
|
16
|
+
# description - The description String of the modifier.
|
17
|
+
def initialize(name, description=nil)
|
18
|
+
@name = name.to_s
|
19
|
+
@description = description
|
20
|
+
end
|
21
|
+
|
22
|
+
# Public: The modifier name as a CSS class. For pseudo-classes, a
|
23
|
+
# generated class name is returned. Useful for generating styleguides.
|
24
|
+
#
|
25
|
+
# Examples
|
26
|
+
#
|
27
|
+
# :hover => "pseudo-class-hover"
|
28
|
+
# sexy-button => "sexy-button"
|
29
|
+
#
|
30
|
+
# Returns a CSS class String.
|
31
|
+
def class_name
|
32
|
+
name.sub('.', ' ').sub(':', ' pseudo-class-').strip
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
data/lib/kss/parser.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
module Kss
|
2
|
+
# Public: The main KSS parser. Takes a directory full of SASS / SCSS / CSS
|
3
|
+
# files and parses the KSS within them.
|
4
|
+
class Parser
|
5
|
+
|
6
|
+
# Public: Initializes a new parser based on a directory of files. Scans
|
7
|
+
# within the directory recursively for any comment blocks that look like
|
8
|
+
# KSS.
|
9
|
+
#
|
10
|
+
# base_path - The path String where style files are located.
|
11
|
+
def initialize(base_path)
|
12
|
+
@sections = {}
|
13
|
+
|
14
|
+
Dir["#{base_path}/**/*.*"].each do |filename|
|
15
|
+
root_node = Sass::SCSS::Parser.new(File.read(filename), filename).parse
|
16
|
+
root_node.children.each do |node|
|
17
|
+
next unless node.is_a? Sass::Tree::CommentNode
|
18
|
+
comment_text = self.class.clean_comments node.value[0]
|
19
|
+
|
20
|
+
if self.class.kss_block? comment_text
|
21
|
+
base_name = File.basename(filename)
|
22
|
+
section = Section.new(comment_text, base_name)
|
23
|
+
@sections[section.section] = section
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Public: Takes a cleaned (no comment syntax like // or /* */) comment
|
30
|
+
# block and determines whether it is a KSS documentation block.
|
31
|
+
#
|
32
|
+
# Returns a boolean indicating whether the block conforms to KSS.
|
33
|
+
def self.kss_block?(cleaned_comment)
|
34
|
+
return false unless cleaned_comment.is_a? String
|
35
|
+
|
36
|
+
possible_reference = cleaned_comment.split("\n\n").last
|
37
|
+
possible_reference =~ /Styleguide \d/i
|
38
|
+
end
|
39
|
+
|
40
|
+
# Takes the raw comment text including comment syntax and strips all
|
41
|
+
# comment syntax and normalizes the indention and whitespace to generate
|
42
|
+
# a clean comment block.
|
43
|
+
#
|
44
|
+
# Returns a claned comment String.
|
45
|
+
def self.clean_comments(text)
|
46
|
+
text.strip!
|
47
|
+
|
48
|
+
# SASS generated comment syntax
|
49
|
+
text.gsub!(/(\/\* )?( \*\/)?/, '') # [/* + space] or [space + */]
|
50
|
+
text.gsub!(/\n\s\* ?/, "\n") # * in front of every line
|
51
|
+
|
52
|
+
# Manual generated comment syntax
|
53
|
+
text.gsub!(/^\/\*/, '') # starting block
|
54
|
+
text.gsub!(/\*\/$/, '') # ending block
|
55
|
+
|
56
|
+
text.strip!
|
57
|
+
text
|
58
|
+
end
|
59
|
+
|
60
|
+
# Finds the Section for a given styleguide reference
|
61
|
+
#
|
62
|
+
# Returns a Section for a reference, or a blank Section if none found.
|
63
|
+
def section(reference)
|
64
|
+
@sections[reference] || Section.new
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
data/lib/kss/section.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
module Kss
|
2
|
+
# Public: Represents a styleguide section. Each section describes one UI
|
3
|
+
# element. A Section can be thought of as the collection of the description,
|
4
|
+
# modifiers, and styleguide reference.
|
5
|
+
class Section
|
6
|
+
|
7
|
+
# Returns the raw comment text for the section, not including comment
|
8
|
+
# syntax (such as // or /* */).
|
9
|
+
attr_reader :raw
|
10
|
+
|
11
|
+
# Public: Returns the filename where this section is found.
|
12
|
+
attr_reader :filename
|
13
|
+
|
14
|
+
# Public: Initialize a new Section
|
15
|
+
#
|
16
|
+
# comment_text - The raw comment String, minus any comment syntax.
|
17
|
+
# filename - The filename as a String.
|
18
|
+
def initialize(comment_text=nil, filename=nil)
|
19
|
+
@raw = comment_text
|
20
|
+
@filename = filename
|
21
|
+
end
|
22
|
+
|
23
|
+
# Splits up the raw comment text into comment sections that represent
|
24
|
+
# description, modifiers, etc.
|
25
|
+
#
|
26
|
+
# Returns an Array of comment Strings.
|
27
|
+
def comment_sections
|
28
|
+
@comment_sections ||= raw ? raw.split("\n\n") : []
|
29
|
+
end
|
30
|
+
|
31
|
+
# Public: The styleguide section for which this comment block references.
|
32
|
+
#
|
33
|
+
# Returns the section reference String (ex: "2.1.8").
|
34
|
+
def section
|
35
|
+
return @section unless @section.nil?
|
36
|
+
|
37
|
+
comment_sections.each do |text|
|
38
|
+
if text =~ /Styleguide \d/i
|
39
|
+
cleaned = text.strip.sub!(/\.$/, '') # Kill trailing period
|
40
|
+
@section = cleaned.match(/Styleguide (.+)/)[1]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
@section
|
45
|
+
end
|
46
|
+
|
47
|
+
# Public: The description section of a styleguide comment block.
|
48
|
+
#
|
49
|
+
# Returns the description String.
|
50
|
+
def description
|
51
|
+
comment_sections.first
|
52
|
+
end
|
53
|
+
|
54
|
+
# Public: The modifiers section of a styleguide comment block.
|
55
|
+
#
|
56
|
+
# Returns an Array of Modifiers.
|
57
|
+
def modifiers
|
58
|
+
last_indent = nil
|
59
|
+
modifiers = []
|
60
|
+
return modifiers unless comment_sections[1]
|
61
|
+
|
62
|
+
comment_sections[1].split("\n").each do |line|
|
63
|
+
next if line.strip.empty?
|
64
|
+
indent = line.scan(/^\s*/)[0].to_s.size
|
65
|
+
|
66
|
+
if last_indent && indent > last_indent
|
67
|
+
modifiers.last.description += line.squeeze(" ")
|
68
|
+
else
|
69
|
+
modifier, desc = line.split(" - ")
|
70
|
+
modifiers << Modifier.new(modifier.strip, desc.strip) if modifier && desc
|
71
|
+
end
|
72
|
+
|
73
|
+
last_indent = indent
|
74
|
+
end
|
75
|
+
|
76
|
+
modifiers
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
data/lib/kss/version.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
/*
|
2
|
+
Your standard form button.
|
3
|
+
|
4
|
+
:hover - Highlights when hovering.
|
5
|
+
:disabled - Dims the button when disabled.
|
6
|
+
.primary - Indicates button is the primary action.
|
7
|
+
.smaller - A little bit smaller now.
|
8
|
+
|
9
|
+
Styleguide 2.1.1.
|
10
|
+
*/
|
11
|
+
button {
|
12
|
+
padding: 5px 15px; }
|
13
|
+
button.primary, button.primary:hover {
|
14
|
+
color: #fff; }
|
15
|
+
button.smaller {
|
16
|
+
font-size: 11px; }
|
17
|
+
button:hover {
|
18
|
+
color: #337797; }
|
19
|
+
button:disabled {
|
20
|
+
opacity: 0.5; }
|
21
|
+
|
22
|
+
|
23
|
+
/*
|
24
|
+
A button suitable for giving stars to someone.
|
25
|
+
|
26
|
+
.star-given - A highlight indicating you've already given a star.
|
27
|
+
.disabled - Dims the button to indicate it cannot be used.
|
28
|
+
|
29
|
+
Styleguide 2.2.1.
|
30
|
+
*/
|
31
|
+
a.button.star {
|
32
|
+
display: inline-block; }
|
33
|
+
a.button.star .star {
|
34
|
+
font-size: 10px; }
|
35
|
+
a.button.star.star-given {
|
36
|
+
color: #ae7e00; }
|
37
|
+
a.button.star.disabled {
|
38
|
+
opacity: 0.5; }
|
@@ -0,0 +1,47 @@
|
|
1
|
+
// Your standard form button.
|
2
|
+
//
|
3
|
+
// :hover - Highlights when hovering.
|
4
|
+
// :disabled - Dims the button when disabled.
|
5
|
+
// .primary - Indicates button is the primary action.
|
6
|
+
// .smaller - A little bit smaller now.
|
7
|
+
//
|
8
|
+
// Styleguide 2.1.1.
|
9
|
+
button{
|
10
|
+
padding:5px 15px;
|
11
|
+
|
12
|
+
&.primary, &.primary:hover{
|
13
|
+
color:#fff;
|
14
|
+
}
|
15
|
+
|
16
|
+
&.smaller{
|
17
|
+
font-size:11px;
|
18
|
+
}
|
19
|
+
|
20
|
+
&:hover{
|
21
|
+
color:#337797;
|
22
|
+
}
|
23
|
+
|
24
|
+
&:disabled{
|
25
|
+
opacity:0.5;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
// A button suitable for giving stars to someone.
|
30
|
+
//
|
31
|
+
// .star-given - A highlight indicating you've already given a star.
|
32
|
+
// .disabled - Dims the button to indicate it cannot be used.
|
33
|
+
//
|
34
|
+
// Styleguide 2.2.1.
|
35
|
+
a.button.star{
|
36
|
+
display:inline-block;
|
37
|
+
|
38
|
+
.star{ font-size:10px; }
|
39
|
+
|
40
|
+
&.star-given{
|
41
|
+
color:#ae7e00;
|
42
|
+
}
|
43
|
+
|
44
|
+
&.disabled{
|
45
|
+
opacity:0.5;
|
46
|
+
}
|
47
|
+
}
|
data/test/helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
|
3
|
+
require 'kss'
|
4
|
+
|
5
|
+
module Kss
|
6
|
+
class Test < ::Test::Unit::TestCase
|
7
|
+
def self.test(name, &block)
|
8
|
+
define_method("test_#{name.gsub(/\W/,'_')}", &block) if block
|
9
|
+
end
|
10
|
+
|
11
|
+
def default_test
|
12
|
+
end
|
13
|
+
|
14
|
+
def fixture(name)
|
15
|
+
@fixtures ||= {}
|
16
|
+
@fixtures[name] ||= File.read("test/fixtures/#{name}")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/test/parser_test.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'test/helper'
|
2
|
+
|
3
|
+
class ParserTest < Kss::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@scss_parsed = Kss::Parser.new('test/fixtures/scss')
|
7
|
+
@css_parsed = Kss::Parser.new('test/fixtures/css')
|
8
|
+
|
9
|
+
@css_comment = <<comment
|
10
|
+
/*
|
11
|
+
A button suitable for giving stars to someone.
|
12
|
+
|
13
|
+
.star-given - A highlight indicating you've already given a star.
|
14
|
+
.disabled - Dims the button to indicate it cannot be used.
|
15
|
+
|
16
|
+
Styleguide 2.2.1.
|
17
|
+
*/
|
18
|
+
comment
|
19
|
+
|
20
|
+
@starred_css_comment = <<comment
|
21
|
+
/* A button suitable for giving stars to someone.
|
22
|
+
*
|
23
|
+
* .star-given - A highlight indicating you've already given a star.
|
24
|
+
* .disabled - Dims the button to indicate it cannot be used.
|
25
|
+
*
|
26
|
+
* Styleguide 2.2.1. */
|
27
|
+
comment
|
28
|
+
|
29
|
+
@cleaned_css_comment = <<comment
|
30
|
+
A button suitable for giving stars to someone.
|
31
|
+
|
32
|
+
.star-given - A highlight indicating you've already given a star.
|
33
|
+
.disabled - Dims the button to indicate it cannot be used.
|
34
|
+
|
35
|
+
Styleguide 2.2.1.
|
36
|
+
comment
|
37
|
+
@cleaned_css_comment.rstrip!
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
test "parses KSS comments in SCSS" do
|
42
|
+
assert_equal 'Your standard form button.',
|
43
|
+
@scss_parsed.section('2.1.1').description
|
44
|
+
end
|
45
|
+
|
46
|
+
test "parses KSS comments in CSS" do
|
47
|
+
assert_equal 'Your standard form button.',
|
48
|
+
@css_parsed.section('2.1.1').description
|
49
|
+
end
|
50
|
+
|
51
|
+
test "cleans css comments" do
|
52
|
+
assert_equal @cleaned_css_comment,
|
53
|
+
Kss::Parser.clean_comments(@css_comment)
|
54
|
+
assert_equal @cleaned_css_comment,
|
55
|
+
Kss::Parser.clean_comments(@starred_css_comment)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'test/helper'
|
2
|
+
|
3
|
+
class SectionTest < Kss::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@comment_text = <<comment
|
7
|
+
Your standard form button.
|
8
|
+
|
9
|
+
:hover - Highlights when hovering.
|
10
|
+
:disabled - Dims the button when disabled.
|
11
|
+
.primary - Indicates button is the primary action.
|
12
|
+
.smaller - A smaller button
|
13
|
+
|
14
|
+
Styleguide 2.1.1.
|
15
|
+
comment
|
16
|
+
|
17
|
+
@section = Kss::Section.new(@comment_text, 'example.css')
|
18
|
+
end
|
19
|
+
|
20
|
+
test "parses the description" do
|
21
|
+
assert_equal "Your standard form button.", @section.description
|
22
|
+
end
|
23
|
+
|
24
|
+
test "parses the modifiers" do
|
25
|
+
assert_equal 4, @section.modifiers.size
|
26
|
+
end
|
27
|
+
|
28
|
+
test "parses a modifier's names" do
|
29
|
+
assert_equal ':hover', @section.modifiers.first.name
|
30
|
+
end
|
31
|
+
|
32
|
+
test "parses a modifier's description" do
|
33
|
+
assert_equal 'Highlights when hovering.', @section.modifiers.first.description
|
34
|
+
end
|
35
|
+
|
36
|
+
test "parses the styleguide reference" do
|
37
|
+
assert_equal '2.1.1', @section.section
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kss
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Kyle Neath
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-12-02 00:00:00 -08:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: sass
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 21
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 1
|
33
|
+
- 11
|
34
|
+
version: 3.1.11
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
description: " Inspired by TomDoc, KSS attempts to provide a methodology for writing\n maintainable, documented CSS within a team. Specifically, KSS is a CSS\n structure, documentation specification, and styleguide format.\n\n This is a ruby library for parsing KSS documented CSS and generating\n styleguides.\n"
|
38
|
+
email: kneath@gmail.com
|
39
|
+
executables: []
|
40
|
+
|
41
|
+
extensions: []
|
42
|
+
|
43
|
+
extra_rdoc_files: []
|
44
|
+
|
45
|
+
files:
|
46
|
+
- README.md
|
47
|
+
- Rakefile
|
48
|
+
- LICENSE
|
49
|
+
- lib/kss/modifier.rb
|
50
|
+
- lib/kss/parser.rb
|
51
|
+
- lib/kss/section.rb
|
52
|
+
- lib/kss/version.rb
|
53
|
+
- lib/kss.rb
|
54
|
+
- test/fixtures/css/buttons.css
|
55
|
+
- test/fixtures/scss/buttons.scss
|
56
|
+
- test/helper.rb
|
57
|
+
- test/parser_test.rb
|
58
|
+
- test/section_test.rb
|
59
|
+
has_rdoc: true
|
60
|
+
homepage: http://github.com/kneath/kss
|
61
|
+
licenses: []
|
62
|
+
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
requirements: []
|
87
|
+
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.6.2
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: A library for parsing KSS documented stylesheets and generating styleguides
|
93
|
+
test_files: []
|
94
|
+
|