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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/theme-check.yml +3 -0
  3. data/CHANGELOG.md +38 -0
  4. data/CONTRIBUTING.md +20 -90
  5. data/README.md +4 -1
  6. data/Rakefile +31 -0
  7. data/config/default.yml +49 -0
  8. data/docs/api/check.md +15 -0
  9. data/docs/api/html_check.md +46 -0
  10. data/docs/api/json_check.md +19 -0
  11. data/docs/api/liquid_check.md +99 -0
  12. data/docs/checks/{CHECK_DOCS_TEMPLATE.md → TEMPLATE.md.erb} +5 -5
  13. data/docs/checks/asset_url_filters.md +56 -0
  14. data/docs/checks/content_for_header_modification.md +42 -0
  15. data/docs/checks/html_parsing_error.md +50 -0
  16. data/docs/checks/img_lazy_loading.md +61 -0
  17. data/docs/checks/parser_blocking_script_tag.md +53 -0
  18. data/exe/theme-check-language-server +1 -2
  19. data/lib/theme_check.rb +8 -1
  20. data/lib/theme_check/analyzer.rb +72 -16
  21. data/lib/theme_check/check.rb +32 -7
  22. data/lib/theme_check/checks.rb +9 -1
  23. data/lib/theme_check/checks/TEMPLATE.rb.erb +11 -0
  24. data/lib/theme_check/checks/asset_url_filters.rb +46 -0
  25. data/lib/theme_check/checks/content_for_header_modification.rb +41 -0
  26. data/lib/theme_check/checks/html_parsing_error.rb +12 -0
  27. data/lib/theme_check/checks/img_lazy_loading.rb +25 -0
  28. data/lib/theme_check/checks/img_width_and_height.rb +18 -49
  29. data/lib/theme_check/checks/missing_template.rb +1 -0
  30. data/lib/theme_check/checks/parser_blocking_javascript.rb +6 -38
  31. data/lib/theme_check/checks/parser_blocking_script_tag.rb +20 -0
  32. data/lib/theme_check/checks/remote_asset.rb +21 -79
  33. data/lib/theme_check/checks/template_length.rb +3 -0
  34. data/lib/theme_check/checks/valid_html_translation.rb +1 -0
  35. data/lib/theme_check/config.rb +2 -0
  36. data/lib/theme_check/disabled_check.rb +6 -4
  37. data/lib/theme_check/disabled_checks.rb +25 -9
  38. data/lib/theme_check/html_check.rb +7 -0
  39. data/lib/theme_check/html_node.rb +56 -0
  40. data/lib/theme_check/html_visitor.rb +40 -0
  41. data/lib/theme_check/json_file.rb +13 -0
  42. data/lib/theme_check/language_server.rb +1 -0
  43. data/lib/theme_check/language_server/completion_providers/filter_completion_provider.rb +1 -0
  44. data/lib/theme_check/language_server/diagnostics_tracker.rb +66 -0
  45. data/lib/theme_check/language_server/handler.rb +31 -26
  46. data/lib/theme_check/language_server/server.rb +1 -1
  47. data/lib/theme_check/liquid_check.rb +1 -4
  48. data/lib/theme_check/offense.rb +18 -0
  49. data/lib/theme_check/template.rb +9 -0
  50. data/lib/theme_check/theme.rb +7 -2
  51. data/lib/theme_check/version.rb +1 -1
  52. data/lib/theme_check/visitor.rb +2 -11
  53. metadata +22 -3
@@ -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}"
@@ -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(
@@ -52,8 +52,13 @@ module ThemeCheck
52
52
  @all ||= json + liquid + assets
53
53
  end
54
54
 
55
- def [](name)
56
- all.find { |t| t.name == name }
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
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ThemeCheck
3
- VERSION = "0.8.3"
3
+ VERSION = "0.10.2"
4
4
  end
@@ -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.8.3
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-05-17 00:00:00.000000000 Z
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/checks/CHECK_DOCS_TEMPLATE.md
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