Class: CodeParser

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

Instance Method Summary collapse

Constructor Details

#initialize(output) ⇒ CodeParser

Returns a new instance of CodeParser.



3
4
5
# File 'lib/code_parser.rb', line 3

def initialize(output)
  @raw_routes_output = output
end

Instance Method Details

#api_endpoints(output = @raw_routes_output, api = false) ⇒ Object

returns an empty array if no api_endpoints in code



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/code_parser.rb', line 8

def api_endpoints(output = @raw_routes_output, api = false)
  endpoints = []
  parsed_routes(output).each do |route|
    if route[:route] != nil
      if api
        endpoints << route[:route] if route[:route].include?('/api')
      else
        endpoints << route[:route]
      end
    end
  end
  contains_api = endpoints.any? { |route| route.include?('/api')  }
  endpoints = [] if !contains_api
  endpoints
end

#http_requests(output = @raw_routes_output) ⇒ Object

returns all route http request type



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/code_parser.rb', line 25

def http_requests(output = @raw_routes_output)
  request_type = []
  parsed_routes(output).each do |route|
    if route[:request_type] != nil
      if route[:request_type] =~ /[\/]/
        request_type << route[:type]
      elsif route[:route].include?('/api')
        request_type << route[:request_type]
      end
    end
  end
  request_type.sort
end

#parsed_routes(output = raw_routes_output) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/code_parser.rb', line 39

def parsed_routes(output = raw_routes_output)
  #add 'none specified'
  routes = []
  output.strip.each_line do |line|
    split = line.split(' ')
    route = {}
    route[:type]         = split[0]
    route[:request_type] = split[1]
    route[:route]        = split[2]
    route[:controller]   = split[3]
    route[:action]       = split[4]
    routes << route
  end
  routes
end