theme-check 0.5.0 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/theme-check.yml +10 -3
  3. data/.rubocop.yml +6 -3
  4. data/CHANGELOG.md +35 -0
  5. data/Gemfile +5 -3
  6. data/LICENSE.md +2 -0
  7. data/README.md +3 -0
  8. data/RELEASING.md +10 -3
  9. data/Rakefile +6 -0
  10. data/config/default.yml +11 -1
  11. data/data/shopify_translation_keys.yml +850 -0
  12. data/docs/checks/asset_size_css.md +52 -0
  13. data/docs/checks/img_width_and_height.md +79 -0
  14. data/docs/checks/parser_blocking_javascript.md +3 -3
  15. data/docs/checks/remote_asset.md +82 -0
  16. data/exe/theme-check +1 -1
  17. data/lib/theme_check.rb +1 -0
  18. data/lib/theme_check/check.rb +1 -1
  19. data/lib/theme_check/checks/asset_size_css.rb +89 -0
  20. data/lib/theme_check/checks/asset_size_javascript.rb +2 -8
  21. data/lib/theme_check/checks/img_width_and_height.rb +74 -0
  22. data/lib/theme_check/checks/matching_translations.rb +1 -1
  23. data/lib/theme_check/checks/parser_blocking_javascript.rb +6 -14
  24. data/lib/theme_check/checks/remote_asset.rb +99 -0
  25. data/lib/theme_check/checks/translation_key_exists.rb +13 -1
  26. data/lib/theme_check/checks/undefined_object.rb +1 -1
  27. data/lib/theme_check/checks/valid_html_translation.rb +1 -1
  28. data/lib/theme_check/cli.rb +106 -51
  29. data/lib/theme_check/config.rb +3 -0
  30. data/lib/theme_check/disabled_checks.rb +2 -2
  31. data/lib/theme_check/in_memory_storage.rb +13 -8
  32. data/lib/theme_check/language_server.rb +2 -0
  33. data/lib/theme_check/language_server/completion_engine.rb +3 -3
  34. data/lib/theme_check/language_server/completion_provider.rb +4 -0
  35. data/lib/theme_check/language_server/completion_providers/filter_completion_provider.rb +6 -2
  36. data/lib/theme_check/language_server/completion_providers/object_completion_provider.rb +1 -1
  37. data/lib/theme_check/language_server/completion_providers/render_snippet_completion_provider.rb +43 -0
  38. data/lib/theme_check/language_server/completion_providers/tag_completion_provider.rb +2 -2
  39. data/lib/theme_check/language_server/constants.rb +10 -0
  40. data/lib/theme_check/language_server/document_link_engine.rb +48 -0
  41. data/lib/theme_check/language_server/handler.rb +56 -17
  42. data/lib/theme_check/language_server/server.rb +4 -4
  43. data/lib/theme_check/liquid_check.rb +11 -0
  44. data/lib/theme_check/node.rb +1 -2
  45. data/lib/theme_check/offense.rb +3 -1
  46. data/lib/theme_check/packager.rb +1 -1
  47. data/lib/theme_check/releaser.rb +39 -0
  48. data/lib/theme_check/remote_asset_file.rb +1 -1
  49. data/lib/theme_check/shopify_liquid/deprecated_filter.rb +10 -8
  50. data/lib/theme_check/shopify_liquid/filter.rb +3 -5
  51. data/lib/theme_check/shopify_liquid/object.rb +2 -6
  52. data/lib/theme_check/shopify_liquid/tag.rb +1 -3
  53. data/lib/theme_check/storage.rb +3 -3
  54. data/lib/theme_check/string_helpers.rb +47 -0
  55. data/lib/theme_check/tags.rb +1 -2
  56. data/lib/theme_check/theme.rb +1 -1
  57. data/lib/theme_check/version.rb +1 -1
  58. data/packaging/homebrew/theme_check.base.rb +1 -1
  59. data/theme-check.gemspec +1 -2
  60. metadata +16 -18
@@ -38,7 +38,7 @@ module ThemeCheck
38
38
  end
39
39
 
40
40
  def gzipped_size
41
- @gzipped_size ||= @content.bytesize
41
+ @gzipped_size ||= content.bytesize
42
42
  end
43
43
  end
44
44
  end
@@ -10,17 +10,19 @@ module ThemeCheck
10
10
  all.fetch(filter, nil)
11
11
  end
12
12
 
13
+ def labels
14
+ @labels ||= all.keys
15
+ end
16
+
13
17
  private
14
18
 
15
19
  def all
16
- @all ||= begin
17
- YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/deprecated_filters.yml"))
18
- .values
19
- .each_with_object({}) do |filters, acc|
20
- filters.each do |(filter, alternatives)|
21
- acc[filter] = alternatives
22
- end
23
- end
20
+ @all ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/deprecated_filters.yml"))
21
+ .values
22
+ .each_with_object({}) do |filters, acc|
23
+ filters.each do |(filter, alternatives)|
24
+ acc[filter] = alternatives
25
+ end
24
26
  end
