class BeStrong::Code

Constants

REG_MASS_ASSIGNMENT_METHOD

Public Class Methods

new(code) click to toggle source
# File lib/be_strong/code.rb, line 7
def initialize(code)
  @code     = code
  @original = code.dup
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/be_strong/code.rb, line 68
def <=>(other)
  code <=> other
end
add_private!() click to toggle source
# File lib/be_strong/code.rb, line 44
def add_private!
  return code if code =~ /\bprivate\b/
  code.sub!(/\bend\s*\z/) do
    "\n  private\nend\n"
  end
  code
end
apply_strong_parameter!() click to toggle source
# File lib/be_strong/code.rb, line 12
def apply_strong_parameter!
  # replace params[:model] to model_params
  models = []
  code.gsub!(REG_MASS_ASSIGNMENT_METHOD) do
    if StrongParameterMethods.method_for($4)
      models << $4
      "#{$2}#{$3}#{$4}_params#{$5}"
    else
      $1
    end
  end

  return self if models.size.zero?

  # add private section
  add_private!

  # add model_params method as private method
  models.each do |model|
    method = StrongParameterMethods.method_for(model)
    next unless method

    next if code =~ /\bdef #{model}_params\b/

    code.sub!(/\bprivate\b/) do
      "private\n\n#{method.gsub(/^/, '  ').chomp}"
    end
  end

  self
end
changed?() click to toggle source
# File lib/be_strong/code.rb, line 60
def changed?
  code != @original
end
remove_attr_accessible_and_protected!() click to toggle source
# File lib/be_strong/code.rb, line 52
def remove_attr_accessible_and_protected!
  %w(accessible protected).each do |name|
    code.gsub!(/( *attr_#{name}\(.*?\)$)/m, '')
    code.gsub!(/( *attr_#{name}.+?[^,\\]$)/m, '')
  end
  self
end
to_s() click to toggle source
# File lib/be_strong/code.rb, line 64
def to_s
  code
end

Private Instance Methods

code() click to toggle source
# File lib/be_strong/code.rb, line 74
def code
  @code
end