diff options
Diffstat (limited to 'source/spots.d')
| -rw-r--r-- | source/spots.d | 25 | 
1 files changed, 14 insertions, 11 deletions
diff --git a/source/spots.d b/source/spots.d index f57ba8f..49b9c85 100644 --- a/source/spots.d +++ b/source/spots.d @@ -28,16 +28,17 @@ struct Spot          _contents = c;      } +    import std.format : format, formattedRead; +      string toString()      { -        import std.format : format; -        return format("'%c'", _contents); +        return format!`'%c'`(_contents);      } -    void fromString(S)(S s) if (isSomeString!S) +    void fromString(Range)(auto ref Range s)      { -        _contents = cast(char) s[1]; +        s.formattedRead!`'%c'`(_contents);      }      @property contents() @@ -165,7 +166,7 @@ class OverlaySource : SpotSource          _base.save(f);          foreach (coord; _overlay.keys())          { -            f.writefln!"%s, %s: %s"(coord[0], coord[1], _overlay[coord]); +            f.writefln!"%s %s: %s"(coord[0], coord[1], _overlay[coord]);          }          f.write(terminator);      } @@ -173,21 +174,23 @@ class OverlaySource : SpotSource      void load(File f)      {          import std.conv : to; -        import std.algorithm.iteration; +        import std.algorithm; +        //_overlay = _overlay.init;          _base.load(f);          foreach (char[] line; f.lines)          {              if (line == terminator)                  break; -            auto trim = line.filter!(a => a == ' ' || a == '\r' || a == '\n').array; -            auto parts = trim.splitter(':'); -            auto ints = parts.moveFront.splitter(',').map!(to!BigInt); + +            auto ints = line.until(':').array.splitter(' ').map!(to!BigInt);              BigInt[2] coord; -            coord[0] = ints.moveFront; +            coord[0] = ints.front; +            ints.popFront;              coord[1] = ints.front; +              auto s = new Spot(); -            (*s).fromString(parts.front); +            (*s).fromString(line.find(':').find('\''));              _overlay[coord] = *s;          }      }  | 
