theme-check 0.8.3 → 0.10.2
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/.github/workflows/theme-check.yml +3 -0
- data/CHANGELOG.md +38 -0
- data/CONTRIBUTING.md +20 -90
- data/README.md +4 -1
- data/Rakefile +31 -0
- data/config/default.yml +49 -0
- data/docs/api/check.md +15 -0
- data/docs/api/html_check.md +46 -0
- data/docs/api/json_check.md +19 -0
- data/docs/api/liquid_check.md +99 -0
- data/docs/checks/{CHECK_DOCS_TEMPLATE.md → TEMPLATE.md.erb} +5 -5
- data/docs/checks/asset_url_filters.md +56 -0
- data/docs/checks/content_for_header_modification.md +42 -0
- data/docs/checks/html_parsing_error.md +50 -0
- data/docs/checks/img_lazy_loading.md +61 -0
- data/docs/checks/parser_blocking_script_tag.md +53 -0
- data/exe/theme-check-language-server +1 -2
- data/lib/theme_check.rb +8 -1
- data/lib/theme_check/analyzer.rb +72 -16
- data/lib/theme_check/check.rb +32 -7
- data/lib/theme_check/checks.rb +9 -1
- data/lib/theme_check/checks/TEMPLATE.rb.erb +11 -0
- data/lib/theme_check/checks/asset_url_filters.rb +46 -0
- data/lib/theme_check/checks/content_for_header_modification.rb +41 -0
- data/lib/theme_check/checks/html_parsing_error.rb +12 -0
- data/lib/theme_check/checks/img_lazy_loading.rb +25 -0
- data/lib/theme_check/checks/img_width_and_height.rb +18 -49
- data/lib/theme_check/checks/missing_template.rb +1 -0
- data/lib/theme_check/checks/parser_blocking_javascript.rb +6 -38
- data/lib/theme_check/checks/parser_blocking_script_tag.rb +20 -0
- data/lib/theme_check/checks/remote_asset.rb +21 -79
- data/lib/theme_check/checks/template_length.rb +3 -0
- data/lib/theme_check/checks/valid_html_translation.rb +1 -0
- data/lib/theme_check/config.rb +2 -0
- data/lib/theme_check/disabled_check.rb +6 -4
- data/lib/theme_check/disabled_checks.rb +25 -9
- data/lib/theme_check/html_check.rb +7 -0
- data/lib/theme_check/html_node.rb +56 -0
- data/lib/theme_check/html_visitor.rb +40 -0
- data/lib/theme_check/json_file.rb +13 -0
- data/lib/theme_check/language_server.rb +1 -0
- data/lib/theme_check/language_server/completion_providers/filter_completion_provider.rb +1 -0
- data/lib/theme_check/language_server/diagnostics_tracker.rb +66 -0
- data/lib/theme_check/language_server/handler.rb +31 -26
- data/lib/theme_check/language_server/server.rb +1 -1
- data/lib/theme_check/liquid_check.rb +1 -4
- data/lib/theme_check/offense.rb +18 -0
- data/lib/theme_check/template.rb +9 -0
- data/lib/theme_check/theme.rb +7 -2
- data/lib/theme_check/version.rb +1 -1
- data/lib/theme_check/visitor.rb +2 -11
- metadata +22 -3
data/lib/theme_check/offense.rb
CHANGED
@@ -114,6 +114,24 @@ module ThemeCheck
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
|
+
def whole_theme?
|
118
|
+
check.whole_theme?
|
119
|
+
end
|
120
|
+
|
121
|
+
def single_file?
|
122
|
+
check.single_file?
|
123
|
+
end
|
124
|
+
|
125
|
+
def ==(other)
|
126
|
+
other.is_a?(Offense) &&
|
127
|
+
code_name == other.code_name &&
|
128
|
+
message == other.message &&
|
129
|
+
location == other.location &&
|
130
|
+
start_index == other.start_index &&
|
131
|
+
end_index == other.end_index
|
132
|
+
end
|
133
|
+
alias_method :eql?, :==
|
134
|
+
|
117
135
|
def to_s
|
118
136
|
if template
|
119
137
|
"#{message} at #{location}"
|
data/lib/theme_check/template.rb
CHANGED
@@ -32,6 +32,14 @@ module ThemeCheck
|
|
32
32
|
relative_path.sub_ext('').to_s
|
33
33
|
end
|
34
34
|
|
35
|
+
def json?
|
36
|
+
false
|
37
|
+
end
|
38
|
+
|
39
|
+
def liquid?
|
40
|
+
true
|
41
|
+
end
|
42
|
+
|
35
43
|
def template?
|
36
44
|
name.start_with?('templates')
|
37
45
|
end
|
@@ -83,6 +91,7 @@ module ThemeCheck
|
|
83
91
|
def ==(other)
|
84
92
|
other.is_a?(Template) && relative_path == other.relative_path
|
85
93
|
end
|
94
|
+
alias_method :eql?, :==
|
86
95
|
|
87
96
|
def self.parse(source)
|
88
97
|
Liquid::Template.parse(
|
data/lib/theme_check/theme.rb
CHANGED
@@ -52,8 +52,13 @@ module ThemeCheck
|
|
52
52
|
@all ||= json + liquid + assets
|
53
53
|
end
|
54
54
|
|
55
|
-
def [](
|
56
|
-
|
55
|
+
def [](name_or_relative_path)
|
56
|
+
case name_or_relative_path
|
57
|
+
when Pathname
|
58
|
+
all.find { |t| t.relative_path == name_or_relative_path }
|
59
|
+
else
|
60
|
+
all.find { |t| t.name == name_or_relative_path }
|
61
|
+
end
|
57
62
|
end
|
58
63
|
|
59
64
|
def templates
|
data/lib/theme_check/version.rb
CHANGED
data/lib/theme_check/visitor.rb
CHANGED
@@ -3,14 +3,13 @@ module ThemeCheck
|
|
3
3
|
class Visitor
|
4
4
|
attr_reader :checks
|
5
5
|
|
6
|
-
def initialize(checks)
|
6
|
+
def initialize(checks, disabled_checks)
|
7
7
|
@checks = checks
|
8
|
+
@disabled_checks = disabled_checks
|
8
9
|
end
|
9
10
|
|
10
11
|
def visit_template(template)
|
11
|
-
@disabled_checks = DisabledChecks.new
|
12
12
|
visit(Node.new(template.root, nil, template))
|
13
|
-
remove_disabled_offenses
|
14
13
|
rescue Liquid::Error => exception
|
15
14
|
exception.template_name = template.name
|
16
15
|
call_checks(:on_error, exception)
|
@@ -35,13 +34,5 @@ module ThemeCheck
|
|
35
34
|
def call_checks(method, *args)
|
36
35
|
checks.call(method, *args)
|
37
36
|
end
|
38
|
-
|
39
|
-
def remove_disabled_offenses
|
40
|
-
checks.disableable.each do |check|
|
41
|
-
check.offenses.reject! do |offense|
|
42
|
-
@disabled_checks.disabled?(offense.code_name, offense.start_index)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
37
|
end
|
47
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: theme-check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc-André Cournoyer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: liquid
|
@@ -69,12 +69,20 @@ files:
|
|
69
69
|
- data/shopify_liquid/tags.yml
|
70
70
|
- data/shopify_translation_keys.yml
|
71
71
|
- dev.yml
|
72
|
-
- docs/
|
72
|
+
- docs/api/check.md
|
73
|
+
- docs/api/html_check.md
|
74
|
+
- docs/api/json_check.md
|
75
|
+
- docs/api/liquid_check.md
|
76
|
+
- docs/checks/TEMPLATE.md.erb
|
73
77
|
- docs/checks/asset_size_css.md
|
74
78
|
- docs/checks/asset_size_javascript.md
|
79
|
+
- docs/checks/asset_url_filters.md
|
80
|
+
- docs/checks/content_for_header_modification.md
|
75
81
|
- docs/checks/convert_include_to_render.md
|
76
82
|
- docs/checks/default_locale.md
|
77
83
|
- docs/checks/deprecated_filter.md
|
84
|
+
- docs/checks/html_parsing_error.md
|
85
|
+
- docs/checks/img_lazy_loading.md
|
78
86
|
- docs/checks/img_width_and_height.md
|
79
87
|
- docs/checks/liquid_tag.md
|
80
88
|
- docs/checks/matching_schema_translations.md
|
@@ -84,6 +92,7 @@ files:
|
|
84
92
|
- docs/checks/missing_template.md
|
85
93
|
- docs/checks/nested_snippet.md
|
86
94
|
- docs/checks/parser_blocking_javascript.md
|
95
|
+
- docs/checks/parser_blocking_script_tag.md
|
87
96
|
- docs/checks/remote_asset.md
|
88
97
|
- docs/checks/required_directories.md
|
89
98
|
- docs/checks/required_layout_theme_object.md
|
@@ -107,11 +116,16 @@ files:
|
|
107
116
|
- lib/theme_check/bug.rb
|
108
117
|
- lib/theme_check/check.rb
|
109
118
|
- lib/theme_check/checks.rb
|
119
|
+
- lib/theme_check/checks/TEMPLATE.rb.erb
|
110
120
|
- lib/theme_check/checks/asset_size_css.rb
|
111
121
|
- lib/theme_check/checks/asset_size_javascript.rb
|
122
|
+
- lib/theme_check/checks/asset_url_filters.rb
|
123
|
+
- lib/theme_check/checks/content_for_header_modification.rb
|
112
124
|
- lib/theme_check/checks/convert_include_to_render.rb
|
113
125
|
- lib/theme_check/checks/default_locale.rb
|
114
126
|
- lib/theme_check/checks/deprecated_filter.rb
|
127
|
+
- lib/theme_check/checks/html_parsing_error.rb
|
128
|
+
- lib/theme_check/checks/img_lazy_loading.rb
|
115
129
|
- lib/theme_check/checks/img_width_and_height.rb
|
116
130
|
- lib/theme_check/checks/liquid_tag.rb
|
117
131
|
- lib/theme_check/checks/matching_schema_translations.rb
|
@@ -121,6 +135,7 @@ files:
|
|
121
135
|
- lib/theme_check/checks/missing_template.rb
|
122
136
|
- lib/theme_check/checks/nested_snippet.rb
|
123
137
|
- lib/theme_check/checks/parser_blocking_javascript.rb
|
138
|
+
- lib/theme_check/checks/parser_blocking_script_tag.rb
|
124
139
|
- lib/theme_check/checks/remote_asset.rb
|
125
140
|
- lib/theme_check/checks/required_directories.rb
|
126
141
|
- lib/theme_check/checks/required_layout_theme_object.rb
|
@@ -143,6 +158,9 @@ files:
|
|
143
158
|
- lib/theme_check/disabled_checks.rb
|
144
159
|
- lib/theme_check/exceptions.rb
|
145
160
|
- lib/theme_check/file_system_storage.rb
|
161
|
+
- lib/theme_check/html_check.rb
|
162
|
+
- lib/theme_check/html_node.rb
|
163
|
+
- lib/theme_check/html_visitor.rb
|
146
164
|
- lib/theme_check/in_memory_storage.rb
|
147
165
|
- lib/theme_check/json_check.rb
|
148
166
|
- lib/theme_check/json_file.rb
|
@@ -156,6 +174,7 @@ files:
|
|
156
174
|
- lib/theme_check/language_server/completion_providers/render_snippet_completion_provider.rb
|
157
175
|
- lib/theme_check/language_server/completion_providers/tag_completion_provider.rb
|
158
176
|
- lib/theme_check/language_server/constants.rb
|
177
|
+
- lib/theme_check/language_server/diagnostics_tracker.rb
|
159
178
|
- lib/theme_check/language_server/document_link_engine.rb
|
160
179
|
- lib/theme_check/language_server/handler.rb
|
161
180
|
- lib/theme_check/language_server/protocol.rb
|