!7

sclass Blob {
  L<Pair<S>> items = new L;
}

static new Map<S, Blob> blobs;

p {
  blobs.put("nasty", parseBlob([[something nasty -> You're an asshole]]));
  printStruct(blobs);
  assertEqualsVerbose("You're an asshole", blobLookupIC(blobs.get("nasty"), "Something nasty"));
  print("OK");
}

static Blob parseBlob(S s) {
  new Blob blob;
  for (S line : toLinesFullTrim(s)) {
    L<S> l = splitAtSimpleArrow(line);
    if (l(l) == 2)
      blob.items.add(mapPair(f trim, listToPair(l)));
  }
  ret blob;
}

static S blobLookupIC(Blob blob, S key) {
  if (blob != null)
    for (Pair<S> p : blob.items)
      if (eqic(p.a, key)) ret p.b;
  null;
}