wearefine/fae

View on GitHub
app/helpers/fae/form_helper.rb

Summary

Maintainability
B
4 hrs
Test Coverage

Module has too many lines. [216/100]
Open

  module FormHelper

    def fae_input(f, attribute, options={})
      custom_options attribute, options
      language_support f, attribute, options
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks if the length a module exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable.

Assignment Branch Condition size for fae_pulldown is too high. [34.21/15]
Open

    def fae_pulldown(f, attribute, options={})
      raise "Fae::MissingRequiredOption: fae_pulldown requires a 'collection' when using it on an ActiveRecord attribute." if !options.has_key?(:collection) && f.object.attribute_names.include?(attribute.to_s)
      raise "Fae::ImproperOptionValue: The value #{options[:size]} is not a valid option for 'size'. Please use 'short' or 'long'." if options[:size].present? && ['short','long'].include?(options[:size]) == false
      raise "Fae::ImproperOptionValue: The value #{options[:search]} is not a valid option for 'search'. Please use a Boolean." if options[:search].present? && !!options[:search] != options[:search]

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Assignment Branch Condition size for label_and_hint is too high. [31.7/15]
Open

    def label_and_hint(attribute, options)
      hint = options[:hint]

      options[:helper_text] = attempt_common_helper_text(attribute) if options[:helper_text].blank?

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Assignment Branch Condition size for fae_grouped_select is too high. [25.02/15]
Open

    def fae_grouped_select(f, attribute, options={})
      raise "Fae::MissingRequiredOption: fae_grouped_select requires a `collection` option or `groups` and `labels` options." if !options.has_key?(:collection) && !options.has_key?(:groups) && !options.has_key?(:labels)
      raise "Fae::MissingRequiredOption: fae_grouped_select required a `labels` option with a value containing an array when using the `groups` option." if options[:groups].present? && options[:labels].blank?
      raise "Fae::MissingRequiredOption: fae_grouped_select required a `groups` option with a value containing an array when using the `labels` option." if options[:labels].present? && options[:groups].blank?

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Assignment Branch Condition size for language_support is too high. [20.27/15]
Open

    def language_support(f, attribute, options)
      return if Fae.languages.blank?

      attribute_array = attribute.to_s.split('_')
      language_suffix = attribute_array.pop
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Cyclomatic complexity for label_and_hint is too high. [11/6]
Open

    def label_and_hint(attribute, options)
      hint = options[:hint]

      options[:helper_text] = attempt_common_helper_text(attribute) if options[:helper_text].blank?

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the cyclomatic complexity of methods is not higher than the configured maximum. The cyclomatic complexity is the number of linearly independent paths through a method. The algorithm counts decision points and adds one.

An if statement (or unless or ?:) increases the complexity by one. An else branch does not, since it doesn't add a decision point. The && operator (or keyword and) can be converted to a nested if statement, and ||/or is shorthand for a sequence of ifs, so they also add one. Loops can be said to have an exit condition, so they add one.

Cyclomatic complexity for fae_pulldown is too high. [10/6]
Open

    def fae_pulldown(f, attribute, options={})
      raise "Fae::MissingRequiredOption: fae_pulldown requires a 'collection' when using it on an ActiveRecord attribute." if !options.has_key?(:collection) && f.object.attribute_names.include?(attribute.to_s)
      raise "Fae::ImproperOptionValue: The value #{options[:size]} is not a valid option for 'size'. Please use 'short' or 'long'." if options[:size].present? && ['short','long'].include?(options[:size]) == false
      raise "Fae::ImproperOptionValue: The value #{options[:search]} is not a valid option for 'search'. Please use a Boolean." if options[:search].present? && !!options[:search] != options[:search]

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the cyclomatic complexity of methods is not higher than the configured maximum. The cyclomatic complexity is the number of linearly independent paths through a method. The algorithm counts decision points and adds one.

An if statement (or unless or ?:) increases the complexity by one. An else branch does not, since it doesn't add a decision point. The && operator (or keyword and) can be converted to a nested if statement, and ||/or is shorthand for a sequence of ifs, so they also add one. Loops can be said to have an exit condition, so they add one.

Perceived complexity for label_and_hint is too high. [11/7]
Open

    def label_and_hint(attribute, options)
      hint = options[:hint]

      options[:helper_text] = attempt_common_helper_text(attribute) if options[:helper_text].blank?

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop tries to produce a complexity score that's a measure of the complexity the reader experiences when looking at a method. For that reason it considers when nodes as something that doesn't add as much complexity as an if or a &&. Except if it's one of those special case/when constructs where there's no expression after case. Then the cop treats it as an if/elsif/elsif... and lets all the when nodes count. In contrast to the CyclomaticComplexity cop, this cop considers else nodes as adding complexity.

Example:

def my_method                   # 1
  if cond                       # 1
    case var                    # 2 (0.8 + 4 * 0.2, rounded)
    when 1 then func_one
    when 2 then func_two
    when 3 then func_three
    when 4..10 then func_other
    end
  else                          # 1
    do_something until a && b   # 2
  end                           # ===
end                             # 7 complexity points

