Class: Lowkey::SinatraAdapter
- Defined in:
- lib/adapters/sinatra_adapter.rb
Instance Method Summary collapse
-
#initialize(file_proxy:, class_proxy:) ⇒ SinatraAdapter
constructor
A new instance of SinatraAdapter.
-
#load ⇒ Object
rubocop:disable Metrics/AbcSize.
Constructor Details
#initialize(file_proxy:, class_proxy:) ⇒ SinatraAdapter
Returns a new instance of SinatraAdapter.
8 9 10 11 |
# File 'lib/adapters/sinatra_adapter.rb', line 8 def initialize(file_proxy:, class_proxy:) @file_proxy = file_proxy @class_proxy = class_proxy end |
Instance Method Details
#load ⇒ Object
rubocop:disable Metrics/AbcSize
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/adapters/sinatra_adapter.rb', line 13 def load # rubocop:disable Metrics/AbcSize # Type check return values. @class_proxy.method_calls.each do |method_call_node| next unless %i[get post patch put delete options].include?(method_call_node.name) arguments_node = method_call_node.compact_child_nodes.first next unless arguments_node.is_a?(Prism::ArgumentsNode) pattern = arguments_node.arguments.first.content route = "#{method_call_node.name.upcase} #{pattern}" name = route source = SourceFactory.method_call_source(method_call_node:, arguments_node:, file_path:, lines:) next unless (return_proxy = ProxyFactory.return_proxy(method_node: method_call_node, name:, source:)) param_proxies = [ParamProxy.new(source:, name:, type: :pos_req, position: 0)] method_proxy = MethodProxy.new(source:, name:, param_proxies:, return_proxy:) @class_proxy.keyed_methods[route] = method_proxy end end |