Module: Alain::Util

Included in:
Driver, Proto, SvcCode
Defined in:
lib/alain/util.rb

Class Method Summary collapse

Class Method Details

.grpc_method(method, request, response) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/alain/util.rb', line 7

def grpc_method method, request, response
  <<~EOS
    async fn #{snake_case(method)}(&self, request: Request<#{namespace(request)}>) -> Result<Response<#{namespace(response)}>, Status> {
            let message: #{namespace(request)} = request.into_inner();
            Ok(Response::new(#{namespace(response)} { }))
        }
  EOS
end

.namespace(ns = @package) ⇒ Object



16
17
18
# File 'lib/alain/util.rb', line 16

def namespace(ns = @package)
  ns.gsub('.', '::')
end

.snake_case(str) ⇒ Object



20
21
22
23
# File 'lib/alain/util.rb', line 20

def snake_case(str)
  str.gsub(/([a-z\d])([A-Z])/, '\1_\2')
    .downcase
end