suspiciouss 0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/.rspec +1 -0
- data/Gemfile +3 -0
- data/Guardfile +3 -0
- data/LICENSE +22 -0
- data/README.md +41 -0
- data/Rakefile +5 -0
- data/bin/suspiciouss +5 -0
- data/lib/suspiciouss/linter.rb +85 -0
- data/lib/suspiciouss/result/formatter.rb +22 -0
- data/lib/suspiciouss/result/markdown.rb +22 -0
- data/lib/suspiciouss/result/plain_text.rb +20 -0
- data/lib/suspiciouss/suggestions/camel_case.rb +10 -0
- data/lib/suspiciouss/suggestions/indentation.rb +10 -0
- data/lib/suspiciouss/suggestions/overqualifying.rb +10 -0
- data/lib/suspiciouss/suggestions/styling_ids.rb +10 -0
- data/lib/suspiciouss/suggestions/styling_js_prefix.rb +10 -0
- data/lib/suspiciouss/suggestions/underscores.rb +10 -0
- data/lib/suspiciouss/suggestions/zero_units.rb +10 -0
- data/lib/suspiciouss/version.rb +3 -0
- data/lib/suspiciouss.rb +2 -0
- data/spec/fixtures/changeset.diff +39 -0
- data/spec/fixtures/result.md +19 -0
- data/spec/fixtures/result.txt +11 -0
- data/spec/linter_spec.rb +28 -0
- data/spec/result/markdown_spec.rb +13 -0
- data/spec/result/plain_text_spec.rb +13 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/suggestions/camel_case_spec.rb +21 -0
- data/spec/suggestions/indentation_spec.rb +21 -0
- data/spec/suggestions/overqualifying_spec.rb +23 -0
- data/spec/suggestions/styling_ids_spec.rb +21 -0
- data/spec/suggestions/styling_js_prefix_spec.rb +21 -0
- data/spec/suggestions/underscores_spec.rb +21 -0
- data/spec/suggestions/zero_units_spec.rb +21 -0
- data/suspiciouss.gemspec +23 -0
- metadata +164 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5320a8d5092b9ddf367b0b82799b4e296d8c0f50
|
4
|
+
data.tar.gz: 39b11fc1009e5d25b2538379d8081c8e7642c606
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7ec8f4021e8d3e2e69a0ab4a0029fe1a4d6d58e8501000ecb449bb8277be9fbff54124c8137b4df4a7682ec06dc673c6d19b08518eca2b87a577660449983d9c
|
7
|
+
data.tar.gz: 88624cfcb3b14ae0f1fd2e329bd6dfe40af099ef88ee64fce4992623523f8d1b498dc48ac4318791c358305550e82cb44f055cd6708ec7d63be324bb1d348e3d
|
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
-c
|
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Daniel Cruz Horts
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# suspiCiouSS
|
2
|
+
|
3
|
+
Suspiciouss is a CSS/Sass/Less linter that will provide you a report of common minor errors in your CSS development.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
You can use it from the command line:
|
8
|
+
|
9
|
+
```bash
|
10
|
+
git diff | suspiciouss
|
11
|
+
```
|
12
|
+
|
13
|
+
Or you can use it in your Ruby code:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
require 'suspiciouss'
|
17
|
+
Suspiciouss::Linter.new.process(your_git_diff_as_text)
|
18
|
+
```
|
19
|
+
|
20
|
+
## What is going to report?
|
21
|
+
|
22
|
+
You will be warned about the following issues in your code:
|
23
|
+
|
24
|
+
- camel case selectors
|
25
|
+
- excessive indentation
|
26
|
+
- overqualified element selectors
|
27
|
+
- styling #id selectors
|
28
|
+
- styling js prefixed selectors
|
29
|
+
- underscores in selectors
|
30
|
+
- property with units if value is 0
|
31
|
+
|
32
|
+
The report will be as text or markdown, depending if you got provided a command line input or was used programatically.
|
33
|
+
|
34
|
+
## Contribute
|
35
|
+
|
36
|
+
- Fork it
|
37
|
+
- Write your feature with a test
|
38
|
+
- Issue a pull request
|
39
|
+
- ...
|
40
|
+
- Profit!
|
41
|
+
|
data/Rakefile
ADDED
data/bin/suspiciouss
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'suspiciouss/suggestions/camel_case'
|
2
|
+
require 'suspiciouss/suggestions/indentation'
|
3
|
+
require 'suspiciouss/suggestions/overqualifying'
|
4
|
+
require 'suspiciouss/suggestions/styling_ids'
|
5
|
+
require 'suspiciouss/suggestions/styling_js_prefix'
|
6
|
+
require 'suspiciouss/suggestions/underscores'
|
7
|
+
require 'suspiciouss/suggestions/zero_units'
|
8
|
+
require 'suspiciouss/result/markdown'
|
9
|
+
require 'suspiciouss/result/plain_text'
|
10
|
+
|
11
|
+
module Suspiciouss
|
12
|
+
class Linter
|
13
|
+
|
14
|
+
KNOWN_FILETYPES = /(css|sass|scss|less)$/
|
15
|
+
SUGGESTIONS = Suspiciouss::Suggestions
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@result = Hash.new { |hash, key| hash[key] = [] }
|
19
|
+
end
|
20
|
+
|
21
|
+
# Process a diff file and return the result.
|
22
|
+
# It will read the input sequentially from a string or standard input.
|
23
|
+
def process(input = nil)
|
24
|
+
if input.nil?
|
25
|
+
input = STDIN
|
26
|
+
end
|
27
|
+
|
28
|
+
input.each_line do |line|
|
29
|
+
detect_filename_in line
|
30
|
+
parse line if @filename
|
31
|
+
end
|
32
|
+
|
33
|
+
if input.is_a? IO
|
34
|
+
puts result_as(Suspiciouss::Result::PlainText)
|
35
|
+
else
|
36
|
+
result_as(Suspiciouss::Result::Markdown)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
# Detects if the diff block references a known file type
|
43
|
+
def detect_filename_in(full_line)
|
44
|
+
line_might_contain_filename = full_line.scan(/^\+\+\+ b(.+)$/)
|
45
|
+
|
46
|
+
return if line_might_contain_filename.empty?
|
47
|
+
@filename = line_might_contain_filename.first.first
|
48
|
+
|
49
|
+
if @filename !~ KNOWN_FILETYPES
|
50
|
+
@filename = nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Parses a line with each of the known suggestions and adds the result
|
55
|
+
# to the final output.
|
56
|
+
def parse(full_line)
|
57
|
+
@line = strip_diff_syntax full_line
|
58
|
+
|
59
|
+
return unless full_line =~ /^\+ /
|
60
|
+
|
61
|
+
known_suggestions.each do |suggestion|
|
62
|
+
if result = suggestion.parse(@line)
|
63
|
+
@result[@filename] << "#{result}: #{@line}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Renders the result using the specified formatter
|
69
|
+
def result_as(formatter)
|
70
|
+
formatter.new(@result).format
|
71
|
+
end
|
72
|
+
|
73
|
+
# Memoizes available suggestions in an array
|
74
|
+
def known_suggestions
|
75
|
+
@known_suggestions ||= SUGGESTIONS.constants.map do |suggestion_class|
|
76
|
+
SUGGESTIONS.const_get(suggestion_class).new
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Returns a line without the "+ " added by diff
|
81
|
+
def strip_diff_syntax(line)
|
82
|
+
line[2..-1]
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Suspiciouss
|
2
|
+
module Result
|
3
|
+
class Formatter
|
4
|
+
|
5
|
+
def initialize(result)
|
6
|
+
@result = result
|
7
|
+
end
|
8
|
+
|
9
|
+
def output
|
10
|
+
output = ''
|
11
|
+
|
12
|
+
@result.each do |filename, errors|
|
13
|
+
unless errors.empty?
|
14
|
+
output << yield(filename, errors)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
output
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'suspiciouss/result/formatter'
|
2
|
+
|
3
|
+
module Suspiciouss
|
4
|
+
module Result
|
5
|
+
class Markdown < Formatter
|
6
|
+
|
7
|
+
def format
|
8
|
+
output do |filename, errors|
|
9
|
+
''.tap do |filename_errors|
|
10
|
+
filename_errors << " - Check file #{filename} for:\n"
|
11
|
+
|
12
|
+
filename_errors << "```\n"
|
13
|
+
errors.each do |error|
|
14
|
+
filename_errors << error
|
15
|
+
end
|
16
|
+
filename_errors << "```\n"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'suspiciouss/result/formatter'
|
2
|
+
|
3
|
+
module Suspiciouss
|
4
|
+
module Result
|
5
|
+
class PlainText < Formatter
|
6
|
+
|
7
|
+
def format
|
8
|
+
output do |filename, errors|
|
9
|
+
filename_errors = "Check file #{filename} for:\n"
|
10
|
+
|
11
|
+
errors.each do |error|
|
12
|
+
filename_errors << " #{error.strip}\n"
|
13
|
+
end
|
14
|
+
|
15
|
+
filename_errors
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/suspiciouss.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
--- a/path/to/file.css
|
2
|
+
+++ b/path/to/file.css
|
3
|
+
|
4
|
+
|
5
|
+
+ #please-dont {color: #FFF;}
|
6
|
+
|
7
|
+
|
8
|
+
--- a/path/to/file.sass
|
9
|
+
+++ b/path/to/file.sass
|
10
|
+
|
11
|
+
|
12
|
+
+ #pleaseDont
|
13
|
+
+ color: $black
|
14
|
+
|
15
|
+
|
16
|
+
--- a/path/to/file.less
|
17
|
+
+++ b/path/to/file.less
|
18
|
+
|
19
|
+
|
20
|
+
+ #pleaseDont {
|
21
|
+
+ color: @black;
|
22
|
+
+ }
|
23
|
+
|
24
|
+
|
25
|
+
--- a/path/to/file.scss
|
26
|
+
+++ b/path/to/file.scss
|
27
|
+
|
28
|
+
|
29
|
+
+ #pleaseDont {
|
30
|
+
+ color: $black;
|
31
|
+
+ }
|
32
|
+
|
33
|
+
|
34
|
+
--- a/path/to/file.txt
|
35
|
+
+++ b/path/to/file.txt
|
36
|
+
|
37
|
+
|
38
|
+
+ #undetectable {color: #000;}
|
39
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
- Check file /path/to/file.css for:
|
2
|
+
```
|
3
|
+
Don't style IDs: #please-dont {color: #FFF;}
|
4
|
+
```
|
5
|
+
- Check file /path/to/file.sass for:
|
6
|
+
```
|
7
|
+
Don't use camelCase: #pleaseDont
|
8
|
+
Don't style IDs: #pleaseDont
|
9
|
+
```
|
10
|
+
- Check file /path/to/file.less for:
|
11
|
+
```
|
12
|
+
Don't use camelCase: #pleaseDont {
|
13
|
+
Don't style IDs: #pleaseDont {
|
14
|
+
```
|
15
|
+
- Check file /path/to/file.scss for:
|
16
|
+
```
|
17
|
+
Don't use camelCase: #pleaseDont {
|
18
|
+
Don't style IDs: #pleaseDont {
|
19
|
+
```
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Check file /path/to/file.css for:
|
2
|
+
Don't style IDs: #please-dont {color: #FFF;}
|
3
|
+
Check file /path/to/file.sass for:
|
4
|
+
Don't use camelCase: #pleaseDont
|
5
|
+
Don't style IDs: #pleaseDont
|
6
|
+
Check file /path/to/file.less for:
|
7
|
+
Don't use camelCase: #pleaseDont {
|
8
|
+
Don't style IDs: #pleaseDont {
|
9
|
+
Check file /path/to/file.scss for:
|
10
|
+
Don't use camelCase: #pleaseDont {
|
11
|
+
Don't style IDs: #pleaseDont {
|
data/spec/linter_spec.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Linter do
|
4
|
+
|
5
|
+
let(:diff) { 'spec/fixtures/changeset.diff' }
|
6
|
+
|
7
|
+
describe '#process' do
|
8
|
+
|
9
|
+
context 'input as parameter' do
|
10
|
+
|
11
|
+
let(:input) { File.open(diff, 'r').read }
|
12
|
+
let(:output) { File.open('spec/fixtures/result.md', 'r').read }
|
13
|
+
|
14
|
+
subject { described_class.new.process(input) }
|
15
|
+
|
16
|
+
it { expect(subject).to eq output }
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'input from standard input' do
|
20
|
+
|
21
|
+
let(:output) { File.open('spec/fixtures/result.txt', 'r').read }
|
22
|
+
|
23
|
+
subject { `cat #{diff} | bin/suspiciouss` }
|
24
|
+
|
25
|
+
it { expect(subject).to eq output }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Result::Markdown do
|
4
|
+
|
5
|
+
let(:result) { {'filename.css' => ['error1']} }
|
6
|
+
|
7
|
+
subject { described_class.new(result).format }
|
8
|
+
|
9
|
+
describe '#format' do
|
10
|
+
|
11
|
+
it { expect(subject).to eq " - Check file filename.css for:\n```\nerror1```\n" }
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Result::PlainText do
|
4
|
+
|
5
|
+
let(:result) { {'filename.css' => ['error1']} }
|
6
|
+
|
7
|
+
subject { described_class.new(result).format }
|
8
|
+
|
9
|
+
describe '#format' do
|
10
|
+
|
11
|
+
it { expect(subject).to eq "Check file filename.css for:\n error1\n" }
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Suggestions::CamelCase do
|
4
|
+
|
5
|
+
subject { described_class.new.parse(line) }
|
6
|
+
|
7
|
+
describe '#parse' do
|
8
|
+
|
9
|
+
context 'invalid' do
|
10
|
+
let(:line) { '.pleaseDont {color: #000;}' }
|
11
|
+
|
12
|
+
it { should eq "Don't use camelCase" }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'valid' do
|
16
|
+
let(:line) { '.valid-selector {color: #FFF;}' }
|
17
|
+
|
18
|
+
it { should be_nil }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Suggestions::Indentation do
|
4
|
+
|
5
|
+
subject { described_class.new.parse(line) }
|
6
|
+
|
7
|
+
describe '#parse' do
|
8
|
+
|
9
|
+
context 'invalid' do
|
10
|
+
let(:line) { ' .please-dont {}' }
|
11
|
+
|
12
|
+
it { should eq "Indentation is too damn high" }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'valid' do
|
16
|
+
let(:line) { ' .thank-you {}' }
|
17
|
+
|
18
|
+
it { should be_nil }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Suggestions::Overqualifying do
|
4
|
+
|
5
|
+
describe '#parse' do
|
6
|
+
|
7
|
+
context 'invalid' do
|
8
|
+
let(:result) { "Don't overqualify your selectors" }
|
9
|
+
|
10
|
+
it { expect(subject.parse('div.nay {}')).to eq result }
|
11
|
+
it { expect(subject.parse('label.nay {}')).to eq result }
|
12
|
+
it { expect(subject.parse('a.nay {}')).to eq result }
|
13
|
+
it { expect(subject.parse('input.nay {}')).to eq result }
|
14
|
+
it { expect(subject.parse('span.nay {}')).to eq result }
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'valid' do
|
18
|
+
let(:line) { '.yea {}' }
|
19
|
+
|
20
|
+
it { expect(subject.parse(line)).to be_nil }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Suggestions::StylingIds do
|
4
|
+
|
5
|
+
subject { described_class.new.parse(line) }
|
6
|
+
|
7
|
+
describe '#parse' do
|
8
|
+
|
9
|
+
context 'invalid' do
|
10
|
+
let(:line) { '#please-dont {}' }
|
11
|
+
|
12
|
+
it { should eq "Don't style IDs" }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'valid' do
|
16
|
+
let(:line) { ' > thanks {}' }
|
17
|
+
|
18
|
+
it { should be_nil }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Suggestions::StylingJsPrefix do
|
4
|
+
|
5
|
+
subject { described_class.new.parse(line) }
|
6
|
+
|
7
|
+
describe '#parse' do
|
8
|
+
|
9
|
+
context 'invalid' do
|
10
|
+
let(:line) { '.js-tight-coupling {}' }
|
11
|
+
|
12
|
+
it { should eq "Don't style js- prefixed selectors" }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'valid' do
|
16
|
+
let(:line) { '.selector {}' }
|
17
|
+
|
18
|
+
it { should be_nil }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Suggestions::Underscores do
|
4
|
+
|
5
|
+
subject { described_class.new.parse(line) }
|
6
|
+
|
7
|
+
describe '#parse' do
|
8
|
+
|
9
|
+
context 'invalid' do
|
10
|
+
let(:line) { '.please_dont {}' }
|
11
|
+
|
12
|
+
it { should eq "Don't use underscores when naming classes" }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'valid' do
|
16
|
+
let(:line) { '.valid-selector {}' }
|
17
|
+
|
18
|
+
it { should be_nil }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suspiciouss::Suggestions::ZeroUnits do
|
4
|
+
|
5
|
+
subject { described_class.new.parse(line) }
|
6
|
+
|
7
|
+
describe '#parse' do
|
8
|
+
|
9
|
+
context 'invalid' do
|
10
|
+
let(:line) { '.selector {margin: 0px;}' }
|
11
|
+
|
12
|
+
it { should eq "Don't add the unit if zero" }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'valid' do
|
16
|
+
let(:line) { '.selector {margin: 0;}' }
|
17
|
+
|
18
|
+
it { should be_nil }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/suspiciouss.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'suspiciouss/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = 'suspiciouss'
|
7
|
+
gem.version = Suspiciouss::VERSION
|
8
|
+
gem.authors = ['Daniel Cruz Horts']
|
9
|
+
gem.summary = 'Reports common CSS/Sass/Less errors'
|
10
|
+
gem.homepage = 'https://github.com/dncrht/suspiciouss'
|
11
|
+
gem.license = 'MIT'
|
12
|
+
|
13
|
+
gem.files = `git ls-files`.split($/)
|
14
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
15
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
16
|
+
gem.require_paths = ['lib']
|
17
|
+
|
18
|
+
gem.add_development_dependency 'rspec', '~> 2.12'
|
19
|
+
gem.add_development_dependency 'pry'
|
20
|
+
gem.add_development_dependency 'pry-debugger'
|
21
|
+
gem.add_development_dependency 'guard'
|
22
|
+
gem.add_development_dependency 'guard-rspec'
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,164 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: suspiciouss
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daniel Cruz Horts
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.12'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry-debugger
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description:
|
84
|
+
email:
|
85
|
+
executables:
|
86
|
+
- suspiciouss
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- .gitignore
|
91
|
+
- .rspec
|
92
|
+
- Gemfile
|
93
|
+
- Guardfile
|
94
|
+
- LICENSE
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- bin/suspiciouss
|
98
|
+
- lib/suspiciouss.rb
|
99
|
+
- lib/suspiciouss/linter.rb
|
100
|
+
- lib/suspiciouss/result/formatter.rb
|
101
|
+
- lib/suspiciouss/result/markdown.rb
|
102
|
+
- lib/suspiciouss/result/plain_text.rb
|
103
|
+
- lib/suspiciouss/suggestions/camel_case.rb
|
104
|
+
- lib/suspiciouss/suggestions/indentation.rb
|
105
|
+
- lib/suspiciouss/suggestions/overqualifying.rb
|
106
|
+
- lib/suspiciouss/suggestions/styling_ids.rb
|
107
|
+
- lib/suspiciouss/suggestions/styling_js_prefix.rb
|
108
|
+
- lib/suspiciouss/suggestions/underscores.rb
|
109
|
+
- lib/suspiciouss/suggestions/zero_units.rb
|
110
|
+
- lib/suspiciouss/version.rb
|
111
|
+
- spec/fixtures/changeset.diff
|
112
|
+
- spec/fixtures/result.md
|
113
|
+
- spec/fixtures/result.txt
|
114
|
+
- spec/linter_spec.rb
|
115
|
+
- spec/result/markdown_spec.rb
|
116
|
+
- spec/result/plain_text_spec.rb
|
117
|
+
- spec/spec_helper.rb
|
118
|
+
- spec/suggestions/camel_case_spec.rb
|
119
|
+
- spec/suggestions/indentation_spec.rb
|
120
|
+
- spec/suggestions/overqualifying_spec.rb
|
121
|
+
- spec/suggestions/styling_ids_spec.rb
|
122
|
+
- spec/suggestions/styling_js_prefix_spec.rb
|
123
|
+
- spec/suggestions/underscores_spec.rb
|
124
|
+
- spec/suggestions/zero_units_spec.rb
|
125
|
+
- suspiciouss.gemspec
|
126
|
+
homepage: https://github.com/dncrht/suspiciouss
|
127
|
+
licenses:
|
128
|
+
- MIT
|
129
|
+
metadata: {}
|
130
|
+
post_install_message:
|
131
|
+
rdoc_options: []
|
132
|
+
require_paths:
|
133
|
+
- lib
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
requirements: []
|
145
|
+
rubyforge_project:
|
146
|
+
rubygems_version: 2.0.2
|
147
|
+
signing_key:
|
148
|
+
specification_version: 4
|
149
|
+
summary: Reports common CSS/Sass/Less errors
|
150
|
+
test_files:
|
151
|
+
- spec/fixtures/changeset.diff
|
152
|
+
- spec/fixtures/result.md
|
153
|
+
- spec/fixtures/result.txt
|
154
|
+
- spec/linter_spec.rb
|
155
|
+
- spec/result/markdown_spec.rb
|
156
|
+
- spec/result/plain_text_spec.rb
|
157
|
+
- spec/spec_helper.rb
|
158
|
+
- spec/suggestions/camel_case_spec.rb
|
159
|
+
- spec/suggestions/indentation_spec.rb
|
160
|
+
- spec/suggestions/overqualifying_spec.rb
|
161
|
+
- spec/suggestions/styling_ids_spec.rb
|
162
|
+
- spec/suggestions/styling_js_prefix_spec.rb
|
163
|
+
- spec/suggestions/underscores_spec.rb
|
164
|
+
- spec/suggestions/zero_units_spec.rb
|