theme-check 1.2.0 → 1.5.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/theme-check.yml +3 -3
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +47 -0
  5. data/CONTRIBUTING.md +59 -1
  6. data/Gemfile +3 -0
  7. data/bin/theme-check +29 -0
  8. data/bin/theme-check-language-server +29 -0
  9. data/config/default.yml +15 -1
  10. data/config/theme_app_extension.yml +15 -0
  11. data/data/shopify_liquid/objects.yml +1 -0
  12. data/docs/checks/app_block_valid_tags.md +40 -0
  13. data/docs/checks/asset_size_app_block_css.md +1 -1
  14. data/docs/checks/deprecate_lazysizes.md +0 -3
  15. data/docs/checks/deprecated_global_app_block_type.md +65 -0
  16. data/docs/checks/missing_template.md +25 -0
  17. data/docs/checks/pagination_size.md +44 -0
  18. data/docs/checks/template_length.md +1 -1
  19. data/docs/checks/undefined_object.md +5 -0
  20. data/docs/flamegraph.svg +18488 -0
  21. data/lib/theme_check/analyzer.rb +1 -0
  22. data/lib/theme_check/check.rb +2 -2
  23. data/lib/theme_check/checks/app_block_valid_tags.rb +36 -0
  24. data/lib/theme_check/checks/asset_size_css.rb +3 -3
  25. data/lib/theme_check/checks/asset_size_javascript.rb +2 -2
  26. data/lib/theme_check/checks/convert_include_to_render.rb +3 -1
  27. data/lib/theme_check/checks/default_locale.rb +3 -1
  28. data/lib/theme_check/checks/deprecate_bgsizes.rb +1 -1
  29. data/lib/theme_check/checks/deprecate_lazysizes.rb +7 -4
  30. data/lib/theme_check/checks/deprecated_global_app_block_type.rb +57 -0
  31. data/lib/theme_check/checks/img_lazy_loading.rb +1 -1
  32. data/lib/theme_check/checks/img_width_and_height.rb +3 -3
  33. data/lib/theme_check/checks/missing_template.rb +21 -5
  34. data/lib/theme_check/checks/pagination_size.rb +84 -0
  35. data/lib/theme_check/checks/parser_blocking_javascript.rb +1 -1
  36. data/lib/theme_check/checks/remote_asset.rb +3 -3
  37. data/lib/theme_check/checks/space_inside_braces.rb +26 -6
  38. data/lib/theme_check/checks/template_length.rb +1 -1
  39. data/lib/theme_check/checks/undefined_object.rb +1 -1
  40. data/lib/theme_check/checks/valid_html_translation.rb +1 -1
  41. data/lib/theme_check/checks.rb +11 -1
  42. data/lib/theme_check/cli.rb +42 -3
  43. data/lib/theme_check/corrector.rb +9 -0
  44. data/lib/theme_check/file_system_storage.rb +12 -0
  45. data/lib/theme_check/html_check.rb +0 -1
  46. data/lib/theme_check/html_node.rb +37 -16
  47. data/lib/theme_check/html_visitor.rb +17 -3
  48. data/lib/theme_check/json_check.rb +2 -2
  49. data/lib/theme_check/json_file.rb +11 -0
  50. data/lib/theme_check/json_printer.rb +31 -0
  51. data/lib/theme_check/language_server/constants.rb +18 -11
  52. data/lib/theme_check/language_server/document_link_engine.rb +3 -67
  53. data/lib/theme_check/language_server/document_link_provider.rb +71 -0
  54. data/lib/theme_check/language_server/document_link_providers/asset_document_link_provider.rb +11 -0
  55. data/lib/theme_check/language_server/document_link_providers/include_document_link_provider.rb +11 -0
  56. data/lib/theme_check/language_server/document_link_providers/render_document_link_provider.rb +11 -0
  57. data/lib/theme_check/language_server/document_link_providers/section_document_link_provider.rb +11 -0
  58. data/lib/theme_check/language_server/handler.rb +17 -9
  59. data/lib/theme_check/language_server/server.rb +11 -13
  60. data/lib/theme_check/language_server/uri_helper.rb +37 -0
  61. data/lib/theme_check/language_server.rb +6 -0
  62. data/lib/theme_check/node.rb +6 -4
  63. data/lib/theme_check/offense.rb +56 -3
  64. data/lib/theme_check/parsing_helpers.rb +4 -3
  65. data/lib/theme_check/position.rb +98 -14
  66. data/lib/theme_check/printer.rb +9 -5
  67. data/lib/theme_check/regex_helpers.rb +5 -2
  68. data/lib/theme_check/theme.rb +3 -0
  69. data/lib/theme_check/version.rb +1 -1
  70. data/lib/theme_check.rb +1 -0
  71. data/theme-check.gemspec +1 -1
  72. metadata +21 -10
  73. data/bin/liquid-server +0 -4
  74. data/exe/theme-check-language-server.bat +0 -3
  75. data/exe/theme-check.bat +0 -3
