static BBRule bb_parseList(S listName) { ret bb_parseList(listName, mL_raw(listName)); } static BBRule bb_parseList(S listName, S text) { LS parts = splitAtEmptyLines(text); if (empty(parts)) null; new BBRule r; r.listName = listName; new Matches m; for (S s : parts) { s = trim(s); if (swic_trim(s, "Subject:", m)) r.subject = dropNewLines($1); else if (swic_trim(s, "Expression:", m)) r.expression = joinNempties(" || ", r.expression, dropNewLines($1)); else if (swic_trim(s, "Description:", m)) r.description = dropNewLines($1); else if (swicOneOf_trim(s, m, "Antwortmodus:", "Selector:")) r.answerMode = dropNewLines($1); else r.answers.add(s); } ret r; }