summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop
diff options
context:
space:
mode:
authorBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
committerBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
commit5571dc766e2143e39762ff0b47c41d1c2e154f4c (patch)
treef4f124d314a7e76c04484515aa0fd1f2e271a601 /vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop
parent359f3309c97fc894b63e0a295c76ab298504d635 (diff)
Vendor bundled gems for deployment
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop')
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll.rb5
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/assert_equal_literal_actual.rb150
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/no_p_allowed.rb22
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/no_puts_allowed.rb22
4 files changed, 199 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll.rb b/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll.rb
new file mode 100644
index 0000000..31236b8
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+Dir[File.join(File.expand_path("jekyll", __dir__), "*.rb")].each do |ruby_file|
+ require ruby_file
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/assert_equal_literal_actual.rb b/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/assert_equal_literal_actual.rb
new file mode 100644
index 0000000..7c7b9f5
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/assert_equal_literal_actual.rb
@@ -0,0 +1,150 @@
+# frozen_string_literal: true
+
+module RuboCop
+ module Cop
+ module Jekyll
+ # Checks for `assert_equal(exp, act, msg = nil)` calls containing literal values as
+ # second argument. The second argument should ideally be a method called on the tested
+ # instance.
+ #
+ # @example
+ # # bad
+ # assert_equal @foo.bar, "foobar"
+ # assert_equal @alpha.beta, { "foo" => "bar", "lorem" => "ipsum" }
+ # assert_equal @alpha.omega, ["foobar", "lipsum"]
+ #
+ # # good
+ # assert_equal "foobar", @foo.bar
+ #
+ # assert_equal(
+ # { "foo" => "bar", "lorem" => "ipsum" },
+ # @alpha.beta
+ # )
+ #
+ # assert_equal(
+ # ["foobar", "lipsum"],
+ # @alpha.omega
+ # )
+ #
+ class AssertEqualLiteralActual < Base
+ extend AutoCorrector
+
+ MSG = "Provide the 'expected value' as the first argument to `assert_equal`."
+ RESTRICT_ON_SEND = %i[assert_equal].freeze
+
+ SIMPLE_LITERALS = %i(
+ true
+ false
+ nil
+ int
+ float
+ str
+ sym
+ complex
+ rational
+ regopt
+ ).freeze
+
+ COMPLEX_LITERALS = %i(
+ array
+ hash
+ pair
+ irange
+ erange
+ regexp
+ ).freeze
+
+ def_node_matcher :literal_actual?, <<-PATTERN
+ (send nil? :assert_equal $(send ...) $#literal?)
+ PATTERN
+
+ def_node_matcher :literal_actual_with_msg?, <<-PATTERN
+ (send nil? :assert_equal $(send ...) $#literal? $#opt_msg?)
+ PATTERN
+
+ def on_send(node)
+ return unless literal_actual?(node) || literal_actual_with_msg?(node)
+
+ range = node.loc.expression
+ add_offense(range) do |corrector|
+ corrector.replace(range, replacement(node))
+ end
+ end
+
+ private
+
+ def opt_msg?(node)
+ node&.source
+ end
+
+ # This is not implement using a NodePattern because it seems
+ # to not be able to match against an explicit (nil) sexp
+ def literal?(node)
+ node && (simple_literal?(node) || complex_literal?(node))
+ end
+
+ def simple_literal?(node)
+ SIMPLE_LITERALS.include?(node.type)
+ end
+
+ def complex_literal?(node)
+ COMPLEX_LITERALS.include?(node.type) &&
+ node.each_child_node.all?(&method(:literal?))
+ end
+
+ def replacement(node)
+ _, _, first_param, second_param, optional_param = *node
+
+ replaced_text = \
+ if second_param.type == :hash
+ replace_hash_with_variable(first_param.source, second_param.source)
+ elsif second_param.type == :array && second_param.source != "[]"
+ replace_array_with_variable(first_param.source, second_param.source)
+ else
+ replace_based_on_line_length(first_param.source, second_param.source)
+ end
+
+ return "#{replaced_text}, #{optional_param.source}" if optional_param
+ replaced_text
+ end
+
+ def replace_based_on_line_length(first_expression, second_expression)
+ result = "assert_equal #{second_expression}, #{first_expression}"
+ return result if result.length < 80
+
+ # fold long lines independent of Rubocop configuration for better readability
+ <<~TEXT
+ assert_equal(
+ #{second_expression},
+ #{first_expression}
+ )
+ TEXT
+ end
+
+ def replace_hash_with_variable(first_expression, second_expression)
+ expect_expression = if second_expression.start_with?("{")
+ second_expression
+ else
+ "{#{second_expression}}"
+ end
+ <<~TEXT
+ expected = #{expect_expression}
+ assert_equal expected, #{first_expression}
+ TEXT
+ end
+
+ def replace_array_with_variable(first_expression, second_expression)
+ expect_expression = if second_expression.start_with?("%")
+ second_expression
+ else
+ Array(second_expression)
+ end
+ <<~TEXT
+ expected = #{expect_expression}
+ assert_equal expected, #{first_expression}
+ TEXT
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/no_p_allowed.rb b/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/no_p_allowed.rb
new file mode 100644
index 0000000..b77f8f8
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/no_p_allowed.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module RuboCop
+ module Cop
+ module Jekyll
+ class NoPAllowed < Base
+ MSG = "Avoid using `p` to print things. Use `Jekyll.logger` instead."
+ RESTRICT_ON_SEND = %i[p].freeze
+
+ def_node_search :p_called?, <<-PATTERN
+ (send _ :p _)
+ PATTERN
+
+ def on_send(node)
+ if p_called?(node)
+ add_offense(node.loc.selector)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/no_puts_allowed.rb b/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/no_puts_allowed.rb
new file mode 100644
index 0000000..81717cc
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/jekyll-4.4.1/rubocop/jekyll/no_puts_allowed.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module RuboCop
+ module Cop
+ module Jekyll
+ class NoPutsAllowed < Base
+ MSG = "Avoid using `puts` to print things. Use `Jekyll.logger` instead."
+ RESTRICT_ON_SEND = %i[puts].freeze
+
+ def_node_search :puts_called?, <<-PATTERN
+ (send nil? :puts _)
+ PATTERN
+
+ def on_send(node)
+ if puts_called?(node)
+ add_offense(node.loc.selector)
+ end
+ end
+ end
+ end
+ end
+end