Class: Lowkey::ProxyFactory
- Inherits:
-
Object
- Object
- Lowkey::ProxyFactory
- Defined in:
- lib/factories/proxy_factory.rb
Class Method Summary collapse
- .class_proxy(node:, namespace:, file_path:, lines:) ⇒ Object
- .file_proxy(root_node:, file_path:) ⇒ Object
- .method_proxy(method_node:, file_proxy:) ⇒ Object
- .module_proxy(node:, namespace:, file_path:, lines:) ⇒ Object
- .param_proxies(parameters_node:, source:, file_path:) ⇒ Object
- .return_proxy(method_node:, name:, source:) ⇒ Object
Class Method Details
.class_proxy(node:, namespace:, file_path:, lines:) ⇒ Object
27 28 29 30 |
# File 'lib/factories/proxy_factory.rb', line 27 def class_proxy(node:, namespace:, file_path:, lines:) source = SourceFactory.class_source(node:, file_path:, lines:) ClassProxy.new(node:, name: node.name, namespace:, source:) end |
.file_proxy(root_node:, file_path:) ⇒ Object
16 17 18 19 |
# File 'lib/factories/proxy_factory.rb', line 16 def file_proxy(root_node:, file_path:) source = SourceFactory.file_source(root_node:, file_path:) FileProxy.new(root_node:, source:) end |
.method_proxy(method_node:, file_proxy:) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/factories/proxy_factory.rb', line 32 def method_proxy(method_node:, file_proxy:) name = method_node.name method_source = SourceFactory.method_source(method_node:, file_path: file_proxy.file_path, lines: file_proxy.lines) body_source = SourceFactory.body_source(method_source:) param_proxies = param_proxies(parameters_node: method_node.parameters, file_path: file_proxy.file_path, source: method_source) body_proxy = BodyProxy.new(name:, source: body_source) return_proxy = return_proxy(name:, method_node:, source: method_source) MethodProxy.new(name:, source: method_source, param_proxies:, body_proxy:, return_proxy:) end |
.module_proxy(node:, namespace:, file_path:, lines:) ⇒ Object
21 22 23 24 25 |
# File 'lib/factories/proxy_factory.rb', line 21 def module_proxy(node:, namespace:, file_path:, lines:) source = SourceFactory.module_source(node:, namespace:, file_path:, lines:) name = node.respond_to?(:name) ? node.name : 'Object' ModuleProxy.new(node:, name:, namespace:, source:) end |
.param_proxies(parameters_node:, source:, file_path:) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/factories/proxy_factory.rb', line 45 def param_proxies(parameters_node:, source:, file_path:) return [] if parameters_node.nil? param_types = { Prism::RequiredParameterNode => :pos_req, Prism::OptionalParameterNode => :pos_opt, Prism::RequiredKeywordParameterNode => :key_req, Prism::OptionalKeywordParameterNode => :key_opt } params = [*parameters_node.requireds, *parameters_node.optionals, *parameters_node.keywords] params.map.with_index do |param, position| name = param.name source = SourceFactory.param_source(param_node: param, file_path:, lines: source.lines) type = param_types[param.class] value = param.respond_to?(:value) ? param.value.slice : ':LOWKEY_UNDEFINED' ParamProxy.new(name:, source:, type:, position:, value:) end end |
.return_proxy(method_node:, name:, source:) ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/factories/proxy_factory.rb', line 66 def return_proxy(method_node:, name:, source:) return_node = find_return_node(method_node:) return nil if return_node.nil? value = return_node.body.slice ReturnProxy.new(name:, source:, value:) end |