module Crystalize::Transform::Line::PrivateMethods

Public Instance Methods

add_visibility_prefix_to_method(current_visibility, line, non_public_triggered) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 37
def add_visibility_prefix_to_method(current_visibility, line, non_public_triggered)
  if !non_public_triggered && current_visibility == :public
    line
  else
    " "*tabulation(line)+current_visibility.to_s + " "+ line.slice(tabulation(line), line.length)
  end
end
line_without_private(line) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 33
def line_without_private(line)
  ""
end
method_in_line?(line) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 56
def method_in_line?(line)
  line.match /[ ]*(def).*/
end
private_in_line?(line) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 64
def private_in_line?(line)
  !!line.match(/^[ ]*(private)[ ]*$/)
end
protected_in_line?(line) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 68
def protected_in_line?(line)
  !!line.match(/^[ ]*(protected)[ ]*$/)
end
public_in_line?(line) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 72
def public_in_line?(line)
  !!line.match(/^[ ]*(public)[ ]*$/)
end
self_method_in_line?(line) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 60
def self_method_in_line?(line)
  line.match /[ ]*(def)[ ]+self[.].*/
end
tabulation(line) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 45
def tabulation(line)
  spaces_count = 0
  line.split("").each_with_index do |c, index|
    if c != " "
      spaces_count = index
      break
    end
  end
  spaces_count
end
transform_private_methods(lines) click to toggle source
# File lib/crystalize/transform/lines/private_methods.rb, line 5
def transform_private_methods(lines)
  new_lines = []
  current_visibility = :public
  non_public_triggered = false

  lines.each do |line|
    if private_in_line?(line)
      current_visibility = :private
      non_public_triggered = true
    end
    if protected_in_line?(line)
      current_visibility = :protected
      non_public_triggered = true
    end
    current_visibility = :public if public_in_line?(line)

    if method_in_line?(line) && !self_method_in_line?(line)
      new_lines << add_visibility_prefix_to_method(current_visibility, line, non_public_triggered)
    elsif private_in_line?(line) || protected_in_line?(line) || public_in_line?(line)
      new_lines << line_without_private(line)
    else
      new_lines << line
    end
  end

  new_lines
end