Assignment Branch Condition size for fae_multiselect is too high. [18.44/15]
Open

    def fae_multiselect(f, attribute, options={})
      raise "Fae::'#{attribute}' must be an association of #{f.object}" if !is_association?(f, attribute)
      raise "Fae::ImproperOptionValue: The value '#{options[:two_pane]}' is not a valid option for 'two_pane'. Please use a Boolean." if options[:two_pane].present? && !!options[:two_pane] != options[:two_pane]

      options.update(input_class: "#{options[:input_class]} multiselect") if options[:two_pane] == true
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Assignment Branch Condition size for set_maxlength is too high. [18.17/15]
Open

    def set_maxlength(f, attribute, options)
      column = f.object.class.columns_hash[attribute.to_s]
      if column.present? && (column.sql_type.include?('varchar') || column.sql_type == 'text')
        # Rails 4.1 supports column.limit, 4.2 supports column.cast_type.limit
        limit = column.try(:limit) || column.try(:cast_type).try(:limit)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Perceived complexity for fae_pulldown is too high. [10/7]
Open

    def fae_pulldown(f, attribute, options={})
      raise "Fae::MissingRequiredOption: fae_pulldown requires a 'collection' when using it on an ActiveRecord attribute." if !options.has_key?(:collection) && f.object.attribute_names.include?(attribute.to_s)
      raise "Fae::ImproperOptionValue: The value #{options[:size]} is not a valid option for 'size'. Please use 'short' or 'long'." if options[:size].present? && ['short','long'].include?(options[:size]) == false
      raise "Fae::ImproperOptionValue: The value #{options[:search]} is not a valid option for 'search'. Please use a Boolean." if options[:search].present? && !!options[:search] != options[:search]

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop tries to produce a complexity score that's a measure of the complexity the reader experiences when looking at a method. For that reason it considers when nodes as something that doesn't add as much complexity as an if or a &&. Except if it's one of those special case/when constructs where there's no expression after case. Then the cop treats it as an if/elsif/elsif... and lets all the when nodes count. In contrast to the CyclomaticComplexity cop, this cop considers else nodes as adding complexity.

Example:

def my_method                   # 1
  if cond                       # 1
    case var                    # 2 (0.8 + 4 * 0.2, rounded)
    when 1 then func_one
    when 2 then func_two
    when 3 then func_three
    when 4..10 then func_other
    end
  else                          # 1
    do_something until a && b   # 2
  end                           # ===
end                             # 7 complexity points

Cyclomatic complexity for fae_grouped_select is too high. [8/6]
Open

    def fae_grouped_select(f, attribute, options={})
      raise "Fae::MissingRequiredOption: fae_grouped_select requires a `collection` option or `groups` and `labels` options." if !options.has_key?(:collection) && !options.has_key?(:groups) && !options.has_key?(:labels)
      raise "Fae::MissingRequiredOption: fae_grouped_select required a `labels` option with a value containing an array when using the `groups` option." if options[:groups].present? && options[:labels].blank?
      raise "Fae::MissingRequiredOption: fae_grouped_select required a `groups` option with a value containing an array when using the `labels` option." if options[:labels].present? && options[:groups].blank?

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the cyclomatic complexity of methods is not higher than the configured maximum. The cyclomatic complexity is the number of linearly independent paths through a method. The algorithm counts decision points and adds one.

An if statement (or unless or ?:) increases the complexity by one. An else branch does not, since it doesn't add a decision point. The && operator (or keyword and) can be converted to a nested if statement, and ||/or is shorthand for a sequence of ifs, so they also add one. Loops can be said to have an exit condition, so they add one.

Method has too many lines. [12/10]
Open

    def label_and_hint(attribute, options)
      hint = options[:hint]

      options[:helper_text] = attempt_common_helper_text(attribute) if options[:helper_text].blank?

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks if the length of a method exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable.

Assignment Branch Condition size for fae_input is too high. [16.28/15]
Open

    def fae_input(f, attribute, options={})
      custom_options attribute, options
      language_support f, attribute, options
      label_and_hint attribute, options
      list_order f, attribute, options
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Perceived complexity for fae_grouped_select is too high. [8/7]
Open

    def fae_grouped_select(f, attribute, options={})
      raise "Fae::MissingRequiredOption: fae_grouped_select requires a `collection` option or `groups` and `labels` options." if !options.has_key?(:collection) && !options.has_key?(:groups) && !options.has_key?(:labels)
      raise "Fae::MissingRequiredOption: fae_grouped_select required a `labels` option with a value containing an array when using the `groups` option." if options[:groups].present? && options[:labels].blank?
      raise "Fae::MissingRequiredOption: fae_grouped_select required a `groups` option with a value containing an array when using the `labels` option." if options[:labels].present? && options[:groups].blank?

Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop tries to produce a complexity score that's a measure of the complexity the reader experiences when looking at a method. For that reason it considers when nodes as something that doesn't add as much complexity as an if or a &&. Except if it's one of those special case/when constructs where there's no expression after case. Then the cop treats it as an if/elsif/elsif... and lets all the when nodes count. In contrast to the CyclomaticComplexity cop, this cop considers else nodes as adding complexity.

Example:

def my_method                   # 1
  if cond                       # 1
    case var                    # 2 (0.8 + 4 * 0.2, rounded)
    when 1 then func_one
    when 2 then func_two
    when 3 then func_three
    when 4..10 then func_other
    end
  else                          # 1
    do_something until a && b   # 2
  end                           # ===
end                             # 7 complexity points

Method has too many lines. [11/10]
Open

    def language_support(f, attribute, options)
      return if Fae.languages.blank?

      attribute_array = attribute.to_s.split('_')
      language_suffix = attribute_array.pop
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks if the length of a method exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable.