25
27
  end
26
28
  end
@@ -7,11 +7,9 @@ module ThemeCheck
7
7
  extend self
8
8
 
9
9
  def labels
10
- @labels ||= begin
11
- YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/filters.yml"))
12
- .values
13
- .flatten
14
- end
10
+ @labels ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/filters.yml"))
11
+ .values
12
+ .flatten
15
13
  end
16
14
  end
17
15
  end
@@ -7,15 +7,11 @@ module ThemeCheck
7
7
  extend self
8
8
 
9
9
  def labels
10
- @labels ||= begin
11
- YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/objects.yml"))
12
- end
10
+ @labels ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/objects.yml"))
13
11
  end
14
12
 
15
13
  def plus_labels
16
- @plus_labels ||= begin
17
- YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/plus_objects.yml"))
18
- end
14
+ @plus_labels ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/plus_objects.yml"))
19
15
  end
20
16
  end
21
17
  end
@@ -7,9 +7,7 @@ module ThemeCheck
7
7
  extend self
8
8
 
9
9
  def labels
10
- @tags ||= begin
11
- YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/tags.yml"))
12
- end
10
+ @tags ||= YAML.load(File.read("#{__dir__}/../../../data/shopify_liquid/tags.yml"))
13
11
  end
14
12
  end
15
13
  end
@@ -2,15 +2,15 @@
2
2
 
3
3
  module ThemeCheck
4
4
  class Storage
5
- def read(relative_path)
5
+ def path(relative_path)
6
6
  raise NotImplementedError
7
7
  end
8
8
 
9
- def write(relative_path, content)
9
+ def read(relative_path)
10
10
  raise NotImplementedError
11
11
  end
12
12
 
13
- def path(relative_path)
13
+ def write(relative_path, content)
14
14
  raise NotImplementedError
15
15
  end
16
16
 
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ThemeCheck
4
+ module StringHelpers
5
+ extend self
6
+
7
+ # Removes the module part from the expression in the string.
8
+ # Ported from ActiveSupport
9
+ #
10
+ # demodulize('ActiveSupport::Inflector::Inflections') # => "Inflections"
11
+ # demodulize('Inflections') # => "Inflections"
12
+ # demodulize('::Inflections') # => "Inflections"
13
+ # demodulize('') # => ""
14
+ #
15
+ # See also #deconstantize.
16
+ def demodulize(path)
17
+ path = path.to_s
18
+ if (i = path.rindex("::"))
19
+ path[(i + 2)..-1]
20
+ else
21
+ path
22
+ end
23
+ end
24
+
25
+ # Makes an underscored, lowercase form from the expression in the string.
26
+ # Base on ActiveSupport's
27
+ #
28
+ # Changes '::' to '/' to convert namespaces to paths.
29
+ #
30
+ # underscore('ActiveModel') # => "active_model"
31
+ # underscore('ActiveModel::Errors') # => "active_model/errors"
32
+ #
33
+ # As a rule of thumb you can think of +underscore+ as the inverse of
34
+ # #camelize, though there are cases where that does not hold:
35
+ #
36
+ # camelize(underscore('SSLError')) # => "SslError"
37
+ def underscore(camel_cased_word)
38
+ return camel_cased_word unless /[A-Z-]|::/.match?(camel_cased_word)
39
+ word = camel_cased_word.to_s.gsub("::", "/")
40
+ word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
41
+ word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
42
+ word.tr!("-", "_")
43
+ word.downcase!
44
+ word
45
+ end
46
+ end
47
+ end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- require "active_support/core_ext/string/starts_ends_with"
3
2
 
4
3
  module ThemeCheck
5
4
  module Tags
@@ -19,7 +18,7 @@ module ThemeCheck
19
18
  "Error in tag 'section' - Valid syntax: section '[type]'",
20
19
  ) unless match
