module KRPC::ProcedureNameParser

Public Class Methods

parse(proc_name) click to toggle source
# File lib/krpc/procedure_name_parser.rb, line 6
def self.parse(proc_name)
  parts = proc_name.split('_')
  name = parts[-1]
  raise(ProcedureNameParserError, "Procedure name is empty") if proc_name.empty?
  raise(ProcedureNameParserError, "Invalid procedure name") if parts.size > 3

  case parts.size
    when 1
      Result.new(:plain_procedure, false, false, name, nil)
    when 2
      case parts[0]
        when 'get'
          Result.new(:service_property_getter, false, false, name, nil)
        when 'set'
          Result.new(:service_property_setter, true, false, name, nil)
        else
          Result.new(:class_method, false, true, name, parts[0])
      end
    when 3
      case parts[1]
        when 'get'
          Result.new(:class_property_getter, false, true, name, parts[0])
        when 'set'
          Result.new(:class_property_setter, true, true, name, parts[0])
        when 'static'
          Result.new(:class_static_method, false, true, name, parts[0])
        else
          raise(ProcedureNameParserError, "Invalid procedure name")
      end
  end
end