static SS parseColonProperties_withMultiLines(S text) { ret parseColonProperties_withMultiLines(text, new LinkedHashMap); } static SS parseColonProperties_withMultiLines(S text, SS map) { LS lines = lines(text); int n = l(lines); for iLine to n: { S s = trim(lines.get(iLine)); int i = indexOf(s, ':'); if (i > 0) { if (endsWith(s, ':')) { S key = trim(dropLast(s)); int j = iLine+1; while (j < n && emptyAfterTrim(lines.get(j))) ++j; int k = j; while (j < n && !emptyAfterTrim(lines.get(j))) ++j; map.put(key, joinLines(subList(lines, k, j))); iLine = j; } else map.put(trimSubstring(s, 0, i), trimSubstring(s, i+1)); } } ret map; }