Module: KRPC::ProcedureNameParser

Defined in:
lib/krpc/procedure_name_parser.rb

Defined Under Namespace

Classes: Result

Class Method Summary collapse

Class Method Details

.parse(proc_name) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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