coffeelint 0.0.5 → 0.0.6
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 +8 -8
- data/README.md +2 -2
- data/bin/{coffeelint → coffeelint.rb} +0 -0
- data/coffeelint/src/coffeelint.coffee +52 -12
- data/lib/coffeelint/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NWNhOWRlOGVkMDhkMTQwMjFkMTRhYjMwZTQxMTE2MGQxOTkxZjFlMA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTVlMzA1ZTk2OGU5NDNiY2U2YTU3OTc0MTEyMzcyYTAwZDRhZTMxMQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjBmNzVkZjRmMGJlOTRhOWRjMzJjNTJjZWU4MTE4MWQ2ZWUxOGJiNTRkOGUw
|
10
|
+
MDdhODRmYjg3OGU0OTdmMWViYTg5ODEyOWExYTI3ZWUyMjY1YTBiMjk3N2Q0
|
11
|
+
MmViOWQzOTc5MTlkOTJhYzE2M2RmZTE1OGFmMGMzY2YwMWM1NWU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YmViOTViODYyOWMxNDg0YTVhZDAyNmRjMTkzZGI0NDY0ZDk5OGU1NDE4NTQ4
|
14
|
+
ZmExMWUyYTVkZDVjYmRiZGQ5OGM5MzFmOTkyODY5YzExYzA4NTMzMTcwZjNl
|
15
|
+
YTU3YjdhMjMxN2ExZThkNTY4NzhkMDc3MTRhYmUzNjE1NmY4OGY=
|
data/README.md
CHANGED
@@ -45,8 +45,8 @@ Which will run the test on any *.coffee file in your `app` or `spec` directories
|
|
45
45
|
|
46
46
|
Finally, there is a command line utility that allows you to run standalone tests:
|
47
47
|
|
48
|
-
coffeelint <filename>
|
49
|
-
coffeelint -r <directory>
|
48
|
+
coffeelint.rb <filename>
|
49
|
+
coffeelint.rb -r <directory>
|
50
50
|
|
51
51
|
## Contributing
|
52
52
|
|
File without changes
|
@@ -96,6 +96,10 @@ coffeelint.RULES = RULES =
|
|
96
96
|
level : IGNORE
|
97
97
|
message : 'Invoking a constructor without parens and without arguments'
|
98
98
|
|
99
|
+
non_empty_constructor_needs_parens :
|
100
|
+
level : IGNORE
|
101
|
+
message : 'Invoking a constructor without parens and with arguments'
|
102
|
+
|
99
103
|
no_empty_param_list :
|
100
104
|
level : IGNORE
|
101
105
|
message : 'Empty parameter list is forbidden'
|
@@ -121,6 +125,10 @@ coffeelint.RULES = RULES =
|
|
121
125
|
level : IGNORE
|
122
126
|
message : '@ must not be used stand alone'
|
123
127
|
|
128
|
+
arrow_spacing :
|
129
|
+
level : IGNORE
|
130
|
+
message : 'Function arrow (->) must be spaced properly'
|
131
|
+
|
124
132
|
coffeescript_error :
|
125
133
|
level : ERROR
|
126
134
|
message : '' # The default coffeescript error is fine.
|
@@ -402,15 +410,19 @@ class LexicalLinter
|
|
402
410
|
lintToken : (token) ->
|
403
411
|
[type, value, lineNumber] = token
|
404
412
|
|
405
|
-
|
413
|
+
if typeof lineNumber == "object"
|
414
|
+
if type == 'OUTDENT' or type == 'INDENT'
|
415
|
+
lineNumber = lineNumber.last_line
|
416
|
+
else
|
417
|
+
lineNumber = lineNumber.first_line
|
406
418
|
@tokensByLine[lineNumber] ?= []
|
407
419
|
@tokensByLine[lineNumber].push(token)
|
408
420
|
# CoffeeScript loses line numbers of interpolations and multi-line
|
409
421
|
# regexes, so fake it by using the last line number we know.
|
410
422
|
@lineNumber = lineNumber or @lineNumber or 0
|
411
|
-
|
412
423
|
# Now lint it.
|
413
424
|
switch type
|
425
|
+
when "->" then @lintArrowSpacing(token)
|
414
426
|
when "INDENT" then @lintIndentation(token)
|
415
427
|
when "CLASS" then @lintClass(token)
|
416
428
|
when "UNARY" then @lintUnary(token)
|
@@ -430,14 +442,18 @@ class LexicalLinter
|
|
430
442
|
else null
|
431
443
|
|
432
444
|
lintUnary: (token) ->
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
445
|
+
if token[1] is 'new'
|
446
|
+
expectedIdentifier = @peek(1)
|
447
|
+
# The callStart is generated if your parameters are all on the same
|
448
|
+
# line with implicit parens, and if your parameters start on the
|
449
|
+
# next line, but is missing if there are no params and no parens.
|
450
|
+
expectedCallStart = @peek(2)
|
451
|
+
if expectedIdentifier?[0] is 'IDENTIFIER' and expectedCallStart?
|
452
|
+
if expectedCallStart[0] is 'CALL_START'
|
453
|
+
if expectedCallStart.generated
|
454
|
+
@createLexError('non_empty_constructor_needs_parens')
|
455
|
+
else
|
456
|
+
@createLexError('empty_constructor_needs_parens')
|
441
457
|
|
442
458
|
# Lint the given array token.
|
443
459
|
lintArray : (token) ->
|
@@ -673,6 +689,27 @@ class LexicalLinter
|
|
673
689
|
else
|
674
690
|
null
|
675
691
|
|
692
|
+
lintArrowSpacing : (token) ->
|
693
|
+
# Throw error unless the following happens.
|
694
|
+
|
695
|
+
# We will take a look at the previous token to see
|
696
|
+
# 1. That the token is properly spaced
|
697
|
+
# 2. Wasn't generated by the CoffeeScript compiler
|
698
|
+
# 3. That it is just indentation
|
699
|
+
# 4. If the function declaration has no parameters
|
700
|
+
# e.g. x(-> 3)
|
701
|
+
# x( -> 3)
|
702
|
+
# we will accept either having a space or not having a space there.
|
703
|
+
unless (token.spaced? or token.newLine?) and
|
704
|
+
# Throw error unless the previous token...
|
705
|
+
(@peek(-1).spaced? or #1
|
706
|
+
@peek(-1).generated? or #2
|
707
|
+
@peek(-1)[0] is "INDENT" or #3
|
708
|
+
(@peek(-1)[0] is "CALL_START" and not @peek(-1).generated?)) #4
|
709
|
+
@createLexError('arrow_spacing')
|
710
|
+
else
|
711
|
+
null
|
712
|
+
|
676
713
|
createLexError : (rule, attrs = {}) ->
|
677
714
|
attrs.lineNumber = @lineNumber + 1
|
678
715
|
attrs.level = @config[rule].level
|
@@ -768,8 +805,11 @@ class ASTLinter
|
|
768
805
|
|
769
806
|
# Parse the line number
|
770
807
|
lineNumber = -1
|
771
|
-
|
772
|
-
|
808
|
+
if coffeeError.location?
|
809
|
+
lineNumber = coffeeError.location.first_line + 1
|
810
|
+
else
|
811
|
+
match = /line (\d+)/.exec message
|
812
|
+
lineNumber = parseInt match[1], 10 if match?.length > 1
|
773
813
|
attrs = {
|
774
814
|
message: message
|
775
815
|
level: rule.level
|
data/lib/coffeelint/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coffeelint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zachary Bush
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05-
|
11
|
+
date: 2013-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coffee-script
|
@@ -56,7 +56,7 @@ description: Ruby bindings for coffeelint
|
|
56
56
|
email:
|
57
57
|
- zach@zmbush.com
|
58
58
|
executables:
|
59
|
-
- coffeelint
|
59
|
+
- coffeelint.rb
|
60
60
|
extensions: []
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
@@ -66,7 +66,7 @@ files:
|
|
66
66
|
- LICENSE.txt
|
67
67
|
- README.md
|
68
68
|
- Rakefile
|
69
|
-
- bin/coffeelint
|
69
|
+
- bin/coffeelint.rb
|
70
70
|
- coffeelint.gemspec
|
71
71
|
- lib/coffeelint.rb
|
72
72
|
- lib/coffeelint/railtie.rb
|