Assignment Branch Condition size for custom_options is too high. [15.81/15]
Open

    def custom_options(attribute, options)
      add_input_class(options, options[:input_class]) if options[:input_class].present?
      add_input_class(options, 'slug') if attribute == :slug
      options.update(wrapper_class: "#{options[:wrapper_class]} input") if options[:wrapper_class].present?
      options.update(validate: true) unless options[:validate].present? && options[:validate] == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Method label_and_hint has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
Open

    def label_and_hint(attribute, options)
      hint = options[:hint]

      options[:helper_text] = attempt_common_helper_text(attribute) if options[:helper_text].blank?

Severity: Minor
Found in app/helpers/fae/form_helper.rb - About 1 hr to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Method language_support has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
Open

    def language_support(f, attribute, options)
      return if Fae.languages.blank?

      attribute_array = attribute.to_s.split('_')
      language_suffix = attribute_array.pop
Severity: Minor
Found in app/helpers/fae/form_helper.rb - About 45 mins to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Method fae_pulldown has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
Open

    def fae_pulldown(f, attribute, options={})
      raise "Fae::MissingRequiredOption: fae_pulldown requires a 'collection' when using it on an ActiveRecord attribute." if !options.has_key?(:collection) && f.object.attribute_names.include?(attribute.to_s)
      raise "Fae::ImproperOptionValue: The value #{options[:size]} is not a valid option for 'size'. Please use 'short' or 'long'." if options[:size].present? && ['short','long'].include?(options[:size]) == false
      raise "Fae::ImproperOptionValue: The value #{options[:search]} is not a valid option for 'search'. Please use a Boolean." if options[:search].present? && !!options[:search] != options[:search]

Severity: Minor
Found in app/helpers/fae/form_helper.rb - About 35 mins to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Method set_maxlength has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
Open

    def set_maxlength(f, attribute, options)
      column = f.object.class.columns_hash[attribute.to_s]
      if column.present? && (column.sql_type.include?('varchar') || column.sql_type == 'text')
        # Rails 4.1 supports column.limit, 4.2 supports column.cast_type.limit
        limit = column.try(:limit) || column.try(:cast_type).try(:limit)
Severity: Minor
Found in app/helpers/fae/form_helper.rb - About 35 mins to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Method custom_options has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
Open

    def custom_options(attribute, options)
      add_input_class(options, options[:input_class]) if options[:input_class].present?
      add_input_class(options, 'slug') if attribute == :slug
      options.update(wrapper_class: "#{options[:wrapper_class]} input") if options[:wrapper_class].present?
      options.update(validate: true) unless options[:validate].present? && options[:validate] == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb - About 25 mins to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Similar blocks of code found in 2 locations. Consider refactoring.
Open

    def add_wrapper_class(options, class_name)
      if options.key?(:wrapper_html)
        options[:wrapper_html].merge!({class: "#{options[:wrapper_html][:class]} #{class_name}"})
      else
        options[:wrapper_html] = { class: class_name }
Severity: Minor
Found in app/helpers/fae/form_helper.rb and 1 other location - About 20 mins to fix
app/helpers/fae/form_helper.rb on lines 188..192

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 28.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Similar blocks of code found in 2 locations. Consider refactoring.
Open

    def add_input_class(options, class_name)
      if options.key?(:input_html)
        options[:input_html].merge!({class: "#{options[:input_html][:class]} #{class_name}"})
      else
        options[:input_html] = { class: class_name }
Severity: Minor
Found in app/helpers/fae/form_helper.rb and 1 other location - About 20 mins to fix
app/helpers/fae/form_helper.rb on lines 196..200

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 28.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Extra blank line detected.
Open


    private
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cops checks for two or more consecutive blank lines.

Example:

# bad - It has two empty lines.
some_method
# one empty line
# two empty lines
some_method

# good
some_method
# one empty line
some_method