21
20
  @section_name = match[:section_name].tr(%('"), '')
22
- @section_name.chomp!(".liquid") if @section_name.ends_with?(".liquid")
21
+ @section_name.chomp!(".liquid") if @section_name.end_with?(".liquid")
23
22
  end
24
23
  end
25
24
 
@@ -13,7 +13,7 @@ module ThemeCheck
13
13
 
14
14
  def assets
15
15
  @assets ||= @storage.files
16
- .select { |path| path.starts_with?("assets/") }
16
+ .select { |path| path.start_with?("assets/") }
17
17
  .map { |path| AssetFile.new(path, @storage) }
18
18
  end
19
19
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ThemeCheck
3
- VERSION = "0.5.0"
3
+ VERSION = "0.7.3"
4
4
  end
@@ -13,7 +13,7 @@ class ThemeCheck < Formula
13
13
  class RubyGemsDownloadStrategy < AbstractDownloadStrategy
14
14
  include RubyBin
15
15
 
16
- def fetch
16
+ def fetch(_timeout: nil, **_options)
17
17
  ohai("Fetching theme-check from gem source")
18
18
  cache.cd do
19
19
  ENV['GEM_SPEC_CACHE'] = "#{cache}/gem_spec_cache"
data/theme-check.gemspec CHANGED
@@ -22,7 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_dependency('liquid', '>= 5')
26
- spec.add_dependency('activesupport')
25
+ spec.add_dependency('liquid', '>= 5.0.1')
27
26
  spec.add_dependency('nokogumbo')
28
27
  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.5.0
4
+ version: 0.7.3
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-03-12 00:00:00.000000000 Z
11
+ date: 2021-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid
@@ -16,28 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5'
19
+ version: 5.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5'
27
- - !ruby/object:Gem::Dependency
28
- name: activesupport
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
26
+ version: 5.0.1
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: nokogumbo
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -81,12 +67,15 @@ files:
81
67
  - data/shopify_liquid/objects.yml
82
68
  - data/shopify_liquid/plus_objects.yml
83
69
  - data/shopify_liquid/tags.yml
70
+ - data/shopify_translation_keys.yml
84
71
  - dev.yml
85
72
  - docs/checks/CHECK_DOCS_TEMPLATE.md
73
+ - docs/checks/asset_size_css.md
86
74
  - docs/checks/asset_size_javascript.md
87
75
  - docs/checks/convert_include_to_render.md
88
76
  - docs/checks/default_locale.md
89
77
  - docs/checks/deprecated_filter.md
78
+ - docs/checks/img_width_and_height.md
90
79
  - docs/checks/liquid_tag.md
91
80
  - docs/checks/matching_schema_translations.md
92
81
  - docs/checks/matching_translations.md
@@ -95,6 +84,7 @@ files:
95
84
  - docs/checks/missing_template.md
96
85
  - docs/checks/nested_snippet.md
97
86
  - docs/checks/parser_blocking_javascript.md
87
+ - docs/checks/remote_asset.md
98
88
  - docs/checks/required_directories.md
99
89
  - docs/checks/required_layout_theme_object.md
100
90
  - docs/checks/space_inside_braces.md
@@ -116,10 +106,12 @@ files:
116
106
  - lib/theme_check/asset_file.rb
117
107
  - lib/theme_check/check.rb
118
108
  - lib/theme_check/checks.rb
109
+ - lib/theme_check/checks/asset_size_css.rb
119
110
  - lib/theme_check/checks/asset_size_javascript.rb
120
111
  - lib/theme_check/checks/convert_include_to_render.rb
121
112
  - lib/theme_check/checks/default_locale.rb
122
113
  - lib/theme_check/checks/deprecated_filter.rb
114
+ - lib/theme_check/checks/img_width_and_height.rb
123
115
  - lib/theme_check/checks/liquid_tag.rb
124
116
  - lib/theme_check/checks/matching_schema_translations.rb
125
117
  - lib/theme_check/checks/matching_translations.rb
@@ -128,6 +120,7 @@ files:
128
120
  - lib/theme_check/checks/missing_template.rb
129
121
  - lib/theme_check/checks/nested_snippet.rb
130
122
  - lib/theme_check/checks/parser_blocking_javascript.rb
123
+ - lib/theme_check/checks/remote_asset.rb
131
124
  - lib/theme_check/checks/required_directories.rb
132
125
  - lib/theme_check/checks/required_layout_theme_object.rb
133
126
  - lib/theme_check/checks/space_inside_braces.rb
@@ -157,7 +150,10 @@ files:
157
150
  - lib/theme_check/language_server/completion_provider.rb
158
151
  - lib/theme_check/language_server/completion_providers/filter_completion_provider.rb
159
152
  - lib/theme_check/language_server/completion_providers/object_completion_provider.rb
153
+ - lib/theme_check/language_server/completion_providers/render_snippet_completion_provider.rb
160
154
  - lib/theme_check/language_server/completion_providers/tag_completion_provider.rb
155
+ - lib/theme_check/language_server/constants.rb
156
+ - lib/theme_check/language_server/document_link_engine.rb
161
157
  - lib/theme_check/language_server/handler.rb
162
158
  - lib/theme_check/language_server/position_helper.rb
163
159
  - lib/theme_check/language_server/protocol.rb
@@ -171,6 +167,7 @@ files:
171
167
  - lib/theme_check/parsing_helpers.rb
172
168
  - lib/theme_check/printer.rb
173
169
  - lib/theme_check/regex_helpers.rb
170
+ - lib/theme_check/releaser.rb
174
171
  - lib/theme_check/remote_asset_file.rb
175
172
  - lib/theme_check/shopify_liquid.rb
176
173
  - lib/theme_check/shopify_liquid/deprecated_filter.rb
@@ -178,6 +175,7 @@ files:
178
175
  - lib/theme_check/shopify_liquid/object.rb
179
176
  - lib/theme_check/shopify_liquid/tag.rb
180
177
  - lib/theme_check/storage.rb
178
+ - lib/theme_check/string_helpers.rb
181
179
  - lib/theme_check/tags.rb
182
180
  - lib/theme_check/template.rb
183
181
  - lib/theme_check/theme.rb