# File lib/prawn/svg/parser/path.rb, line 10
      def parse(data)
        cmd = values = nil
        value = ""
        @subpath_initial_point = @last_point = nil
        @previous_control_point = @previous_quadratic_control_point = nil
        @calls = []

        data.each_char do |c|
          if c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z'
            values << value.to_f if value != ""
            run_path_command(cmd, values) if cmd
            cmd = c
            values = []
            value = ""
          elsif c >= '0' && c <= '9' || c == '.' || (c == "-" && value == "")
            unless cmd
              raise InvalidError, "Numerical value specified before character command in SVG path data"
            end
            value << c
          elsif c == ' ' || c == "\t" || c == "\r" || c == "\n" || c == ","
            if value != ""
              values << value.to_f
              value = ""
            end
          elsif c == '-'
            values << value.to_f
            value = c
          else
            raise InvalidError, "Invalid character '#{c}' in SVG path data"
          end
        end
    
        values << value.to_f if value != ""
        run_path_command(cmd, values) if cmd
    
        @calls
      end