Surrounding space missing in default value assignment.
Open

    def fae_multiselect(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Surrounding space missing in default value assignment.
Open

    def fae_video_url(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Space inside } missing.
Open

        options[:input_html].merge!({class: "#{options[:input_html][:class]} #{class_name}"})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that braces used for hash literals have or don't have surrounding space depending on configuration.

Example: EnforcedStyle: space

# The `space` style enforces that hash literals have
# surrounding space.

# bad
h = {a: 1, b: 2}

# good
h = { a: 1, b: 2 }

Example: EnforcedStyle: no_space

# The `no_space` style enforces that hash literals have
# no surrounding space.

# bad
h = { a: 1, b: 2 }

# good
h = {a: 1, b: 2}

Example: EnforcedStyle: compact

# The `compact` style normally requires a space inside
# hash braces, with the exception that successive left
# braces or right braces are collapsed together in nested hashes.

# bad
h = { a: { b: 2 } }

# good
h = { a: { b: 2 }}

Line is too long. [209/80]
Open

      raise "Fae::MissingRequiredOption: fae_pulldown requires a 'collection' when using it on an ActiveRecord attribute." if !options.has_key?(:collection) && f.object.attribute_names.include?(attribute.to_s)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [110/80]
Open

      raise "Fae::MissingRequiredOption: fae_daterange requires the 'label' option." if options[:label].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [192/80]
Open

      raise "Fae::MalformedArgument: fae_daterange requires an array of two attributes as it's second argument." unless attr_array.present? && attr_array.is_a?(Array) && attr_array.length == 2
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [83/80]
Open

      attribute_name = options[:as].to_s == 'hidden' ? '' : attribute.to_s.titleize
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [103/80]
Open

      raise "Fae::groups and labels must be an array" if !(labels.is_a? Array) || !(groups.is_a? Array)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Rename is_attribute_or_association? to attribute_or_association?.
Open

    def is_attribute_or_association?(f, attribute)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop makes sure that predicates are named properly.

Example:

# bad
def is_even?(value)
end

# good
def even?(value)
end

# bad
def has_value?
end

# good
def value?
end

Line is too long. [131/80]
Open

      options.update(as: :radio_collection, wrapper_class: "#{options[:wrapper_class]} #{options[:alignment]}", no_label_div: true)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Unused method argument - f. If it's necessary, use _ or _f as an argument name to indicate that it won't be used.
Open

    def language_support(f, attribute, options)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for unused method arguments.

Example:

# bad

def some_method(used, unused, _unused_but_allowed)
  puts used
end

Example:

# good

def some_method(used, _unused, _unused_but_allowed)
  puts used
end

Line is too long. [219/80]
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select requires a `collection` option or `groups` and `labels` options." if !options.has_key?(:collection) && !options.has_key?(:groups) && !options.has_key?(:labels)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [126/80]
Open

          concat(content_tag(:span, 'Markdown Supported', class: 'markdown-support')) if options[:markdown_supported].present?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Avoid the use of double negation (!!).
Open

      raise "Fae::ImproperOptionValue: The value #{options[:search]} is not a valid option for 'search'. Please use a Boolean." if options[:search].present? && !!options[:search] != options[:search]
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for uses of double negation (!!) to convert something to a boolean value. As this is both cryptic and usually redundant, it should be avoided.

Example:

# bad
!!something

# good
!something.nil?

Please, note that when something is a boolean value !!something and !something.nil? are not the same thing. As you're unlikely to write code that can accept values of any type this is rarely a problem in practice.

Use a guard clause instead of wrapping the code inside a conditional expression.
Open

      if is_association?(f, attribute) && !options[:collection]
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Use a guard clause instead of wrapping the code inside a conditional expression

Example:

# bad
def test
  if something
    work
  end
end

# good
def test
  return unless something
  work
end

# also good
def test
  work if something
end

# bad
if something
  raise 'exception'
else
  ok
end

# good
raise 'exception' if something
ok

Redundant return detected.
Open

       return t('fae.seo_title')
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for redundant return expressions.

Example:

def test
  return something
end

def test
  one
  two
  three
  return something
end

It should be extended to handle methods whose body is if/else or a case expression with a default branch.

Surrounding space missing in default value assignment.
Open

    def fae_association(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Line is too long. [95/80]
Open

      options[:collection] ||= group_options_for_collection(options[:labels], options[:groups])
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [114/80]
Open

      options.update(as: :grouped_select, group_method: :last, wrapper_class: "#{options[:wrapper_class]} select")
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [87/80]
Open

      add_input_class(options, options[:input_class]) if options[:input_class].present?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Missing top-level module documentation comment.
Open

  module FormHelper
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for missing top-level documentation of classes and modules. Classes with no body are exempt from the check and so are namespace modules - modules that have nothing in their bodies except classes, other modules, or constant definitions.

The documentation requirement is annulled if the class or module has a "#:nodoc:" comment next to it. Likewise, "#:nodoc: all" does the same for all its children.

Example:

# bad
class Person
  # ...
end

# good
# Description/Explanation of Person class
class Person
  # ...
end

Use Hash#key? instead of Hash#has_key?.
Open

      return unless Fae.languages.has_key?(language_suffix.to_sym) || Fae.languages.has_key?(language_suffix)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop (by default) checks for uses of methods Hash#haskey? and Hash#hasvalue? where it enforces Hash#key? and Hash#value? It is configurable to enforce the inverse, using verbose method names also.

Example: EnforcedStyle: short (default)

# bad Hash#haskey? Hash#hasvalue?

# good Hash#key? Hash#value?

Example: EnforcedStyle: verbose

# bad Hash#key? Hash#value?

# good Hash#haskey? Hash#hasvalue?

Extra empty line detected at module body end.
Open


  end
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cops checks if empty lines around the bodies of modules match the configuration.

Example: EnforcedStyle: empty_lines

# good

module Foo

  def bar
    # ...
  end

end

Example: EnforcedStyle: emptylinesexcept_namespace

# good

module Foo
  module Bar

    # ...

  end
end

Example: EnforcedStyle: emptylinesspecial

# good
module Foo

  def bar; end

end

Example: EnforcedStyle: noemptylines (default)

# good

module Foo
  def bar
    # ...
  end
end

Surrounding space missing in default value assignment.
Open

    def fae_input(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Line is too long. [208/80]
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select required a `groups` option with a value containing an array when using the `labels` option." if options[:labels].present? && options[:groups].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Avoid the use of double negation (!!).
Open

      raise "Fae::ImproperOptionValue: The value '#{options[:two_pane]}' is not a valid option for 'two_pane'. Please use a Boolean." if options[:two_pane].present? && !!options[:two_pane] != options[:two_pane]
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for uses of double negation (!!) to convert something to a boolean value. As this is both cryptic and usually redundant, it should be avoided.

Example:

# bad
!!something

# good
!something.nil?

Please, note that when something is a boolean value !!something and !something.nil? are not the same thing. As you're unlikely to write code that can accept values of any type this is rarely a problem in practice.

Surrounding space missing in default value assignment.
Open

    def fae_pulldown(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Surrounding space missing in default value assignment.
Open

    def fae_datepicker(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Space inside } missing.
Open

        options[:wrapper_html].merge!({class: "#{options[:wrapper_html][:class]} #{class_name}"})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that braces used for hash literals have or don't have surrounding space depending on configuration.

Example: EnforcedStyle: space

# The `space` style enforces that hash literals have
# surrounding space.

# bad
h = {a: 1, b: 2}

# good
h = { a: 1, b: 2 }

Example: EnforcedStyle: no_space

# The `no_space` style enforces that hash literals have
# no surrounding space.

# bad
h = { a: 1, b: 2 }

# good
h = {a: 1, b: 2}

Example: EnforcedStyle: compact

# The `compact` style normally requires a space inside
# hash braces, with the exception that successive left
# braces or right braces are collapsed together in nested hashes.

# bad
h = { a: { b: 2 } }

# good
h = { a: { b: 2 }}

Line is too long. [83/80]
Open

      add_input_class(options, 'js-markdown-editor') if options[:markdown].present?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [212/80]
Open

      raise "Fae::ImproperOptionValue: The value #{options[:size]} is not a valid option for 'size'. Please use 'short' or 'long'." if options[:size].present? && ['short','long'].include?(options[:size]) == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [165/80]
Open

      raise "Fae::grouped options must be arrays of equal length. label length: #{labels.length}, options_length: #{groups.length}" if labels.length != groups.length
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Rename is_association? to association?.
Open

    def is_association?(f, attribute)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop makes sure that predicates are named properly.

Example:

# bad
def is_even?(value)
end

# good
def even?(value)
end

# bad
def has_value?
end

# good
def value?
end

Use a guard clause instead of wrapping the code inside a conditional expression.
Open

      if is_attribute_or_association?(f, attribute)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Use a guard clause instead of wrapping the code inside a conditional expression

Example:

# bad
def test
  if something
    work
  end
end

# good
def test
  return unless something
  work
end

# also good
def test
  work if something
end

# bad
if something
  raise 'exception'
else
  ok
end

# good
raise 'exception' if something
ok

Use Hash#key? instead of Hash#has_key?.
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select requires a `collection` option or `groups` and `labels` options." if !options.has_key?(:collection) && !options.has_key?(:groups) && !options.has_key?(:labels)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop (by default) checks for uses of methods Hash#haskey? and Hash#hasvalue? where it enforces Hash#key? and Hash#value? It is configurable to enforce the inverse, using verbose method names also.

Example: EnforcedStyle: short (default)

# bad Hash#haskey? Hash#hasvalue?

# good Hash#key? Hash#value?

Example: EnforcedStyle: verbose

# bad Hash#key? Hash#value?

# good Hash#haskey? Hash#hasvalue?

Line is too long. [107/80]
Open

      options.update(wrapper_class: "#{options[:wrapper_class]} input") if options[:wrapper_class].present?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [102/80]
Open

      options.update(validate: true) unless options[:validate].present? && options[:validate] == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Use 2 (not 1) spaces for indentation.
Open

       ''
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Line is too long. [107/80]
Open

      f.object.class.reflections.include?(attribute) || f.object.class.reflections.include?(attribute.to_s)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [198/80]
Open

      raise "Fae::ImproperOptionValue: The value #{options[:search]} is not a valid option for 'search'. Please use a Boolean." if options[:search].present? && !!options[:search] != options[:search]
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Redundant curly braces around a hash parameter.
Open

        options[:wrapper_html].deep_merge!({ data: { language: language_suffix } })
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for braces around the last parameter in a method call if the last parameter is a hash. It supports braces, no_braces and context_dependent styles.

Example: EnforcedStyle: braces

# The `braces` style enforces braces around all method
# parameters that are hashes.

# bad
some_method(x, y, a: 1, b: 2)

# good
some_method(x, y, {a: 1, b: 2})

Example: EnforcedStyle: no_braces (default)

# The `no_braces` style checks that the last parameter doesn't
# have braces around it.

# bad
some_method(x, y, {a: 1, b: 2})

# good
some_method(x, y, a: 1, b: 2)

Example: EnforcedStyle: context_dependent

# The `context_dependent` style checks that the last parameter
# doesn't have braces around it, but requires braces if the
# second to last parameter is also a hash literal.

# bad
some_method(x, y, {a: 1, b: 2})
some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)

# good
some_method(x, y, a: 1, b: 2)
some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})

Line is too long. [103/80]
Open

      options.update(input_class: "#{options[:input_class]} multiselect") if options[:two_pane] == true
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Favor unless over if for negative conditions.
Open

      set_prompt f, attribute, options if !options[:include_blank].is_a?(String)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks for uses of if with a negated condition. Only ifs without else are considered. There are three different styles:

- both
- prefix
- postfix

Example: EnforcedStyle: both (default)

# enforces `unless` for `prefix` and `postfix` conditionals

# bad

if !foo
  bar
end

# good

unless foo
  bar
end

# bad

bar if !foo

# good

bar unless foo

Example: EnforcedStyle: prefix

# enforces `unless` for just `prefix` conditionals

# bad

if !foo
  bar
end

# good

unless foo
  bar
end

# good

bar if !foo

Example: EnforcedStyle: postfix

# enforces `unless` for just `postfix` conditionals

# bad

bar if !foo

# good

bar unless foo

# good

if !foo
  bar
end

Line is too long. [120/80]
Open

          concat(content_tag(:span, options[:helper_text], class: 'helper_text_text')) if options[:helper_text].present?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Prefer single-quoted strings when you don't need string interpolation or special symbols.
Open

      raise "Fae::groups and labels must be an array" if !(labels.is_a? Array) || !(groups.is_a? Array)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks if uses of quotes match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
"No special symbols"
"No string interpolation"
"Just text"

# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"

Example: EnforcedStyle: double_quotes

# bad
'Just some text'
'No special chars or interpolation'

# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"

Line is too long. [131/80]
Open

          raise "Fae::MissingCollection: `#{attribute}` isn't an orderable class, define your order using the `collection` option."
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Redundant curly braces around a hash parameter.
Open

        options[:input_html].merge!({class: "#{options[:input_html][:class]} #{class_name}"})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for braces around the last parameter in a method call if the last parameter is a hash. It supports braces, no_braces and context_dependent styles.

Example: EnforcedStyle: braces

# The `braces` style enforces braces around all method
# parameters that are hashes.

# bad
some_method(x, y, a: 1, b: 2)

# good
some_method(x, y, {a: 1, b: 2})

Example: EnforcedStyle: no_braces (default)

# The `no_braces` style checks that the last parameter doesn't
# have braces around it.

# bad
some_method(x, y, {a: 1, b: 2})

# good
some_method(x, y, a: 1, b: 2)

Example: EnforcedStyle: context_dependent

# The `context_dependent` style checks that the last parameter
# doesn't have braces around it, but requires braces if the
# second to last parameter is also a hash literal.

# bad
some_method(x, y, {a: 1, b: 2})
some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)

