theme-check 0.8.3 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
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