public ParaRange CreateNextInSequence() { ParaRange rng = new ParaRange(End); rng.Bold = Bold; rng.Underline = Underline; rng.Italic = Italic; return(rng); }
private void Collect(string line, ParaRange rng) { int len = line.Length; while (rng.End < len) { if (line[rng.End] == '*' || line[rng.End] == '_' || line[rng.End] == '^') { if (rng.Begin == rng.End) { ++rng.End; } break; } ++rng.End; } }
protected List <ParaRange> Parse(string line) { var ranges = new List <ParaRange>(); var rng = new ParaRange(0); while (true) { Collect(line, rng); if (rng.IsEmpty) { break; } else if (line[rng.Begin] == '*') { rng.Bold = !rng.Bold; rng = rng.CreateNextInSequence(); } else if (line[rng.Begin] == '^') { rng.Italic = !rng.Italic; rng = rng.CreateNextInSequence(); } else if (line[rng.Begin] == '_') { rng.Underline = !rng.Underline; rng = rng.CreateNextInSequence(); } else { ranges.Add(rng); rng = rng.CreateNextInSequence(); } } return(ranges); }