@@ -2,14 +2,18 @@
2
2
 
3
3
  module ThemeCheck
4
4
  class Printer
5
+ def initialize(out_stream = STDOUT)
6
+ @out = out_stream
7
+ end
8
+
5
9
  def print(theme, offenses, auto_correct)
6
10
  offenses.each do |offense|
7
11
  print_offense(offense, auto_correct)
8
- puts
12
+ @out.puts
9
13
  end
10
14
 
11
15
  correctable = offenses.select(&:correctable?)
12
- puts "#{theme.all.size} files inspected, #{red(offenses.size.to_s + ' offenses')} detected, \
16
+ @out.puts "#{theme.all.size} files inspected, #{red(offenses.size.to_s + ' offenses')} detected, \
13
17
  #{yellow(correctable.size.to_s + ' offenses')} #{auto_correct ? 'corrected' : 'auto-correctable'}"
14
18
  end
15
19
 
@@ -26,15 +30,15 @@ module ThemeCheck
26
30
  ""
27
31
  end
28
32
 
29
- puts location +
33
+ @out.puts location +
30
34
  colorized_severity(offense.severity) + ": " +
31
35
  yellow(offense.check_name) + ": " +
32
36
  corrected +
33
37
  offense.message + "."
34
38
  if offense.source_excerpt
35
- puts "\t#{offense.source_excerpt}"
39
+ @out.puts "\t#{offense.source_excerpt}"
36
40
  if offense.markup_start_in_excerpt
37
- puts "\t" + (" " * offense.markup_start_in_excerpt) + ("^" * offense.markup.size)
41
+ @out.puts "\t" + (" " * offense.markup_start_in_excerpt) + ("^" * offense.markup.size)
38
42
  end
39
43
  end
40
44
  end
@@ -2,8 +2,11 @@
2
2
 
3
3
  module ThemeCheck
4
4
  module RegexHelpers
