public void setSegmentLink(capex.text.RichTextSegment seg, string alink) { if (object.Equals(alink, null)) { seg.setLink(null); return; } var link = alink; if (cape.String.startsWith(link, ">")) { seg.setIsInline(true); link = cape.String.subString(link, 1); } if (cape.String.startsWith(link, "!")) { seg.setLinkPopup(false); link = cape.String.subString(link, 1); } else { seg.setLinkPopup(true); } seg.setLink(link); }
public capex.text.RichTextParagraph addSegment(capex.text.RichTextSegment rts) { if (rts == null) { return((capex.text.RichTextParagraph) this); } if (segments == null) { segments = new System.Collections.Generic.List <capex.text.RichTextSegment>(); } cape.Vector.append(segments, rts); return((capex.text.RichTextParagraph) this); }
public void parseSegments(string txt) { if (object.Equals(txt, null)) { return; } cape.StringBuilder segmentsb = null; cape.StringBuilder linksb = null; var sb = new cape.StringBuilder(); var it = cape.String.iterate(txt); var c = ' '; var pc = (char)0; var seg = new capex.text.RichTextSegment(); while ((c = it.getNextChar()) > 0) { if (pc == '[') { if (c == '[') { sb.append(c); pc = (char)0; continue; } if (sb.count() > 0) { seg.setText(sb.toString()); sb.clear(); addSegment(seg); } seg = new capex.text.RichTextSegment(); linksb = new cape.StringBuilder(); linksb.append(c); pc = c; continue; } if (linksb != null) { if (c == '|') { setSegmentLink(seg, linksb.toString()); linksb.clear(); pc = c; continue; } if (c == ']') { var xt = linksb.toString(); if (object.Equals(seg.getLink(), null)) { setSegmentLink(seg, xt); } else { seg.setText(xt); } if (cape.String.isEmpty(seg.getText())) { var ll = xt; if (cape.String.startsWith(ll, "http://")) { ll = cape.String.subString(ll, 7); } seg.setText(ll); } addSegment(seg); seg = new capex.text.RichTextSegment(); linksb = null; } else { linksb.append(c); } pc = c; continue; } if (pc == '{') { if (c == '{') { sb.append(c); pc = (char)0; continue; } if (sb.count() > 0) { seg.setText(sb.toString()); sb.clear(); addSegment(seg); } seg = new capex.text.RichTextSegment(); segmentsb = new cape.StringBuilder(); segmentsb.append(c); pc = c; continue; } if (segmentsb != null) { if (c == '|') { seg.setReference(segmentsb.toString()); segmentsb.clear(); pc = c; continue; } if (c == '}') { var xt1 = segmentsb.toString(); if (object.Equals(seg.getReference(), null)) { seg.setReference(xt1); } else { seg.setText(xt1); } addSegment(seg); seg = new capex.text.RichTextSegment(); segmentsb = null; } else { segmentsb.append(c); } pc = c; continue; } if (pc == '*') { if (c == '*') { if (sb.count() > 0) { seg.setText(sb.toString()); sb.clear(); addSegment(seg); } if (seg.getBold()) { seg = new capex.text.RichTextSegment().setBold(false); } else { seg = new capex.text.RichTextSegment().setBold(true); } } else { sb.append(pc); sb.append(c); } pc = (char)0; continue; } if (pc == '_') { if (c == '_') { if (sb.count() > 0) { seg.setText(sb.toString()); sb.clear(); addSegment(seg); } if (seg.getUnderline()) { seg = new capex.text.RichTextSegment().setUnderline(false); } else { seg = new capex.text.RichTextSegment().setUnderline(true); } } else { sb.append(pc); sb.append(c); } pc = (char)0; continue; } if (pc == '\'') { if (c == '\'') { if (sb.count() > 0) { seg.setText(sb.toString()); sb.clear(); addSegment(seg); } if (seg.getItalic()) { seg = new capex.text.RichTextSegment().setItalic(false); } else { seg = new capex.text.RichTextSegment().setItalic(true); } } else { sb.append(pc); sb.append(c); } pc = (char)0; continue; } if (c != '*' && c != '_' && c != '\'' && c != '{' && c != '[') { sb.append(c); } pc = c; } if ((pc == '*' || pc == '_' || pc == '\'') && pc != '{' && pc != '[') { sb.append(pc); } if (sb.count() > 0) { seg.setText(sb.toString()); sb.clear(); addSegment(seg); } }