# good
some_method(x, y, a: 1, b: 2)
some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})

Prefer single-quoted strings when you don't need string interpolation or special symbols.
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select required a `labels` option with a value containing an array when using the `groups` option." if options[:groups].present? && options[:labels].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks if uses of quotes match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
"No special symbols"
"No string interpolation"
"Just text"

# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"

Example: EnforcedStyle: double_quotes

# bad
'Just some text'
'No special chars or interpolation'

# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"

Use 2 (not 1) spaces for indentation.
Open

       return t('fae.seo_description')
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Surrounding space missing in default value assignment.
Open

    def fae_checkbox(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Surrounding space missing in default value assignment.
Open

    def fae_grouped_select(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Line is too long. [104/80]
Open

      set_form_manager_container_attr(f, options, attribute) unless options[:show_form_manager] == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [99/80]
Open

      options[:helper_text] = attempt_common_helper_text(attribute) if options[:helper_text].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [94/80]
Open

      if column.present? && (column.sql_type.include?('varchar') || column.sql_type == 'text')
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Use Hash#key? instead of Hash#has_key?.
Open

      raise "Fae::MissingRequiredOption: fae_pulldown requires a 'collection' when using it on an ActiveRecord attribute." if !options.has_key?(:collection) && f.object.attribute_names.include?(attribute.to_s)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop (by default) checks for uses of methods Hash#haskey? and Hash#hasvalue? where it enforces Hash#key? and Hash#value? It is configurable to enforce the inverse, using verbose method names also.

Example: EnforcedStyle: short (default)

# bad Hash#haskey? Hash#hasvalue?

# good Hash#key? Hash#value?

Example: EnforcedStyle: verbose

# bad Hash#key? Hash#value?

# good Hash#haskey? Hash#hasvalue?

Use Hash#key? instead of Hash#has_key?.
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select requires a `collection` option or `groups` and `labels` options." if !options.has_key?(:collection) && !options.has_key?(:groups) && !options.has_key?(:labels)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop (by default) checks for uses of methods Hash#haskey? and Hash#hasvalue? where it enforces Hash#key? and Hash#value? It is configurable to enforce the inverse, using verbose method names also.

Example: EnforcedStyle: short (default)

# bad Hash#haskey? Hash#hasvalue?

# good Hash#key? Hash#value?

Example: EnforcedStyle: verbose

# bad Hash#key? Hash#value?

# good Hash#haskey? Hash#hasvalue?

Space missing after comma.
Open

      raise "Fae::ImproperOptionValue: The value #{options[:size]} is not a valid option for 'size'. Please use 'short' or 'long'." if options[:size].present? && ['short','long'].include?(options[:size]) == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks for comma (,) not followed by some kind of space.

Example:

# bad
[1,2]
{ foo:bar,}

# good
[1, 2]
{ foo:bar, }

Prefer single-quoted strings when you don't need string interpolation or special symbols.
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select requires a `collection` option or `groups` and `labels` options." if !options.has_key?(:collection) && !options.has_key?(:groups) && !options.has_key?(:labels)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks if uses of quotes match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
"No special symbols"
"No string interpolation"
"Just text"

# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"

Example: EnforcedStyle: double_quotes

# bad
'Just some text'
'No special chars or interpolation'

# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"

Surrounding space missing in default value assignment.
Open

    def fae_radio(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Line is too long. [106/80]
Open

        input_html: { value: f.object.send(attribute).to_s } # value needs to be set to clear color picker
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Redundant curly braces around a hash parameter.
Open

        options[:wrapper_html].merge!({class: "#{options[:wrapper_html][:class]} #{class_name}"})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for braces around the last parameter in a method call if the last parameter is a hash. It supports braces, no_braces and context_dependent styles.

Example: EnforcedStyle: braces

# The `braces` style enforces braces around all method
# parameters that are hashes.

# bad
some_method(x, y, a: 1, b: 2)

# good
some_method(x, y, {a: 1, b: 2})

Example: EnforcedStyle: no_braces (default)

# The `no_braces` style checks that the last parameter doesn't
# have braces around it.

# bad
some_method(x, y, {a: 1, b: 2})

# good
some_method(x, y, a: 1, b: 2)

Example: EnforcedStyle: context_dependent

# The `context_dependent` style checks that the last parameter
# doesn't have braces around it, but requires braces if the
# second to last parameter is also a hash literal.

# bad
some_method(x, y, {a: 1, b: 2})
some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)

# good
some_method(x, y, a: 1, b: 2)
some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})

