UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

40 lines (27 loc) 1.15 kB
import { reNum } from '../../parser/constants'; /** * p for param * using "bad naming" here because it makes the regex much easier to read */ const p = `(${reNum})`; const reMoveToCommand = `(M) (?:${p} ${p} ?)+`; const reLineCommand = `(L) (?:${p} ${p} ?)+`; const reHorizontalLineCommand = `(H) (?:${p} ?)+`; const reVerticalLineCommand = `(V) (?:${p} ?)+`; const reClosePathCommand = String.raw`(Z)\s*`; const reCubicCurveCommand = `(C) (?:${p} ${p} ${p} ${p} ${p} ${p} ?)+`; const reCubicCurveShortcutCommand = `(S) (?:${p} ${p} ${p} ${p} ?)+`; const reQuadraticCurveCommand = `(Q) (?:${p} ${p} ${p} ${p} ?)+`; const reQuadraticCurveShortcutCommand = `(T) (?:${p} ${p} ?)+`; const reArcCommand = `(A) (?:${p} ${p} ${p} ([01]) ?([01]) ${p} ${p} ?)+`; export const rePathCommand = `(?:(?:${reMoveToCommand})` + `|(?:${reLineCommand})` + `|(?:${reHorizontalLineCommand})` + `|(?:${reVerticalLineCommand})` + `|(?:${reClosePathCommand})` + `|(?:${reCubicCurveCommand})` + `|(?:${reCubicCurveShortcutCommand})` + `|(?:${reQuadraticCurveCommand})` + `|(?:${reQuadraticCurveShortcutCommand})` + `|(?:${reArcCommand}))`;