TUPLE: line x1 y1 x2 y2 ; GENERIC: tosvgString ( object -- string ) : xfield ( name num -- str ) [ "=\"" append ] dip number>string append "\" " append ; : mergeField ( obj str quote: ( obj -- str ) -- obj str ) dip swap append ; inline : ( x y x y -- line ) line boa ; M: line tosvgString "> xfield ] mergeField [ "y1" over y1>> xfield ] mergeField [ "x2" over x2>> xfield ] mergeField [ "y2" over y2>> xfield ] mergeField "/>" append swap drop ; ! remove the original object