Class: NamedParameter::DefaultsExtractor::SignatureExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/named_parameter/defaults_extractor/signature_extractor.rb

Defined Under Namespace

Modules: EndLineValidators

Instance Method Summary collapse

Instance Method Details

#extract_until_signature_starts(content, linenumber) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/named_parameter/defaults_extractor/signature_extractor.rb', line 19

def extract_until_signature_starts(content, linenumber)
  content
    .split("\n")[(linenumber-1)..-1]
    .join("\n")
    .gsub(";", "\n")
    .strip
    .reverse.gsub(/ fed.*$/, " fed").reverse
end

#find_signature_end(signature) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/named_parameter/defaults_extractor/signature_extractor.rb', line 28

def find_signature_end(signature)
  if signature =~ /^def +[A-Za-z_\?]+ *\(/
    sign_end_validator = EndLineValidators::WITH_PARENTESIS
  else
    sign_end_validator = EndLineValidators::WITHOUT_PARENTESIS
  end

  lines = signature.split("\n")
  sign_end = 0
  i = 0
  until sign_end_validator.call(lines[i])
    sign_end += lines[i].size + 1
    i += 1
  end
  sign_end += lines[i].size

  sign_end
end

#signature_of(content, linenumber) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/named_parameter/defaults_extractor/signature_extractor.rb', line 9

def signature_of(content, linenumber)
  content = extract_until_signature_starts(content, linenumber)

  signature_end = find_signature_end content

  signature = content[0..signature_end].split("\n").map{|line| line.strip}.join

  signature
end