function parse (array = [ [ 'M', 0, 0 ] ]) {
let mlhvqtcsaz = 'mlhvqtcsaz'.split('')
for (var i = 0, il = mlhvqtcsaz.length; i < il; ++i) {
settings.pathHandlers[mlhvqtcsaz[i]] = (function (i) {
return function (c, p, p0) {
if (i === 'H') c[0] = c[0] + p.x
else if (i === 'V') c[0] = c[0] + p.y
else if (i === 'A') {
c[5] = c[5] + p.x
c[6] = c[6] + p.y
} else {
for (var j = 0, jl = c.length; j < jl; ++j) {
c[j] = c[j] + (j % 2 ? p.y : p.x)
}
}
return settings.pathHandlers[i](c, p, p0)
}
})(mlhvqtcsaz[i].toUpperCase())
}
var s
var paramCnt = { M: 2, L: 2, H: 1, V: 1, C: 6, S: 4, Q: 4, T: 2, A: 7, Z: 0 }
function pathRegReplace (a, b, c, d) {
return c + d.replace(settings.dots, ' .')
}
if (typeof array === 'string') {
array = array
.replace(settings.numbersWithDots, pathRegReplace)
.replace(settings.pathLetters, ' $& ')
.replace(settings.hyphen, '$1 -')
.trim()
.split(settings.delimiter)
console.log("ff",array)
} else {
array = array.reduce(function (prev, curr) {
return [].concat.call(prev, curr)
}, [])
}
var result = []
var p = new Point()
var p0 = new Point()
var index = 0
var len = array.length
do {
if (settings.isPathLetter.test(array[index])) {
s = array[index]
++index
} else if (s === 'M') {
s = 'L'
} else if (s === 'm') {
s = 'l'
}
console.log("gg",array, s)
result.push(settings.pathHandlers[s].call(null,
array.slice(index, (index = index + paramCnt[s.toUpperCase()])).map(parseFloat),
p, p0
)
)
} while (len > index)
return result
}