Class: Mayday::AbstractFlag

Inherits:
Object
  • Object
show all
Defined in:
lib/mayday/abstract_flag.rb

Direct Known Subclasses

Error

Constant Summary collapse

@@function_names =
[]

Instance Method Summary collapse

Constructor Details

#initialize(block, options = {}) ⇒ AbstractFlag

Returns a new instance of AbstractFlag.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/mayday/abstract_flag.rb', line 8

def initialize(block, options={})
  @block = block

  @include_file_globs = Array(options[:files])
  @exclude_file_globs = Array(options[:exclude])

  if options[:language]
    language = options[:language].to_s
    if language == "swift"
      @include_file_globs << "*.swift"
    elsif language == "objective-c"
      @include_file_globs << "*.{h,m}"
    else
      puts "Unrecognized language '#{language}'".red
      abort
    end
  end

  @exclude_file_globs << "*Pods/*"
end

Instance Method Details

#block_stringObject



33
34
35
36
37
38
39
40
41
42
# File 'lib/mayday/abstract_flag.rb', line 33

def block_string
  case @block
  when String
    @block
  when Proc
    @block.to_source
  else
    raise TypeError, "#{self.class}'s block has invalid type of #{@block.class}"
  end
end

#function_def_stringObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/mayday/abstract_flag.rb', line 44

def function_def_string
  <<-CODE
def #{function_name}(file_path, file_contents)
  #{file_fn_match_lines("file_path")}

  line_number_to_warning_hash = lambda do 
#{block_string}.call(file_contents)
  end.call

  if line_number_to_warning_hash && line_number_to_warning_hash.keys.count > 0
final_warning_array = []
line_number_to_warning_hash.map do |line_number, warning_str|
  final_warning_array << "\#{file_path}:\#{line_number}: #{message_prefix}\#{warning_str} [Wmayday]"  
end
final_warning_array.join("\n")
  else
false
  end
end
CODE
end

#function_nameObject



81
82
83
84
85
86
87
# File 'lib/mayday/abstract_flag.rb', line 81

def function_name
  @function_name ||= begin
    # Enforce uniqueness 
    candidate_function_name = "abstract_flag_matcher_#{rand(10000)}"
    @@function_names.include?(candidate_function_name) ? function_name : candidate_function_name
  end
end

#message_prefixObject



29
30
31
# File 'lib/mayday/abstract_flag.rb', line 29

def message_prefix
  ""
end