Use Hash#key? instead of Hash#has_key?.
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select requires a `collection` option or `groups` and `labels` options." if !options.has_key?(:collection) && !options.has_key?(:groups) && !options.has_key?(:labels)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop (by default) checks for uses of methods Hash#haskey? and Hash#hasvalue? where it enforces Hash#key? and Hash#value? It is configurable to enforce the inverse, using verbose method names also.

Example: EnforcedStyle: short (default)

# bad Hash#haskey? Hash#hasvalue?

# good Hash#key? Hash#value?

Example: EnforcedStyle: verbose

# bad Hash#key? Hash#value?

# good Hash#haskey? Hash#hasvalue?

Surrounding space missing in default value assignment.
Open

    def fae_prefix(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Space inside { missing.
Open

        options[:wrapper_html].merge!({class: "#{options[:wrapper_html][:class]} #{class_name}"})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that braces used for hash literals have or don't have surrounding space depending on configuration.

Example: EnforcedStyle: space

# The `space` style enforces that hash literals have
# surrounding space.

# bad
h = {a: 1, b: 2}

# good
h = { a: 1, b: 2 }

Example: EnforcedStyle: no_space

# The `no_space` style enforces that hash literals have
# no surrounding space.

# bad
h = { a: 1, b: 2 }

# good
h = {a: 1, b: 2}

Example: EnforcedStyle: compact

# The `compact` style normally requires a space inside
# hash braces, with the exception that successive left
# braces or right braces are collapsed together in nested hashes.

# bad
h = { a: { b: 2 } }

# good
h = { a: { b: 2 }}

Line is too long. [97/80]
Open

        options[:wrapper_html].merge!({class: "#{options[:wrapper_html][:class]} #{class_name}"})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Use a guard clause instead of wrapping the code inside a conditional expression.
Open

      if column.present? && (column.sql_type.include?('varchar') || column.sql_type == 'text')
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Use a guard clause instead of wrapping the code inside a conditional expression

Example:

# bad
def test
  if something
    work
  end
end

# good
def test
  return unless something
  work
end

# also good
def test
  work if something
end

# bad
if something
  raise 'exception'
else
  ok
end

# good
raise 'exception' if something
ok

Line is too long. [104/80]
Open

      set_form_manager_container_attr(f, options, attribute) unless options[:show_form_manager] == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [123/80]
Open

      raise "Fae::MissingRequiredOption: fae_suffix helper method requires the 'suffix' option." if options[:suffix].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [112/80]
Open

      options[:alignment] = 'radio_collection--vertical' if options[:type] == 'stacked' || options[:type].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [102/80]
Open

        input_class: "js-color-picker color-picker #{'alpha-slider' unless options[:alpha] == false}",
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [96/80]
Open

      options.update(as: :date_range, start_date: attr_array.first, end_date: attr_array.second)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [93/80]
Open

        options[:input_html].merge!({class: "#{options[:input_html][:class]} #{class_name}"})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [109/80]
Open

      return unless Fae.languages.has_key?(language_suffix.to_sym) || Fae.languages.has_key?(language_suffix)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Surrounding space missing in default value assignment.
Open

    def fae_color_picker(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Favor unless over if for negative conditions.
Open

      raise "Fae::'#{attribute}' must be an association of #{f.object}" if !is_association?(f, attribute)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks for uses of if with a negated condition. Only ifs without else are considered. There are three different styles:

- both
- prefix
- postfix

Example: EnforcedStyle: both (default)

# enforces `unless` for `prefix` and `postfix` conditionals

# bad

if !foo
  bar
end

# good

unless foo
  bar
end

# bad

bar if !foo

# good

bar unless foo

Example: EnforcedStyle: prefix

# enforces `unless` for just `prefix` conditionals

# bad

if !foo
  bar
end

# good

unless foo
  bar
end

# good

bar if !foo

Example: EnforcedStyle: postfix

# enforces `unless` for just `postfix` conditionals

# bad

bar if !foo

# good

bar unless foo

# good

if !foo
  bar
end

Surrounding space missing in default value assignment.
Open

    def fae_daterange(f, attr_array, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Prefer single-quoted strings when you don't need string interpolation or special symbols.
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select required a `groups` option with a value containing an array when using the `labels` option." if options[:labels].present? && options[:groups].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks if uses of quotes match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
"No special symbols"
"No string interpolation"
"Just text"

# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"

Example: EnforcedStyle: double_quotes

# bad
'Just some text'
'No special chars or interpolation'

# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"

Space inside { missing.
Open

        options[:input_html].merge!({class: "#{options[:input_html][:class]} #{class_name}"})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that braces used for hash literals have or don't have surrounding space depending on configuration.

Example: EnforcedStyle: space

# The `space` style enforces that hash literals have
# surrounding space.

# bad
h = {a: 1, b: 2}

# good
h = { a: 1, b: 2 }

Example: EnforcedStyle: no_space

# The `no_space` style enforces that hash literals have
# no surrounding space.

# bad
h = { a: 1, b: 2 }

# good
h = {a: 1, b: 2}

Example: EnforcedStyle: compact

# The `compact` style normally requires a space inside
# hash braces, with the exception that successive left
# braces or right braces are collapsed together in nested hashes.

# bad
h = { a: { b: 2 } }

# good
h = { a: { b: 2 }}

Use %w or %W for an array of words.
Open

      raise "Fae::ImproperOptionValue: The value #{options[:size]} is not a valid option for 'size'. Please use 'short' or 'long'." if options[:size].present? && ['short','long'].include?(options[:size]) == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop can check for array literals made up of word-like strings, that are not using the %w() syntax.

Alternatively, it can check for uses of the %w() syntax, in projects which do not want to include that syntax.

Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of 3 will not enforce a style on an array of 2 or fewer elements.

Example: EnforcedStyle: percent (default)

# good
%w[foo bar baz]

# bad
['foo', 'bar', 'baz']

Example: EnforcedStyle: brackets

# good
['foo', 'bar', 'baz']

# bad
%w[foo bar baz]

Line is too long. [173/80]
Open

      options.update(as: options[:input_type], wrapper_class: "input checkbox-wrapper js-checkbox-wrapper #{options[:wrapper_class]} -#{options[:type]}", no_label_div: true)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [111/80]
Open

      options.update(wrapper_class: "#{options[:wrapper_class]} select-no_search") if options[:search] == false
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [210/80]
Open

      raise "Fae::ImproperOptionValue: The value '#{options[:two_pane]}' is not a valid option for 'two_pane'. Please use a Boolean." if options[:two_pane].present? && !!options[:two_pane] != options[:two_pane]
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [208/80]
Open

      raise "Fae::MissingRequiredOption: fae_grouped_select required a `labels` option with a value containing an array when using the `groups` option." if options[:groups].present? && options[:labels].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [133/80]
Open

        f.object.attribute_names.include?(attribute.to_s) ? fae_input(f, attribute, options) : fae_association(f, attribute, options)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [143/80]
Open

      options[:wrapper_class] = options[:wrapper_class].present? ? "#{options[:wrapper_class]} input symbol--#{type}" : "input symbol--#{type}"
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [83/80]
Open

        options[:wrapper_html].deep_merge!({ data: { language: language_suffix } })
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Extra empty line detected at module body beginning.
Open


    def fae_input(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cops checks if empty lines around the bodies of modules match the configuration.

Example: EnforcedStyle: empty_lines

# good

module Foo

  def bar
    # ...
  end

end

Example: EnforcedStyle: emptylinesexcept_namespace

# good

module Foo
  module Bar

    # ...

  end
end

Example: EnforcedStyle: emptylinesspecial

# good
module Foo

  def bar; end

end

Example: EnforcedStyle: noemptylines (default)

# good

module Foo
  def bar
    # ...
  end
end

Surrounding space missing in default value assignment.
Open

    def fae_suffix(f, attribute, options={})
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks that the equals signs in parameter default assignments have or don't have surrounding space depending on configuration.

Example:

# bad
def some_method(arg1=:default, arg2=nil, arg3=[])
  # do something...
end

# good
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

Line is too long. [88/80]
Open

      options[:alignment] = 'radio_collection--horizontal' if options[:type] == 'inline'
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [105/80]
Open

      raise "Fae::'#{attribute}' must be an association of #{f.object}" if !is_association?(f, attribute)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [160/80]
Open

      options[:helper_text] ||= "Please enter your YouTube video ID. The video ID is between v= and & of the video's url. This is typically 11 characters long."
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Line is too long. [185/80]
Open

      options[:prompt] = 'None' if is_association?(f, attribute) && f.object.class.reflect_on_association(attribute).macro == :belongs_to && options[:prompt].nil? && !options[:two_pane]
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Use Hash#key? instead of Hash#has_key?.
Open

      return unless Fae.languages.has_key?(language_suffix.to_sym) || Fae.languages.has_key?(language_suffix)
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop (by default) checks for uses of methods Hash#haskey? and Hash#hasvalue? where it enforces Hash#key? and Hash#value? It is configurable to enforce the inverse, using verbose method names also.

Example: EnforcedStyle: short (default)

# bad Hash#haskey? Hash#hasvalue?

# good Hash#key? Hash#value?

Example: EnforcedStyle: verbose

# bad Hash#key? Hash#value?

# good Hash#haskey? Hash#hasvalue?

Use 2 (not 1) spaces for indentation.
Open

       return t('fae.seo_title')
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Line is too long. [123/80]
Open

      raise "Fae::MissingRequiredOption: fae_prefix helper method requires the 'prefix' option." if options[:prefix].blank?
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Redundant return detected.
Open

       return t('fae.seo_description')
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

This cop checks for redundant return expressions.

Example:

def test
  return something
end

def test
  one
  two
  three
  return something
end

It should be extended to handle methods whose body is if/else or a case expression with a default branch.

Prefer single-quoted strings when you don't need string interpolation or special symbols.
Open

      add_input_class(options, 'small_pulldown') if options[:size] == "short"
Severity: Minor
Found in app/helpers/fae/form_helper.rb by rubocop

Checks if uses of quotes match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
"No special symbols"
"No string interpolation"
"Just text"

# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"

Example: EnforcedStyle: double_quotes

# bad
'Just some text'
'No special chars or interpolation'

# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"

There are no issues that match your filters.

Category
Status