theme-check 0.8.2 → 0.10.1

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 +45 -0
  4. data/CONTRIBUTING.md +20 -90
  5. data/README.md +4 -1
  6. data/RELEASING.md +5 -3
  7. data/Rakefile +31 -0
  8. data/config/default.yml +45 -0
  9. data/docs/api/check.md +15 -0
  10. data/docs/api/html_check.md +46 -0
  11. data/docs/api/json_check.md +19 -0
  12. data/docs/api/liquid_check.md +99 -0
  13. data/docs/checks/{CHECK_DOCS_TEMPLATE.md → TEMPLATE.md.erb} +5 -5
  14. data/docs/checks/asset_url_filters.md +56 -0
  15. data/docs/checks/content_for_header_modification.md +42 -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/bug.rb +1 -0
  22. data/lib/theme_check/check.rb +32 -7
  23. data/lib/theme_check/checks.rb +9 -1
  24. data/lib/theme_check/checks/TEMPLATE.rb.erb +11 -0
  25. data/lib/theme_check/checks/asset_url_filters.rb +46 -0
  26. data/lib/theme_check/checks/content_for_header_modification.rb +41 -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 +38 -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 +20 -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.2"
3
+ VERSION = "0.10.1"
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.2
4
+ version: 0.10.1
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-14 00:00:00.000000000 Z
11
+ date: 2021-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid
@@ -69,12 +69,19 @@ 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/img_lazy_loading.md
78
85
  - docs/checks/img_width_and_height.md
79
86
  - docs/checks/liquid_tag.md
80
87
  - docs/checks/matching_schema_translations.md
@@ -84,6 +91,7 @@ files:
84
91
  - docs/checks/missing_template.md
85
92
  - docs/checks/nested_snippet.md
86
93
  - docs/checks/parser_blocking_javascript.md
94
+ - docs/checks/parser_blocking_script_tag.md
87
95
  - docs/checks/remote_asset.md
88
96
  - docs/checks/required_directories.md
89
97
  - docs/checks/required_layout_theme_object.md
@@ -107,11 +115,15 @@ files:
107
115
  - lib/theme_check/bug.rb
108
116
  - lib/theme_check/check.rb
109
117
  - lib/theme_check/checks.rb
118
+ - lib/theme_check/checks/TEMPLATE.rb.erb
110
119
  - lib/theme_check/checks/asset_size_css.rb
111
120
  - lib/theme_check/checks/asset_size_javascript.rb
121
+ - lib/theme_check/checks/asset_url_filters.rb
122
+ - lib/theme_check/checks/content_for_header_modification.rb
112
123
  - lib/theme_check/checks/convert_include_to_render.rb
113
124
  - lib/theme_check/checks/default_locale.rb
114
125
  - lib/theme_check/checks/deprecated_filter.rb
126
+ - lib/theme_check/checks/img_lazy_loading.rb
115
127
  - lib/theme_check/checks/img_width_and_height.rb
116
128
  - lib/theme_check/checks/liquid_tag.rb
117
129
  - lib/theme_check/checks/matching_schema_translations.rb
@@ -121,6 +133,7 @@ files:
121
133
  - lib/theme_check/checks/missing_template.rb
122
134
  - lib/theme_check/checks/nested_snippet.rb
123
135
  - lib/theme_check/checks/parser_blocking_javascript.rb
136
+ - lib/theme_check/checks/parser_blocking_script_tag.rb
124
137
  - lib/theme_check/checks/remote_asset.rb
125
138
  - lib/theme_check/checks/required_directories.rb
126
139
  - lib/theme_check/checks/required_layout_theme_object.rb
@@ -143,6 +156,9 @@ files:
143
156
  - lib/theme_check/disabled_checks.rb
144
157
  - lib/theme_check/exceptions.rb
145
158
  - lib/theme_check/file_system_storage.rb
159
+ - lib/theme_check/html_check.rb
160
+ - lib/theme_check/html_node.rb
161
+ - lib/theme_check/html_visitor.rb
146
162
  - lib/theme_check/in_memory_storage.rb
147
163
  - lib/theme_check/json_check.rb
148
164
  - lib/theme_check/json_file.rb
@@ -156,6 +172,7 @@ files:
156
172
  - lib/theme_check/language_server/completion_providers/render_snippet_completion_provider.rb
157
173
  - lib/theme_check/language_server/completion_providers/tag_completion_provider.rb
158
174
  - lib/theme_check/language_server/constants.rb
175
+ - lib/theme_check/language_server/diagnostics_tracker.rb
159
176
  - lib/theme_check/language_server/document_link_engine.rb
160
177
  - lib/theme_check/language_server/handler.rb
161
178
  - lib/theme_check/language_server/protocol.rb