I am trying to turn a SVG path into a list of points in Node. I’m using elementtree to parse the SVG file.
d is the definition for the path, getPos simply turns a “x,y” into an object with an x and a y, doLine simply adds the coordinates to the list.
d = path.get('d')
words = d.split(' ')
oldPos = undefined
startPos = undefined
for i in [0..words.length]
word = words[i]
if word == 'm' or word == 'M'
oldPos = getPos(words[i + 1])
startPos = getPos(words[i + 1])
i += 1
else if word == 'l' or word == 'L'
else if word == 'z' or word == 'Z'
else if word
pos = getPos(word)
oldPos = pos
Currently, this doesn’t seem to work correctly.
I know that my path will never have curves, so I don’t need to worry about that.
I’m not sure on the SVG standard, so if anyone could help me, that would be many thanks.
Problem courtesy of: Tom Leese
In gecko the path is parsed by starting at the beginning, reading one non-whitespace character, then using a table of the number of expected arguments that follow to know to read so many numbers (which may have up to one comma separating them). This continues till the end of the string.
Solution courtesy of: Robert Longson