Object
Raised if the SVG path cannot be parsed.
Parses an SVG path and returns a Prawn-compatible call tree.
# 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
Generated with the Darkfish Rdoc Generator 2.