mirror of
https://github.com/danbee/slugtastic
synced 2025-03-04 08:49:05 +00:00
Compare commits
No commits in common. "master" and "v1.0.0" have entirely different histories.
651
.rubocop.yml
651
.rubocop.yml
@ -1,651 +0,0 @@
|
||||
AllCops:
|
||||
Exclude:
|
||||
- db/schema.rb
|
||||
TargetRubyVersion: 2.3
|
||||
|
||||
Naming/AccessorMethodName:
|
||||
Description: Check the naming of accessor methods for get_/set_.
|
||||
Enabled: false
|
||||
|
||||
Style/Alias:
|
||||
Description: 'Use alias_method instead of alias.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method'
|
||||
Enabled: false
|
||||
|
||||
Style/ArrayJoin:
|
||||
Description: 'Use Array#join instead of Array#*.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#array-join'
|
||||
Enabled: false
|
||||
|
||||
Style/AsciiComments:
|
||||
Description: 'Use only ascii symbols in comments.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-comments'
|
||||
Enabled: false
|
||||
|
||||
Naming/AsciiIdentifiers:
|
||||
Description: 'Use only ascii symbols in identifiers.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-identifiers'
|
||||
Enabled: false
|
||||
|
||||
Style/Attr:
|
||||
Description: 'Checks for uses of Module#attr.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr'
|
||||
Enabled: false
|
||||
|
||||
Metrics/BlockNesting:
|
||||
Description: 'Avoid excessive block nesting'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count'
|
||||
Enabled: false
|
||||
|
||||
Style/CaseEquality:
|
||||
Description: 'Avoid explicit use of the case equality operator(===).'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-case-equality'
|
||||
Enabled: false
|
||||
|
||||
Style/CharacterLiteral:
|
||||
Description: 'Checks for uses of character literals.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-character-literals'
|
||||
Enabled: false
|
||||
|
||||
Style/ClassAndModuleChildren:
|
||||
Description: 'Checks style of children classes and modules.'
|
||||
Enabled: true
|
||||
EnforcedStyle: nested
|
||||
|
||||
Metrics/ClassLength:
|
||||
Description: 'Avoid classes longer than 100 lines of code.'
|
||||
Enabled: false
|
||||
|
||||
Metrics/ModuleLength:
|
||||
Description: 'Avoid modules longer than 100 lines of code.'
|
||||
Enabled: false
|
||||
|
||||
Style/ClassVars:
|
||||
Description: 'Avoid the use of class variables.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-class-vars'
|
||||
Enabled: false
|
||||
|
||||
Style/CollectionMethods:
|
||||
Enabled: true
|
||||
PreferredMethods:
|
||||
find: detect
|
||||
inject: reduce
|
||||
collect: map
|
||||
find_all: select
|
||||
|
||||
Style/ColonMethodCall:
|
||||
Description: 'Do not use :: for method call.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#double-colons'
|
||||
Enabled: false
|
||||
|
||||
Style/CommentAnnotation:
|
||||
Description: >-
|
||||
Checks formatting of special comments
|
||||
(TODO, FIXME, OPTIMIZE, HACK, REVIEW).
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#annotate-keywords'
|
||||
Enabled: false
|
||||
|
||||
Metrics/AbcSize:
|
||||
Description: >-
|
||||
A calculated magnitude based on number of assignments,
|
||||
branches, and conditions.
|
||||
Enabled: false
|
||||
|
||||
Metrics/BlockLength:
|
||||
CountComments: true # count full line comments?
|
||||
Max: 25
|
||||
ExcludedMethods: []
|
||||
Exclude:
|
||||
- "spec/**/*"
|
||||
|
||||
Metrics/CyclomaticComplexity:
|
||||
Description: >-
|
||||
A complexity metric that is strongly correlated to the number
|
||||
of test cases needed to validate a method.
|
||||
Enabled: false
|
||||
|
||||
Rails/Delegate:
|
||||
Description: 'Prefer delegate method for delegations.'
|
||||
Enabled: false
|
||||
|
||||
Style/PreferredHashMethods:
|
||||
Description: 'Checks use of `has_key?` and `has_value?` Hash methods.'
|
||||
StyleGuide: '#hash-key'
|
||||
Enabled: false
|
||||
|
||||
Style/Documentation:
|
||||
Description: 'Document classes and non-namespace modules.'
|
||||
Enabled: false
|
||||
|
||||
Style/DoubleNegation:
|
||||
Description: 'Checks for uses of double negation (!!).'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-bang-bang'
|
||||
Enabled: false
|
||||
|
||||
Style/EachWithObject:
|
||||
Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
|
||||
Enabled: false
|
||||
|
||||
Style/EmptyLiteral:
|
||||
Description: 'Prefer literals to Array.new/Hash.new/String.new.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#literal-array-hash'
|
||||
Enabled: false
|
||||
|
||||
# Checks whether the source file has a utf-8 encoding comment or not
|
||||
# AutoCorrectEncodingComment must match the regex
|
||||
# /#.*coding\s?[:=]\s?(?:UTF|utf)-8/
|
||||
Style/Encoding:
|
||||
Enabled: false
|
||||
|
||||
Style/EvenOdd:
|
||||
Description: 'Favor the use of Fixnum#even? && Fixnum#odd?'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
|
||||
Enabled: false
|
||||
|
||||
Naming/FileName:
|
||||
Description: 'Use snake_case for source file names.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-files'
|
||||
Enabled: false
|
||||
|
||||
Style/FrozenStringLiteralComment:
|
||||
Description: >-
|
||||
Add the frozen_string_literal comment to the top of files
|
||||
to help transition from Ruby 2.3.0 to Ruby 3.0.
|
||||
Enabled: false
|
||||
|
||||
Style/FlipFlop:
|
||||
Description: 'Checks for flip flops'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-flip-flops'
|
||||
Enabled: false
|
||||
|
||||
Style/FormatString:
|
||||
Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#sprintf'
|
||||
Enabled: false
|
||||
|
||||
Style/GlobalVars:
|
||||
Description: 'Do not introduce global variables.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#instance-vars'
|
||||
Reference: 'http://www.zenspider.com/Languages/Ruby/QuickRef.html'
|
||||
Enabled: false
|
||||
|
||||
Style/GuardClause:
|
||||
Description: 'Check for conditionals that can be replaced with guard clauses'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
|
||||
Enabled: false
|
||||
|
||||
Style/IfUnlessModifier:
|
||||
Description: >-
|
||||
Favor modifier if/unless usage when you have a
|
||||
single-line body.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier'
|
||||
Enabled: false
|
||||
|
||||
Style/IfWithSemicolon:
|
||||
Description: 'Do not use if x; .... Use the ternary operator instead.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs'
|
||||
Enabled: false
|
||||
|
||||
Style/InlineComment:
|
||||
Description: 'Avoid inline comments.'
|
||||
Enabled: false
|
||||
|
||||
Style/Lambda:
|
||||
Description: 'Use the new lambda literal syntax for single-line blocks.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#lambda-multi-line'
|
||||
Enabled: false
|
||||
|
||||
Style/LambdaCall:
|
||||
Description: 'Use lambda.call(...) instead of lambda.(...).'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc-call'
|
||||
Enabled: false
|
||||
|
||||
Style/LineEndConcatenation:
|
||||
Description: >-
|
||||
Use \ instead of + or << to concatenate two string literals at
|
||||
line end.
|
||||
Enabled: false
|
||||
|
||||
Metrics/LineLength:
|
||||
Description: 'Limit lines to 80 characters.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits'
|
||||
Max: 80
|
||||
|
||||
Metrics/MethodLength:
|
||||
Description: 'Avoid methods longer than 10 lines of code.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods'
|
||||
Enabled: false
|
||||
|
||||
Style/ModuleFunction:
|
||||
Description: 'Checks for usage of `extend self` in modules.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#module-function'
|
||||
Enabled: false
|
||||
|
||||
Style/MultilineBlockChain:
|
||||
Description: 'Avoid multi-line chains of blocks.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#single-line-blocks'
|
||||
Enabled: false
|
||||
|
||||
Style/NegatedIf:
|
||||
Description: >-
|
||||
Favor unless over if for negative conditions
|
||||
(or control flow or).
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#unless-for-negatives'
|
||||
Enabled: false
|
||||
|
||||
Style/NegatedWhile:
|
||||
Description: 'Favor until over while for negative conditions.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#until-for-negatives'
|
||||
Enabled: false
|
||||
|
||||
Style/Next:
|
||||
Description: 'Use `next` to skip iteration instead of a condition at the end.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
|
||||
Enabled: false
|
||||
|
||||
Style/NilComparison:
|
||||
Description: 'Prefer x.nil? to x == nil.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
|
||||
Enabled: false
|
||||
|
||||
Style/Not:
|
||||
Description: 'Use ! instead of not.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bang-not-not'
|
||||
Enabled: false
|
||||
|
||||
Style/NumericLiterals:
|
||||
Description: >-
|
||||
Add underscores to large numeric literals to improve their
|
||||
readability.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics'
|
||||
Enabled: false
|
||||
|
||||
Style/OneLineConditional:
|
||||
Description: >-
|
||||
Favor the ternary operator(?:) over
|
||||
if/then/else/end constructs.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#ternary-operator'
|
||||
Enabled: false
|
||||
|
||||
Naming/BinaryOperatorParameterName:
|
||||
Description: 'When defining binary operators, name the argument other.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#other-arg'
|
||||
Enabled: false
|
||||
|
||||
Metrics/ParameterLists:
|
||||
Description: 'Avoid parameter lists longer than three or four parameters.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#too-many-params'
|
||||
Enabled: false
|
||||
|
||||
Style/PercentLiteralDelimiters:
|
||||
Description: 'Use `%`-literal delimiters consistently'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-literal-braces'
|
||||
Enabled: false
|
||||
|
||||
Style/PerlBackrefs:
|
||||
Description: 'Avoid Perl-style regex back references.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers'
|
||||
Enabled: false
|
||||
|
||||
Naming/PredicateName:
|
||||
Description: 'Check the names of predicate methods.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark'
|
||||
NamePrefixBlacklist:
|
||||
- is_
|
||||
Exclude:
|
||||
- spec/**/*
|
||||
|
||||
Style/Proc:
|
||||
Description: 'Use proc instead of Proc.new.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc'
|
||||
Enabled: false
|
||||
|
||||
Style/RaiseArgs:
|
||||
Description: 'Checks the arguments passed to raise/fail.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#exception-class-messages'
|
||||
Enabled: false
|
||||
|
||||
Style/RegexpLiteral:
|
||||
Description: 'Use / or %r around regular expressions.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-r'
|
||||
Enabled: false
|
||||
|
||||
Style/SelfAssignment:
|
||||
Description: >-
|
||||
Checks for places where self-assignment shorthand should have
|
||||
been used.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment'
|
||||
Enabled: false
|
||||
|
||||
Style/SingleLineBlockParams:
|
||||
Description: 'Enforces the names of some block params.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#reduce-blocks'
|
||||
Enabled: false
|
||||
|
||||
Style/SingleLineMethods:
|
||||
Description: 'Avoid single-line methods.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-single-line-methods'
|
||||
Enabled: false
|
||||
|
||||
Style/SignalException:
|
||||
Description: 'Checks for proper usage of fail and raise.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#fail-method'
|
||||
Enabled: false
|
||||
|
||||
Style/SpecialGlobalVars:
|
||||
Description: 'Avoid Perl-style global variables.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms'
|
||||
Enabled: false
|
||||
|
||||
Style/StringLiterals:
|
||||
Description: 'Checks if uses of quotes match the configured preference.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-string-literals'
|
||||
EnforcedStyle: double_quotes
|
||||
Enabled: true
|
||||
|
||||
Style/TrailingCommaInArguments:
|
||||
Description: 'Checks for trailing comma in argument lists.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
|
||||
EnforcedStyleForMultiline: comma
|
||||
SupportedStylesForMultiline:
|
||||
- comma
|
||||
- consistent_comma
|
||||
- no_comma
|
||||
Enabled: true
|
||||
|
||||
Style/TrailingCommaInArrayLiteral:
|
||||
Description: 'Checks for trailing comma in array literals.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
|
||||
EnforcedStyleForMultiline: comma
|
||||
SupportedStylesForMultiline:
|
||||
- comma
|
||||
- consistent_comma
|
||||
- no_comma
|
||||
Enabled: true
|
||||
|
||||
Style/TrailingCommaInHashLiteral:
|
||||
Description: 'Checks for trailing comma in hash literals.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
|
||||
EnforcedStyleForMultiline: comma
|
||||
SupportedStylesForMultiline:
|
||||
- comma
|
||||
- consistent_comma
|
||||
- no_comma
|
||||
Enabled: true
|
||||
|
||||
Style/TrivialAccessors:
|
||||
Description: 'Prefer attr_* methods to trivial readers/writers.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr_family'
|
||||
Enabled: false
|
||||
|
||||
Style/VariableInterpolation:
|
||||
Description: >-
|
||||
Don't interpolate global, instance and class variables
|
||||
directly in strings.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#curlies-interpolate'
|
||||
Enabled: false
|
||||
|
||||
Style/WhenThen:
|
||||
Description: 'Use when x then ... for one-line cases.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#one-line-cases'
|
||||
Enabled: false
|
||||
|
||||
Style/WhileUntilModifier:
|
||||
Description: >-
|
||||
Favor modifier while/until usage when you have a
|
||||
single-line body.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier'
|
||||
Enabled: false
|
||||
|
||||
Style/WordArray:
|
||||
Description: 'Use %w or %W for arrays of words.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-w'
|
||||
Enabled: false
|
||||
|
||||
# Layout
|
||||
|
||||
Layout/AlignParameters:
|
||||
Description: 'Here we check if the parameters on a multi-line method call or definition are aligned.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-double-indent'
|
||||
Enabled: false
|
||||
|
||||
Layout/ConditionPosition:
|
||||
Description: >-
|
||||
Checks for condition placed in a confusing position relative to
|
||||
the keyword.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition'
|
||||
Enabled: false
|
||||
|
||||
Layout/DotPosition:
|
||||
Description: 'Checks the position of the dot in multi-line method calls.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains'
|
||||
EnforcedStyle: leading
|
||||
|
||||
Layout/ExtraSpacing:
|
||||
Description: 'Do not use unnecessary spacing.'
|
||||
Enabled: true
|
||||
|
||||
Layout/MultilineOperationIndentation:
|
||||
Description: >-
|
||||
Checks indentation of binary operations that span more than
|
||||
one line.
|
||||
Enabled: true
|
||||
EnforcedStyle: indented
|
||||
|
||||
Layout/MultilineMethodCallIndentation:
|
||||
Description: >-
|
||||
Checks indentation of method calls with the dot operator
|
||||
that span more than one line.
|
||||
Enabled: true
|
||||
EnforcedStyle: indented
|
||||
|
||||
Layout/InitialIndentation:
|
||||
Description: >-
|
||||
Checks the indentation of the first non-blank non-comment line in a file.
|
||||
Enabled: false
|
||||
|
||||
# Lint
|
||||
|
||||
Lint/AmbiguousOperator:
|
||||
Description: >-
|
||||
Checks for ambiguous operators in the first argument of a
|
||||
method invocation without parentheses.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-as-args'
|
||||
Enabled: false
|
||||
|
||||
Lint/AmbiguousRegexpLiteral:
|
||||
Description: >-
|
||||
Checks for ambiguous regexp literals in the first argument of
|
||||
a method invocation without parenthesis.
|
||||
Enabled: false
|
||||
|
||||
Lint/AssignmentInCondition:
|
||||
Description: "Don't use assignment in conditions."
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition'
|
||||
Enabled: false
|
||||
|
||||
Lint/CircularArgumentReference:
|
||||
Description: "Don't refer to the keyword argument in the default value."
|
||||
Enabled: false
|
||||
|
||||
Lint/DeprecatedClassMethods:
|
||||
Description: 'Check for deprecated class method calls.'
|
||||
Enabled: false
|
||||
|
||||
Lint/DuplicatedKey:
|
||||
Description: 'Check for duplicate keys in hash literals.'
|
||||
Enabled: false
|
||||
|
||||
Lint/EachWithObjectArgument:
|
||||
Description: 'Check for immutable argument given to each_with_object.'
|
||||
Enabled: false
|
||||
|
||||
Lint/ElseLayout:
|
||||
Description: 'Check for odd code arrangement in an else block.'
|
||||
Enabled: false
|
||||
|
||||
Lint/FormatParameterMismatch:
|
||||
Description: 'The number of parameters to format/sprint must match the fields.'
|
||||
Enabled: false
|
||||
|
||||
Lint/HandleExceptions:
|
||||
Description: "Don't suppress exception."
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions'
|
||||
Enabled: false
|
||||
|
||||
Lint/LiteralAsCondition:
|
||||
Description: 'Checks of literals used in conditions.'
|
||||
Enabled: false
|
||||
|
||||
Lint/LiteralInInterpolation:
|
||||
Description: 'Checks for literals used in interpolation.'
|
||||
Enabled: false
|
||||
|
||||
Lint/Loop:
|
||||
Description: >-
|
||||
Use Kernel#loop with break rather than begin/end/until or
|
||||
begin/end/while for post-loop tests.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#loop-with-break'
|
||||
Enabled: false
|
||||
|
||||
Lint/NestedMethodDefinition:
|
||||
Description: 'Do not use nested method definitions.'
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-methods'
|
||||
Enabled: false
|
||||
|
||||
Lint/NonLocalExitFromIterator:
|
||||
Description: 'Do not use return in iterator to cause non-local exit.'
|
||||
Enabled: false
|
||||
|
||||
Lint/ParenthesesAsGroupedExpression:
|
||||
Description: >-
|
||||
Checks for method calls with a space before the opening
|
||||
parenthesis.
|
||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces'
|
||||
Enabled: false
|
||||
|
||||
Lint/RequireParentheses:
|
||||
Description: >-
|
||||
Use parentheses in the method call to avoid confusion
|
||||
about precedence.
|
||||
Enabled: false
|
||||
|
||||
Lint/UnderscorePrefixedVariableName:
|
||||
Description: 'Do not use prefix `_` for a variable that is used.'
|
||||
Enabled: false
|
||||
|
||||
Lint/UnneededCopDisableDirective:
|
||||
Description: >-
|
||||
Checks for rubocop:disable comments that can be removed.
|
||||
Note: this cop is not disabled when disabling all cops.
|
||||
It must be explicitly disabled.
|
||||
Enabled: false
|
||||
|
||||
Lint/Void:
|
||||
Description: 'Possible use of operator/literal/variable in void context.'
|
||||
Enabled: false
|
||||
|
||||
# Performance
|
||||
|
||||
Performance/CaseWhenSplat:
|
||||
Description: >-
|
||||
Place `when` conditions that use splat at the end
|
||||
of the list of `when` branches.
|
||||
Enabled: false
|
||||
|
||||
Performance/Count:
|
||||
Description: >-
|
||||
Use `count` instead of `select...size`, `reject...size`,
|
||||
`select...count`, `reject...count`, `select...length`,
|
||||
and `reject...length`.
|
||||
Enabled: false
|
||||
|
||||
Performance/Detect:
|
||||
Description: >-
|
||||
Use `detect` instead of `select.first`, `find_all.first`,
|
||||
`select.last`, and `find_all.last`.
|
||||
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code'
|
||||
Enabled: false
|
||||
|
||||
Performance/FlatMap:
|
||||
Description: >-
|
||||
Use `Enumerable#flat_map`
|
||||
instead of `Enumerable#map...Array#flatten(1)`
|
||||
or `Enumberable#collect..Array#flatten(1)`
|
||||
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code'
|
||||
Enabled: false
|
||||
|
||||
Performance/ReverseEach:
|
||||
Description: 'Use `reverse_each` instead of `reverse.each`.'
|
||||
Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code'
|
||||
Enabled: false
|
||||
|
||||
Performance/Sample:
|
||||
Description: >-
|
||||
Use `sample` instead of `shuffle.first`,
|
||||
`shuffle.last`, and `shuffle[Fixnum]`.
|
||||
Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code'
|
||||
Enabled: false
|
||||
|
||||
Performance/Size:
|
||||
Description: >-
|
||||
Use `size` instead of `count` for counting
|
||||
the number of elements in `Array` and `Hash`.
|
||||
Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code'
|
||||
Enabled: false
|
||||
|
||||
Performance/StringReplacement:
|
||||
Description: >-
|
||||
Use `tr` instead of `gsub` when you are replacing the same
|
||||
number of characters. Use `delete` instead of `gsub` when
|
||||
you are deleting characters.
|
||||
Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code'
|
||||
Enabled: false
|
||||
|
||||
# Rails
|
||||
|
||||
Rails/ActionFilter:
|
||||
Description: 'Enforces consistent use of action filter methods.'
|
||||
Enabled: false
|
||||
|
||||
Rails/Date:
|
||||
Description: >-
|
||||
Checks the correct usage of date aware methods,
|
||||
such as Date.today, Date.current etc.
|
||||
Enabled: false
|
||||
|
||||
Rails/FindBy:
|
||||
Description: 'Prefer find_by over where.first.'
|
||||
Enabled: false
|
||||
|
||||
Rails/FindEach:
|
||||
Description: 'Prefer all.find_each over all.find.'
|
||||
Enabled: false
|
||||
|
||||
Rails/HasAndBelongsToMany:
|
||||
Description: 'Prefer has_many :through to has_and_belongs_to_many.'
|
||||
Enabled: false
|
||||
|
||||
Rails/Output:
|
||||
Description: 'Checks for calls to puts, print, etc.'
|
||||
Enabled: false
|
||||
|
||||
Rails/ReadWriteAttribute:
|
||||
Description: >-
|
||||
Checks for read_attribute(:attr) and
|
||||
write_attribute(:attr, val).
|
||||
Enabled: false
|
||||
|
||||
Rails/ScopeArgs:
|
||||
Description: 'Checks the arguments of ActiveRecord scopes.'
|
||||
Enabled: false
|
||||
|
||||
Rails/TimeZone:
|
||||
Description: 'Checks the correct usage of time zone aware methods.'
|
||||
StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time'
|
||||
Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
|
||||
Enabled: false
|
||||
|
||||
Rails/Validation:
|
||||
Description: 'Use validates :attribute, hash of validations.'
|
||||
Enabled: false
|
||||
3
.travis.yml
Normal file
3
.travis.yml
Normal file
@ -0,0 +1,3 @@
|
||||
rvm:
|
||||
- 1.9.2
|
||||
- 1.9.3
|
||||
22
CHANGELOG.md
22
CHANGELOG.md
@ -1,25 +1,3 @@
|
||||
## v2.0.1
|
||||
|
||||
* Update homepage to new location.
|
||||
|
||||
## v2.0.0
|
||||
|
||||
* Remove dependency on supermodel for tests.
|
||||
|
||||
## v1.2.0
|
||||
|
||||
* Added ability to substitute hyphen delimiter.
|
||||
|
||||
## v1.1.0
|
||||
|
||||
* Slugs are now generated with `parameterize`.
|
||||
* Spaces get converted to hyphens instead of underscores. Hyphens in the original string are collapsed.
|
||||
* Removed dependence on iconv.
|
||||
|
||||
## v1.0.0
|
||||
|
||||
* Added test for slugs with numbers.
|
||||
|
||||
## v0.2.1
|
||||
|
||||
* Added basic transliteration with IConv.
|
||||
|
||||
2
Gemfile
2
Gemfile
@ -1,4 +1,4 @@
|
||||
source "https://rubygems.org"
|
||||
source 'https://rubygems.org'
|
||||
|
||||
# Specify your gem's dependencies in slugtastic.gemspec
|
||||
gemspec
|
||||
|
||||
59
Gemfile.lock
59
Gemfile.lock
@ -1,49 +1,36 @@
|
||||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
slugtastic (2.0.1)
|
||||
slugtastic (0.2.1)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activemodel (5.2.0)
|
||||
activesupport (= 5.2.0)
|
||||
activesupport (5.2.0)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
tzinfo (~> 1.1)
|
||||
concurrent-ruby (1.0.5)
|
||||
diff-lcs (1.3)
|
||||
i18n (1.0.1)
|
||||
concurrent-ruby (~> 1.0)
|
||||
minitest (5.11.3)
|
||||
rake (12.3.1)
|
||||
rspec (3.7.0)
|
||||
rspec-core (~> 3.7.0)
|
||||
rspec-expectations (~> 3.7.0)
|
||||
rspec-mocks (~> 3.7.0)
|
||||
rspec-core (3.7.1)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-expectations (3.7.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-mocks (3.7.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-support (3.7.1)
|
||||
thread_safe (0.3.6)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
activemodel (3.0.17)
|
||||
activesupport (= 3.0.17)
|
||||
builder (~> 2.1.2)
|
||||
i18n (~> 0.5.0)
|
||||
activesupport (3.0.17)
|
||||
builder (2.1.2)
|
||||
diff-lcs (1.1.3)
|
||||
i18n (0.5.0)
|
||||
rake (0.9.2.2)
|
||||
rspec (2.11.0)
|
||||
rspec-core (~> 2.11.0)
|
||||
rspec-expectations (~> 2.11.0)
|
||||
rspec-mocks (~> 2.11.0)
|
||||
rspec-core (2.11.1)
|
||||
rspec-expectations (2.11.2)
|
||||
diff-lcs (~> 1.1.3)
|
||||
rspec-mocks (2.11.2)
|
||||
supermodel (0.1.6)
|
||||
activemodel (~> 3.0.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
activemodel (~> 5)
|
||||
rake (~> 12.3)
|
||||
rspec (~> 3.7)
|
||||
rake
|
||||
rspec
|
||||
slugtastic!
|
||||
|
||||
BUNDLED WITH
|
||||
1.16.1
|
||||
supermodel
|
||||
|
||||
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
||||
Copyright (c) 2015 Dan Barber
|
||||
Copyright (c) 2012 Dan Barber
|
||||
|
||||
MIT License
|
||||
|
||||
|
||||
24
README.md
24
README.md
@ -1,25 +1,19 @@
|
||||
# Slugtastic
|
||||
# Slugtastic [](http://travis-ci.org/danbee/slugtastic)
|
||||
|
||||
[](https://codeship.com/projects/30797)
|
||||
|
||||
[](https://badge.fury.io/rb/slugtastic)
|
||||
|
||||
Simple gem for autogenerating permalink style slugs for your ActiveRecord
|
||||
models.
|
||||
Simple gem for autogenerating permalink style slugs for your ActiveRecord models.
|
||||
|
||||
## Requirements
|
||||
|
||||
* Ruby 2.2.0+
|
||||
* Rails 5 or higher.
|
||||
* Ruby 1.9.2 or 1.9.3
|
||||
* Rails 3.1 or higher.
|
||||
|
||||
It will probably work just find with earlier versions--down to Rails 3.1 and
|
||||
Ruby 1.9.3--but it's not tested.
|
||||
It should work with Rails 3.0 but it hasn't been tested.
|
||||
|
||||
## Installation
|
||||
|
||||
Add this line to your application's Gemfile:
|
||||
|
||||
gem "slugtastic"
|
||||
gem 'slugtastic'
|
||||
|
||||
And then execute:
|
||||
|
||||
@ -33,11 +27,9 @@ Or install it yourself as:
|
||||
|
||||
Usage is very simple. Just add the following to your model:
|
||||
|
||||
slug :slug, from: :title
|
||||
has_slug :slug, :from => :title
|
||||
|
||||
This will generate a slug string from the title attribute and store it in the
|
||||
slug attribute unless the slug already contains a string. The slug is generated
|
||||
pre-validation so you can still use `validates_presence_of :slug`.
|
||||
This will generate a slug string from the title atrribute and store it in the slug attribute unless the slug already contains a string. The slug is generated pre-validation so you can still use `validates_presence_of :slug`.
|
||||
|
||||
There are no extra options at present.
|
||||
|
||||
|
||||
@ -2,11 +2,12 @@ require "slugtastic/version"
|
||||
require "slugtastic/model_additions"
|
||||
require "slugtastic/railtie" if defined? Rails
|
||||
|
||||
# TODO: iconv will be deprecated in the future.
|
||||
require 'iconv'
|
||||
|
||||
module Slugtastic
|
||||
def self.generate_slug(string, delimiter = nil)
|
||||
def self.generate_slug(string)
|
||||
return if string.nil?
|
||||
slug = string.parameterize
|
||||
slug.gsub!("-", delimiter) if delimiter
|
||||
slug
|
||||
Iconv.iconv("ASCII//TRANSLIT//IGNORE", "UTF-8", string).join.downcase.gsub(/ /, '_').gsub(/[^a-z0-9\-_]/, '')
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,25 +1,19 @@
|
||||
module Slugtastic
|
||||
module ModelAdditions
|
||||
|
||||
# To generate a slug from another value, call <tt>has_slug</tt> in any
|
||||
# ActiveRecord model and pass in the name of the slug attribute.
|
||||
# By default the slug will be generated from the <tt>title</tt> attribute,
|
||||
# but you can specify by adding <tt>:from => {attribute}</tt>.
|
||||
# By default the slug will be generated from the <tt>title</tt> attribute, but
|
||||
# you can specify by adding <tt>:from => {attribute}</tt>.
|
||||
#
|
||||
# class Article < ActiveRecord::Base
|
||||
# has_slug :slug, :from => :title
|
||||
# end
|
||||
#
|
||||
def slug(name, options = {})
|
||||
options.reverse_merge!(from: :title)
|
||||
def has_slug name, options = { :from => :title }
|
||||
before_validation do |record|
|
||||
send("#{name}=", Slugtastic.generate_slug(send(options[:from]))) if send(name).nil? or send(name).blank?
|
||||
end
|
||||
end
|
||||
|
||||
before_validation do
|
||||
if send(name).nil? || send(name).blank?
|
||||
send(
|
||||
"#{name}=",
|
||||
Slugtastic.generate_slug(send(options[:from]), options[:delimiter]),
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
module Slugtastic
|
||||
VERSION = "2.0.1".freeze
|
||||
VERSION = "1.0.0"
|
||||
end
|
||||
|
||||
@ -1,24 +1,21 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
require File.expand_path("lib/slugtastic/version", __dir__)
|
||||
require File.expand_path('../lib/slugtastic/version', __FILE__)
|
||||
|
||||
Gem::Specification.new do |gem|
|
||||
gem.authors = ["Dan Barber"]
|
||||
gem.email = ["danbee@gmail.com"]
|
||||
gem.licenses = ["MIT"]
|
||||
gem.description = "A simple slug string generator for ActiveRecord. " \
|
||||
"Will populate a slug attribute from another attribute."
|
||||
gem.summary = "A simple slug string generator for ActiveRecord."
|
||||
gem.homepage = "https://danbee.github.io/slugtastic"
|
||||
gem.description = %q{A simple slug string generator for ActiveRecord. Will populate a slug attribute from another attribute.}
|
||||
gem.summary = %q{A simple slug string generator for ActiveRecord.}
|
||||
gem.homepage = ""
|
||||
|
||||
gem.files = `git ls-files`.split($\)
|
||||
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
||||
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
||||
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
||||
gem.name = "slugtastic"
|
||||
gem.require_paths = ["lib"]
|
||||
gem.version = Slugtastic::VERSION
|
||||
|
||||
gem.add_development_dependency "activemodel", "~> 5"
|
||||
gem.add_development_dependency "rake", "~> 12.3"
|
||||
gem.add_development_dependency "rspec", "~> 3.7"
|
||||
gem.add_development_dependency "rake"
|
||||
gem.add_development_dependency "rspec"
|
||||
gem.add_development_dependency "supermodel"
|
||||
end
|
||||
|
||||
@ -1,48 +1,24 @@
|
||||
# encoding: utf-8
|
||||
require 'spec_helper'
|
||||
|
||||
require "spec_helper"
|
||||
require "support/fake_model"
|
||||
|
||||
class BaseModel < FakeModel
|
||||
class Model < SuperModel::Base
|
||||
include ActiveModel::Validations::Callbacks
|
||||
extend Slugtastic::ModelAdditions
|
||||
end
|
||||
|
||||
class Model < BaseModel
|
||||
attr_accessor :slug, :name
|
||||
slug :slug, from: :name
|
||||
end
|
||||
|
||||
class ModelDefault < BaseModel
|
||||
attr_accessor :slug, :title
|
||||
slug :slug
|
||||
end
|
||||
|
||||
class ModelDelimiter < BaseModel
|
||||
attr_accessor :slug, :title
|
||||
slug :slug, delimiter: "_"
|
||||
has_slug :slug, from: :title
|
||||
end
|
||||
|
||||
describe Slugtastic::ModelAdditions do
|
||||
it "generates a slug from the name" do
|
||||
expect(Model.create!(name: "A Simple Name").slug).to eq "a-simple-name"
|
||||
end
|
||||
|
||||
it "defaults to generating the slug from title" do
|
||||
expect(ModelDefault.create!(title: "A Simple Title").slug)
|
||||
.to eq "a-simple-title"
|
||||
end
|
||||
|
||||
it "generates a slug from the title with delimiter substitutions" do
|
||||
expect(ModelDelimiter.create!(title: "A Simple Title").slug)
|
||||
.to eq "a_simple_title"
|
||||
it "generates a slug from the title" do
|
||||
Model.create!(:title => "A Simple Title").slug.should eq "a_simple_title"
|
||||
end
|
||||
|
||||
it "doesn't regenerate the slug if it already exists" do
|
||||
model = Model.create!(name: "A Simple Name")
|
||||
expect(model.slug).to eq "a-simple-name"
|
||||
model = Model.create!(:title => "A Simple Title")
|
||||
model.slug.should eq "a_simple_title"
|
||||
|
||||
model.name = "A new title"
|
||||
model.title = "A new title"
|
||||
model.save
|
||||
expect(model.slug).to eq "a-simple-name"
|
||||
model.slug.should eq "a_simple_title"
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,43 +1,31 @@
|
||||
# encoding: utf-8
|
||||
|
||||
require "spec_helper"
|
||||
require 'spec_helper'
|
||||
|
||||
describe Slugtastic do
|
||||
describe ".generate_slug" do
|
||||
it "returns empty if the input string is empty" do
|
||||
expect(Slugtastic.generate_slug("")).to eq ""
|
||||
Slugtastic.generate_slug("").should eq ""
|
||||
end
|
||||
|
||||
it "generates a slug from a simple string" do
|
||||
expect(Slugtastic.generate_slug("A simple string."))
|
||||
.to eq "a-simple-string"
|
||||
end
|
||||
|
||||
it "substitutes hyphens for delimiter if specified" do
|
||||
expect(Slugtastic.generate_slug("A simple string.", "_"))
|
||||
.to eq "a_simple_string"
|
||||
Slugtastic.generate_slug("A simple string.").should eq "a_simple_string"
|
||||
end
|
||||
|
||||
it "generates a slug from a string with numbers" do
|
||||
expect(Slugtastic.generate_slug("Slugtastic was built in 2012."))
|
||||
.to eq "slugtastic-was-built-in-2012"
|
||||
Slugtastic.generate_slug("Slugtastic was built in 2012.").should eq "slugtastic_was_built_in_2012"
|
||||
end
|
||||
|
||||
it "handles strings with hypens in them" do
|
||||
expect(Slugtastic.generate_slug("A string - with Hyphens"))
|
||||
.to eq "a-string-with-hyphens"
|
||||
Slugtastic.generate_slug("A string - with Hyphens").should eq "a_string_-_with_hyphens"
|
||||
end
|
||||
|
||||
it "handles strings with other characters in them" do
|
||||
expect(Slugtastic.generate_slug("A string, with /All sorts!"))
|
||||
.to eq "a-string-with-all-sorts"
|
||||
Slugtastic.generate_slug("A string, with /All sorts!").should eq "a_string_with_all_sorts"
|
||||
end
|
||||
|
||||
it "handles basic transliteration" do
|
||||
expect(Slugtastic.generate_slug("Un été À la maison."))
|
||||
.to eq "un-ete-a-la-maison"
|
||||
expect(Slugtastic.generate_slug("Ātri brūna lapsa"))
|
||||
.to eq "atri-bruna-lapsa"
|
||||
Slugtastic.generate_slug("Un été À la maison.").should eq "un_ete_a_la_maison"
|
||||
Slugtastic.generate_slug("Ātri brūna lapsa").should eq "atri_bruna_lapsa"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1 +1,2 @@
|
||||
require "slugtastic"
|
||||
require "supermodel"
|
||||
|
||||
@ -1,21 +0,0 @@
|
||||
require "active_support/core_ext/hash/reverse_merge"
|
||||
require "active_model"
|
||||
|
||||
class FakeModel
|
||||
include ActiveModel::Validations::Callbacks
|
||||
|
||||
def initialize(attrs = {})
|
||||
attrs.each do |key, value|
|
||||
instance_variable_set(:"@#{key}", value)
|
||||
end
|
||||
end
|
||||
|
||||
def self.create!(attrs)
|
||||
new(attrs).save
|
||||
end
|
||||
|
||||
def save
|
||||
_run_validation_callbacks
|
||||
self
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue
Block a user