haml_lint 0.40.0 → 0.41.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.
- checksums.yaml +4 -4
- data/config/default.yml +1 -0
- data/lib/haml_lint/adapter/haml_6.rb +48 -0
- data/lib/haml_lint/adapter.rb +2 -0
- data/lib/haml_lint/ruby_extractor.rb +3 -2
- data/lib/haml_lint/tree/script_node.rb +7 -1
- data/lib/haml_lint/tree/silent_script_node.rb +16 -1
- data/lib/haml_lint/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50f707542a5125e9d359aec64947951bc3ec4dc27b4d96995320c8f2253e6f1a
|
4
|
+
data.tar.gz: b39a5f05253172bf897eb608bc7ccc4445d8fd76b84d38616c7ad53cacc5a276
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa4d026d1b5ee13a4cb3e98dcff7117cba888a84684404166e5df193355978e2514d581ad6d92d7d92f65dfc2f00fc76fe16067ed2d223366b6e64d440ca6788
|
7
|
+
data.tar.gz: b46c4532c31cbd25e57b863b16775bdc496a1e2abad2ef5683dc75ad44f7d8ad13348ed8587e9209896226eea7e36f09c108c41b0da223381cddf9a565a46982
|
data/config/default.yml
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module HamlLint
|
4
|
+
class Adapter
|
5
|
+
# Adapts the Haml::Parser from Haml 5 for use in HamlLint
|
6
|
+
# :reek:UncommunicativeModuleName
|
7
|
+
class Haml6 < Adapter
|
8
|
+
# Parses the specified Haml code into an abstract syntax tree
|
9
|
+
#
|
10
|
+
# @example
|
11
|
+
# HamlLint::Adapter::Haml6.new('%div')
|
12
|
+
#
|
13
|
+
# @api public
|
14
|
+
# @param source [String] Haml code to parse
|
15
|
+
# @param options [private Haml::Parser::ParserOptions]
|
16
|
+
def initialize(source, options = {})
|
17
|
+
@source = source
|
18
|
+
@parser = Haml::Parser.new(options)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Parses the source code into an abstract syntax tree
|
22
|
+
#
|
23
|
+
# @example
|
24
|
+
# HamlLint::Adapter::Haml6.new('%div').parse
|
25
|
+
#
|
26
|
+
# @api public
|
27
|
+
# @return [Haml::Parser::ParseNode]
|
28
|
+
# @raise [Haml::Error]
|
29
|
+
def parse
|
30
|
+
parser.call(source)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
# The Haml parser to adapt for HamlLint
|
36
|
+
#
|
37
|
+
# @api private
|
38
|
+
# @return [Haml::Parser] the Haml 4 parser
|
39
|
+
attr_reader :parser
|
40
|
+
|
41
|
+
# The Haml code to parse
|
42
|
+
#
|
43
|
+
# @api private
|
44
|
+
# @return [String] Haml code to parse
|
45
|
+
attr_reader :source
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/haml_lint/adapter.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'haml_lint/adapter/haml_4'
|
4
4
|
require 'haml_lint/adapter/haml_5'
|
5
|
+
require 'haml_lint/adapter/haml_6'
|
5
6
|
require 'haml_lint/exceptions'
|
6
7
|
|
7
8
|
module HamlLint
|
@@ -20,6 +21,7 @@ module HamlLint
|
|
20
21
|
case version
|
21
22
|
when '~> 4.0' then HamlLint::Adapter::Haml4
|
22
23
|
when '~> 5.0', '~> 5.1', '~> 5.2' then HamlLint::Adapter::Haml5
|
24
|
+
when '~> 6.0', '~> 6.0.a' then HamlLint::Adapter::Haml6
|
23
25
|
else fail HamlLint::Exceptions::UnknownHamlVersion, "Cannot handle Haml version: #{version}"
|
24
26
|
end
|
25
27
|
end
|
@@ -69,12 +69,12 @@ module HamlLint
|
|
69
69
|
# variable" lints)
|
70
70
|
additional_attributes.each do |attributes_code|
|
71
71
|
# Normalize by removing excess whitespace to avoid format lints
|
72
|
-
attributes_code = attributes_code.gsub(/\s*\n\s*/,
|
72
|
+
attributes_code = attributes_code.gsub(/\s*\n\s*/, "\n").strip
|
73
73
|
|
74
74
|
# Attributes can either be a method call or a literal hash, so wrap it
|
75
75
|
# in a method call itself in order to avoid having to differentiate the
|
76
76
|
# two.
|
77
|
-
add_line("{}.merge(#{attributes_code
|
77
|
+
add_line("{}.merge(#{attributes_code})", node)
|
78
78
|
end
|
79
79
|
|
80
80
|
check_tag_static_hash_source(node)
|
@@ -94,6 +94,7 @@ module HamlLint
|
|
94
94
|
|
95
95
|
def visit_script(node)
|
96
96
|
code = node.text
|
97
|
+
|
97
98
|
add_line(code.strip, node)
|
98
99
|
|
99
100
|
start_block = anonymous_block?(code) || start_block_keyword?(code)
|
@@ -9,7 +9,13 @@ module HamlLint::Tree
|
|
9
9
|
#
|
10
10
|
# @return [ParsedRuby] syntax tree in the form returned by Parser gem
|
11
11
|
def parsed_script
|
12
|
-
|
12
|
+
statement =
|
13
|
+
if children.empty?
|
14
|
+
script
|
15
|
+
else
|
16
|
+
"#{script}#{@value[:keyword] == 'case' ? ';when 0;end' : ';end'}"
|
17
|
+
end
|
18
|
+
HamlLint::ParsedRuby.new(HamlLint::RubyParser.new.parse(statement))
|
13
19
|
end
|
14
20
|
|
15
21
|
# Returns the source for the script following the `-` marker.
|
@@ -8,7 +8,22 @@ module HamlLint::Tree
|
|
8
8
|
#
|
9
9
|
# @return [ParsedRuby] syntax tree in the form returned by Parser gem
|
10
10
|
def parsed_script
|
11
|
-
|
11
|
+
statement =
|
12
|
+
case keyword = @value[:keyword]
|
13
|
+
when 'else', 'elsif'
|
14
|
+
'if 0;' + script + ';end'
|
15
|
+
when 'when'
|
16
|
+
'case;' + script + ';end'
|
17
|
+
when 'rescue', 'ensure'
|
18
|
+
'begin;' + script + ';end'
|
19
|
+
else
|
20
|
+
if children.empty?
|
21
|
+
script
|
22
|
+
else
|
23
|
+
"#{script}#{keyword == 'case' ? ';when 0;end' : ';end'}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
HamlLint::ParsedRuby.new(HamlLint::RubyParser.new.parse(statement))
|
12
27
|
end
|
13
28
|
|
14
29
|
# Returns the source for the script following the `-` marker.
|
data/lib/haml_lint/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml_lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.41.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane da Silva
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: haml
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '4.0'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '6.1'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '4.0'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '6.1'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: parallel
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/haml_lint/adapter.rb
|
101
101
|
- lib/haml_lint/adapter/haml_4.rb
|
102
102
|
- lib/haml_lint/adapter/haml_5.rb
|
103
|
+
- lib/haml_lint/adapter/haml_6.rb
|
103
104
|
- lib/haml_lint/cli.rb
|
104
105
|
- lib/haml_lint/comment_configuration.rb
|
105
106
|
- lib/haml_lint/configuration.rb
|