       else
         key = line[...separator.index]
       map[key] = line[separator.index + separator[0].length..]
-    new @ map
+    @load map
 
 class JSMapping extends Mapping
   @title: "JavaScript mapping file"
   @help: "Object mapping symbol names to SYMBOL e.g. dot: 'dot.svg'"
-  @parse: (data) ->
-    new @ eval data
+  parse: (data) ->
+    @load eval data
 
 class CoffeeMapping extends Mapping
   @title: "CoffeeScript mapping file"
   @help: "Object mapping symbol names to SYMBOL e.g. dot: 'dot.svg'"
-  @parse: (data) ->
-    new @ require('coffeescript').eval data
+  parse: (data) ->
+    @load require('coffeescript').eval data
 
 class Mappings
   constructor: (@maps = []) ->

            if j < row.length
              row.pop()
          j--
    new @ data
  writeSVG: (mappings, filename) ->
    ## Default filename is the input filename with extension replaced by .svg
    unless filename?


class ASCIIDrawing extends Drawing
  @title: "ASCII drawing (one character per symbol)"
  parse: (data) ->
    @load splitIntoLines data

class DSVDrawing extends Drawing
  parse: (data) ->
    ## Remove trailing newline / final blank line.
    if data[-2..] == '\r\n'
      data = data[...-2]