5
- VARIABLE = /#{Liquid::VariableStart}.*?#{Liquid::VariableEnd}/om
5
+ LIQUID_TAG = /#{Liquid::TagStart}.*?#{Liquid::TagEnd}/om
6
+ LIQUID_VARIABLE = /#{Liquid::VariableStart}.*?#{Liquid::VariableEnd}/om
7
+ LIQUID_TAG_OR_VARIABLE = /#{LIQUID_TAG}|#{LIQUID_VARIABLE}/om
6
8
  START_OR_END_QUOTE = /(^['"])|(['"]$)/
9
+
7
10
  def matches(s, re)
8
11
  start_at = 0
9
12
  matches = []
@@ -16,7 +19,7 @@ module ThemeCheck
16
19
 
17
20
  def href_to_file_size(href)
18
21
  # asset_url (+ optional stylesheet_tag) variables
19
- if href =~ /^#{VARIABLE}$/o && href =~ /asset_url/ && href =~ Liquid::QuotedString
22
+ if href =~ /^#{LIQUID_VARIABLE}$/o && href =~ /asset_url/ && href =~ Liquid::QuotedString
20
23
  asset_id = Regexp.last_match(0).gsub(START_OR_END_QUOTE, "")
21
24
  asset = @theme.assets.find { |a| a.name.end_with?("/" + asset_id) }
22
25
  return if asset.nil?
@@ -7,6 +7,9 @@ module ThemeCheck
7
7
  LIQUID_REGEX = /\.liquid$/i
8
8
  JSON_REGEX = /\.json$/i
9
9
 
10
+ attr_reader :storage
11
+ attr_writer :default_locale_json
12
+
10
13
  def initialize(storage)
11
14
  @storage = storage
12
15
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ThemeCheck
3
- VERSION = "1.2.0"
3
+ VERSION = "1.5.1"
4
4
  end
data/lib/theme_check.rb CHANGED
@@ -27,6 +27,7 @@ require_relative "theme_check/config"
27
27
  require_relative "theme_check/node"
28
28
  require_relative "theme_check/offense"
29
29
  require_relative "theme_check/printer"
30
+ require_relative "theme_check/json_printer"
30
31
  require_relative "theme_check/shopify_liquid"
31
32
  require_relative "theme_check/storage"
32
33
  require_relative "theme_check/string_helpers"
data/theme-check.gemspec CHANGED
@@ -25,5 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
 
27
27
  spec.add_dependency('liquid', '>= 5.0.1')
28
- spec.add_dependency('nokogumbo')
28
+ spec.add_dependency('nokogiri', '>= 1.12')
29
29
  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: 1.2.0
4
+ version: 1.5.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-07-15 00:00:00.000000000 Z
11
+ date: 2021-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid
@@ -25,27 +25,25 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 5.0.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: nokogumbo
28
+ name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.12'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '1.12'
41
41
  description:
42
42
  email:
43
43
  - marcandre.cournoyer@shopify.com
44
44
  executables:
45
45
  - theme-check
46
46
  - theme-check-language-server
47
- - theme-check-language-server.bat
48
- - theme-check.bat
49
47
  extensions: []
50
48
  extra_rdoc_files: []
51
49
  files:
@@ -62,7 +60,8 @@ files:
62
60
  - README.md
63
61
  - RELEASING.md
64
62
  - Rakefile
65
- - bin/liquid-server
63
+ - bin/theme-check
64
+ - bin/theme-check-language-server
66
65
  - config/default.yml
67
66
  - config/nothing.yml
68
67
  - config/theme_app_extension.yml
@@ -78,6 +77,7 @@ files:
78
77
  - docs/api/json_check.md
79
78
  - docs/api/liquid_check.md
80
79
  - docs/checks/TEMPLATE.md.erb
80
+ - docs/checks/app_block_valid_tags.md
81
81
  - docs/checks/asset_size_app_block_css.md
82
82
  - docs/checks/asset_size_app_block_javascript.md
83
83
  - docs/checks/asset_size_css.md
@@ -90,6 +90,7 @@ files:
90
90
  - docs/checks/deprecate_bgsizes.md
91
91
  - docs/checks/deprecate_lazysizes.md
92
92
  - docs/checks/deprecated_filter.md
93
+ - docs/checks/deprecated_global_app_block_type.md
93
94
  - docs/checks/html_parsing_error.md
94
95
  - docs/checks/img_lazy_loading.md
95
96
  - docs/checks/img_width_and_height.md
@@ -100,6 +101,7 @@ files:
100
101
  - docs/checks/missing_required_template_files.md
101
102
  - docs/checks/missing_template.md
102
103
  - docs/checks/nested_snippet.md
104
+ - docs/checks/pagination_size.md
103
105
  - docs/checks/parser_blocking_javascript.md
104
106
  - docs/checks/parser_blocking_script_tag.md
105
107
  - docs/checks/remote_asset.md
@@ -116,11 +118,10 @@ files:
116
118
  - docs/checks/valid_html_translation.md
117
119
  - docs/checks/valid_json.md
118
120
  - docs/checks/valid_schema.md
121
+ - docs/flamegraph.svg
119
122
  - docs/preview.png
120
123
  - exe/theme-check
121
124
  - exe/theme-check-language-server
122
- - exe/theme-check-language-server.bat
123
- - exe/theme-check.bat
124
125
  - lib/theme_check.rb
125
126
  - lib/theme_check/analyzer.rb
126
127
  - lib/theme_check/asset_file.rb
@@ -128,6 +129,7 @@ files:
128
129
  - lib/theme_check/check.rb
129
130
  - lib/theme_check/checks.rb
130
131
  - lib/theme_check/checks/TEMPLATE.rb.erb
132
+ - lib/theme_check/checks/app_block_valid_tags.rb
131
133
  - lib/theme_check/checks/asset_size_app_block_css.rb
132
134
  - lib/theme_check/checks/asset_size_app_block_javascript.rb
133
135
  - lib/theme_check/checks/asset_size_css.rb
@@ -140,6 +142,7 @@ files:
140
142
  - lib/theme_check/checks/deprecate_bgsizes.rb
141
143
  - lib/theme_check/checks/deprecate_lazysizes.rb
142
144
  - lib/theme_check/checks/deprecated_filter.rb
145
+ - lib/theme_check/checks/deprecated_global_app_block_type.rb
143
146
  - lib/theme_check/checks/html_parsing_error.rb
144
147
  - lib/theme_check/checks/img_lazy_loading.rb
145
148
  - lib/theme_check/checks/img_width_and_height.rb
@@ -150,6 +153,7 @@ files:
150
153
  - lib/theme_check/checks/missing_required_template_files.rb
151
154
  - lib/theme_check/checks/missing_template.rb
152
155
  - lib/theme_check/checks/nested_snippet.rb
156
+ - lib/theme_check/checks/pagination_size.rb
153
157
  - lib/theme_check/checks/parser_blocking_javascript.rb
154
158
  - lib/theme_check/checks/parser_blocking_script_tag.rb
155
159
  - lib/theme_check/checks/remote_asset.rb
@@ -181,6 +185,7 @@ files:
181
185
  - lib/theme_check/json_check.rb
182
186
  - lib/theme_check/json_file.rb
183
187
  - lib/theme_check/json_helpers.rb
188
+ - lib/theme_check/json_printer.rb
184
189
  - lib/theme_check/language_server.rb
185
190
  - lib/theme_check/language_server/completion_engine.rb
186
191
  - lib/theme_check/language_server/completion_helper.rb
@@ -192,10 +197,16 @@ files:
192
197
  - lib/theme_check/language_server/constants.rb
193
198
  - lib/theme_check/language_server/diagnostics_tracker.rb
194
199
  - lib/theme_check/language_server/document_link_engine.rb
200
+ - lib/theme_check/language_server/document_link_provider.rb
201
+ - lib/theme_check/language_server/document_link_providers/asset_document_link_provider.rb
202
+ - lib/theme_check/language_server/document_link_providers/include_document_link_provider.rb
203
+ - lib/theme_check/language_server/document_link_providers/render_document_link_provider.rb
204
+ - lib/theme_check/language_server/document_link_providers/section_document_link_provider.rb
195
205
  - lib/theme_check/language_server/handler.rb
196
206
  - lib/theme_check/language_server/protocol.rb
197
207
  - lib/theme_check/language_server/server.rb
198
208
  - lib/theme_check/language_server/tokens.rb
209
+ - lib/theme_check/language_server/uri_helper.rb
199
210
  - lib/theme_check/language_server/variable_lookup_finder.rb
200
211
  - lib/theme_check/liquid_check.rb
201
212
  - lib/theme_check/locale_diff.rb
data/bin/liquid-server DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env bash
2
- dev="/opt/dev/bin/dev"
3
- cd "$($dev project-path theme-check)"
4
- "$dev" language-server
@@ -1,3 +0,0 @@
1
- @ECHO OFF
2
-
3
- ruby "%~dp0\theme-check-language-server" %*
data/exe/theme-check.bat DELETED
@@ -1,3 +0,0 @@
1
- @ECHO OFF
2
-
3
- ruby "%~dp0\theme-check" %*