haml_lint 0.52.0 → 0.53.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/lib/haml_lint/adapter.rb +0 -2
- data/lib/haml_lint/ruby_extraction/chunk_extractor.rb +28 -0
- data/lib/haml_lint/version.rb +1 -1
- metadata +8 -9
- data/lib/haml_lint/adapter/haml_4.rb +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49bb0bec15e96c047439560e80f83eaf6f4c3baec24a12b1f10248f1d2f347d3
|
4
|
+
data.tar.gz: 153f65eda76c5751bbae1d02fc49d0d4477f401bb273096ad9308868b9d21288
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4d2c2682e7b12d9aaf8164054f3533c0667f5f6035bfbf5ef6bbb694a40f9a70d9d13a9aa56dabf27131be27e74d346c9eff642a65d0e2aac8992ebc1999fba
|
7
|
+
data.tar.gz: 343aee9ed9bf4a766640aabbbaf96af9a5c36261fb6e6943b9a0b9eadcb5c75bc5a15665cae30c3c4c8925b307ecca837130fb04cf1d14a74549978db235f60c
|
data/lib/haml_lint/adapter.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'haml_lint/adapter/haml_4'
|
4
3
|
require 'haml_lint/adapter/haml_5'
|
5
4
|
require 'haml_lint/adapter/haml_6'
|
6
5
|
require 'haml_lint/exceptions'
|
@@ -19,7 +18,6 @@ module HamlLint
|
|
19
18
|
def self.detect_class
|
20
19
|
version = haml_version
|
21
20
|
case version
|
22
|
-
when '~> 4.0' then HamlLint::Adapter::Haml4
|
23
21
|
when '~> 5.0', '~> 5.1', '~> 5.2' then HamlLint::Adapter::Haml5
|
24
22
|
when '~> 6.0', '~> 6.0.a', '~> 6.1', '~> 6.2', '~> 6.3' then HamlLint::Adapter::Haml6
|
25
23
|
else fail HamlLint::Exceptions::UnknownHamlVersion, "Cannot handle Haml version: #{version}"
|
@@ -84,7 +84,35 @@ module HamlLint::RubyExtraction
|
|
84
84
|
def visit_comment(node)
|
85
85
|
line = @original_haml_lines[node.line - 1]
|
86
86
|
indent = line.index(/\S/)
|
87
|
+
|
87
88
|
@ruby_chunks << PlaceholderMarkerChunk.new(node, 'comment', indent: indent)
|
89
|
+
|
90
|
+
# Comment can have subnodes, such as plain. This happens for conditional comments, such as:
|
91
|
+
# %head
|
92
|
+
# /[if mso]
|
93
|
+
# %div
|
94
|
+
if node.children
|
95
|
+
# We don't want to use a block because assignments in a block are local to that block,
|
96
|
+
# so the semantics of the extracted ruby would be different from the one generated by
|
97
|
+
# Haml. Those differences can make some cops, such as UselessAssignment, have false
|
98
|
+
# positives
|
99
|
+
begin_chunk = AdHocChunk.new(node, [' ' * indent + 'begin'])
|
100
|
+
@ruby_chunks << begin_chunk
|
101
|
+
indent += 2
|
102
|
+
|
103
|
+
yield
|
104
|
+
|
105
|
+
indent -= 2
|
106
|
+
|
107
|
+
if @ruby_chunks.last.equal?(begin_chunk)
|
108
|
+
# So there is nothing nesting, remove the wrapping "begin"
|
109
|
+
@ruby_chunks.pop
|
110
|
+
else
|
111
|
+
@ruby_chunks << AdHocChunk.new(node,
|
112
|
+
[' ' * indent + 'ensure', ' ' * indent + ' HL.noop', ' ' * indent + 'end'],
|
113
|
+
haml_line_index: @ruby_chunks.last.haml_end_line_index)
|
114
|
+
end
|
115
|
+
end
|
88
116
|
end
|
89
117
|
|
90
118
|
# Visit a script which outputs. Lines looking like ` = foo`
|
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.53.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane da Silva
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: haml
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: parallel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,7 +93,6 @@ files:
|
|
93
93
|
- config/forced_rubocop_config.yml
|
94
94
|
- lib/haml_lint.rb
|
95
95
|
- lib/haml_lint/adapter.rb
|
96
|
-
- lib/haml_lint/adapter/haml_4.rb
|
97
96
|
- lib/haml_lint/adapter/haml_5.rb
|
98
97
|
- lib/haml_lint/adapter/haml_6.rb
|
99
98
|
- lib/haml_lint/cli.rb
|
@@ -200,7 +199,7 @@ homepage: https://github.com/sds/haml-lint
|
|
200
199
|
licenses:
|
201
200
|
- MIT
|
202
201
|
metadata: {}
|
203
|
-
post_install_message:
|
202
|
+
post_install_message:
|
204
203
|
rdoc_options: []
|
205
204
|
require_paths:
|
206
205
|
- lib
|
@@ -215,8 +214,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
215
214
|
- !ruby/object:Gem::Version
|
216
215
|
version: '0'
|
217
216
|
requirements: []
|
218
|
-
rubygems_version: 3.1
|
219
|
-
signing_key:
|
217
|
+
rubygems_version: 3.0.3.1
|
218
|
+
signing_key:
|
220
219
|
specification_version: 4
|
221
220
|
summary: HAML lint tool
|
222
221
|
test_files: []
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'forwardable'
|
4
|
-
|
5
|
-
module HamlLint
|
6
|
-
class Adapter
|
7
|
-
# Adapts the Haml::Parser from Haml 4 for use in HamlLint
|
8
|
-
# :reek:UncommunicativeModuleName
|
9
|
-
class Haml4 < Adapter
|
10
|
-
extend Forwardable
|
11
|
-
|
12
|
-
# Parses the specified Haml code into an abstract syntax tree
|
13
|
-
#
|
14
|
-
# @example
|
15
|
-
# HamlLint::Adapter::Haml4.new('%div')
|
16
|
-
#
|
17
|
-
# @api public
|
18
|
-
# @param source [String] Haml code to parse
|
19
|
-
# @param options [Haml::Options]
|
20
|
-
def initialize(source, options = Haml::Options.new)
|
21
|
-
@source = source
|
22
|
-
@parser = Haml::Parser.new(source, options)
|
23
|
-
end
|
24
|
-
|
25
|
-
def precompile
|
26
|
-
# Haml uses the filters as part of precompilation... we don't care about those,
|
27
|
-
# but without this tweak, it would fail on filters that are not loaded.
|
28
|
-
real_defined = Haml::Filters.defined
|
29
|
-
Haml::Filters.instance_variable_set(:@defined, Hash.new { real_defined['plain'] })
|
30
|
-
|
31
|
-
::Haml::Engine.new(source).precompiled
|
32
|
-
ensure
|
33
|
-
Haml::Filters.instance_variable_set(:@defined, real_defined)
|
34
|
-
end
|
35
|
-
|
36
|
-
# @!method
|
37
|
-
# Parses the source code into an abstract syntax tree
|
38
|
-
#
|
39
|
-
# @example
|
40
|
-
# HamlLint::Adapter::Haml4.new('%div')
|
41
|
-
#
|
42
|
-
# @api public
|
43
|
-
# @return [Haml::Parser::ParseNode]
|
44
|
-
# @raise [Haml::Error]
|
45
|
-
def_delegator :parser, :parse
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
# The Haml parser to adapt for HamlLint
|
50
|
-
#
|
51
|
-
# @api private
|
52
|
-
# @return [Haml::Parser] the Haml 4 parser
|
53
|
-
attr_reader :parser
|
54
|
-
|
55
|
-
# The Haml code to parse
|
56
|
-
#
|
57
|
-
# @api private
|
58
|
-
# @return [String] Haml code to parse
|
59
|
-
attr_reader :source
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|