Module: Crystalize::Transform::Line::PrivateMethods

Included in:
CodeConverter
Defined in:
lib/crystalize/transform/lines/private_methods.rb

Instance Method Summary collapse

Instance Method Details

#add_visibility_prefix_to_method(current_visibility, line, non_public_triggered) ⇒ Object



37
38
39
40
41
42
43
# 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) ⇒ Object



33
34
35
# File 'lib/crystalize/transform/lines/private_methods.rb', line 33

def line_without_private(line)
  ""
end

#method_in_line?(line) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/crystalize/transform/lines/private_methods.rb', line 56

def method_in_line?(line)
  line.match /[ ]*(def).*/
end

#private_in_line?(line) ⇒ Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/crystalize/transform/lines/private_methods.rb', line 64

def private_in_line?(line)
  !!line.match(/^[ ]*(private)[ ]*$/)
end

#protected_in_line?(line) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/crystalize/transform/lines/private_methods.rb', line 68

def protected_in_line?(line)
  !!line.match(/^[ ]*(protected)[ ]*$/)
end

#public_in_line?(line) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/crystalize/transform/lines/private_methods.rb', line 72

def public_in_line?(line)
  !!line.match(/^[ ]*(public)[ ]*$/)
end

#self_method_in_line?(line) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/crystalize/transform/lines/private_methods.rb', line 60

def self_method_in_line?(line)
  line.match /[ ]*(def)[ ]+self[.].*/
end

#tabulation(line) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# 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) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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