@Test public void testAppendPadding() { final StrBuilder sb = new StrBuilder(); sb.append("foo"); assertEquals("foo", sb.toString()); sb.appendPadding(-1, '-'); assertEquals("foo", sb.toString()); sb.appendPadding(0, '-'); assertEquals("foo", sb.toString()); sb.appendPadding(1, '-'); assertEquals("foo-", sb.toString()); sb.appendPadding(16, '-'); assertEquals(20, sb.length()); // 12345678901234567890 assertEquals("foo-----------------", sb.toString()); }
StrBuilder b = new StrBuilder(); b.appendPadding(9, '0').append(...).append(...)....
/** * Returns a line of given length. * @param length number of characters in the line * @param builder builder to append the line to, new builder will be created if null * @return line of given length, empty if length was null or negative */ default StrBuilder getLine(int length, StrBuilder builder){ StrBuilder ret = (builder==null)?new StrBuilder(length):builder; ret.appendPadding(length, this.getLineChar()); return ret; }
@Override public StrBuilder getCalculatedItemString(){ StrBuilder ret = new StrBuilder(20); ret .appendPadding(this.getDescriptionIndent(), this.getLabelLeftChar()) ; return ret; }
/** * Returns a line of given length. * @param length number of characters in the line * @param builder builder to append the line to, new builder will be created if null * @return line of given length, empty if length was null or negative */ default StrBuilder getLine(int length, StrBuilder builder){ StrBuilder ret = new StrBuilder(); if(length<1){ return (builder==null)?ret:builder; } ret.appendPadding(length/2, this.getLeftLineChar()); while(ret.length()<length){ ret.appendPadding(1, this.getRightLineChar()); } return (builder==null)?ret:builder.append(ret); }
@Override public <LI extends AsciiListItem> StrBuilder getItemString(LI item, int index) { StrBuilder ret = new StrBuilder(20); ret .appendPadding(this.getItemMargin(), this.getItemChar()) .append(this.getLeftLabelString()) .appendPadding(this.getLabelLeftMargin(), this.getLabelLeftChar()) .append(this.getStyle().getLabel(this.getLevel())) .appendPadding(this.getLabelRightMargin(), this.getLabelRightChar()) .append(this.getRightLabelString()) .appendPadding(this.getTextLeftMargin(), this.getTextLeftChar()) ; return ret; }
ret[row][i] = new StrBuilder().appendPadding(curSize, ' ').toString(); ret[row][i] = new StrBuilder().appendPadding(curSize, ' ').toString();
@Override public <LI extends AsciiListItem> StrBuilder getItemString(LI item, int index) { StrBuilder ret = new StrBuilder(20); ret .appendPadding(this.getItemMargin(), this.getItemChar()) .append(this.getLeftLabelString()) .appendPadding(this.getLabelLeftMargin(), this.getLabelLeftChar()) ; if(item instanceof DescriptionListItem){ ret.append(((DescriptionListItem) item).getKey()); } ret .appendPadding(this.getLabelRightMargin(), this.getLabelRightChar()) .append(this.getRightLabelString()) ; if(item instanceof DescriptionListItem){ ret.appendPadding(this.getTextLeftMargin(), this.getTextLeftChar()); } return ret; }
@Override public <LI extends AsciiListItem> StrBuilder getItemString(LI item, int index) { StrBuilder ret = new StrBuilder(20); ret .appendPadding(this.getItemMargin(), this.getItemChar()) .append(this.getLeftLabelString()) .appendPadding(this.getLabelLeftMargin(), this.getLabelLeftChar()) ; if(item instanceof ChecklistItem){ ret.append(this.getStyle().getLabel(this.getLevel(), ((ChecklistItem) item).isChecked())); } else{ ret.append(this.getStyle().getLabel(this.getLevel(), false)); } ret.appendPadding(this.getLabelRightMargin(), this.getLabelRightChar()) .append(this.getRightLabelString()) .appendPadding(this.getTextLeftMargin(), this.getTextLeftChar()) ; return ret; }
ST st = opt.getHelp(); st.add("longDescr", this.longDescriptionString(opt.getLongDescription())); st.add("strongLine", new StrBuilder().appendPadding(this.getConsoleWidth(), '=' )); st.add("line", new StrBuilder().appendPadding(this.getConsoleWidth(), '-' )); System.out.println(st.render());
for(Entry<String, String> entry : helpMap.entrySet()){ StrBuilder argLine = new StrBuilder(); argLine.append(entry.getKey()).appendPadding(length-argLine.length(), ' '); StrBuilder padLine = new StrBuilder(); padLine.appendPadding(length, ' ');
if(ctx.getListStart()!=null){ Validate.validState(ctx.getListStart().length()<=width, "list start string longer than list width"); ret.add(new StrBuilder().append(ctx.getListStart()).appendPadding(width-ctx.getListStart().length(), ctx.getTextRightChar())); sb.insert(0, new StrBuilder().appendPadding(itemString.toString().length(), ' ')); sb.appendPadding(ctx.getTextRightMargin(), ctx.getTextRightChar()); ret.add(sb); count++; ret.add(new StrBuilder().append(ctx.getListEnd()).appendPadding(width-ctx.getListEnd().length(), ctx.getTextRightChar()));
@Override public <LI extends AsciiListItem> StrBuilder getItemString(LI item, int index) { StrBuilder ret = new StrBuilder(20); ret .appendPadding(this.getItemMargin(), this.getItemChar()) .append(this.getLeftLabelString()) .appendPadding(this.getLabelLeftMargin(), this.getLabelLeftChar()) ; if(this.parentIndex!=null && index>0){ int[] levels = ArrayUtils.add(this.parentIndex, index); ret.append(this.getStyle().getLabel(levels, this.numberingSeparator, this.useSeparatorAfterLastNumber)); } else if(index>0){ ret.append(this.getStyle().getLabel(index)); if(this.useSeparatorAfterLastNumber){ ret.append(this.numberingSeparator); } } else{ ret.append(this.getStyle().getLabel(this.getLevel())); } ret.appendPadding(this.getLabelRightMargin(), this.getLabelRightChar()) .append(this.getRightLabelString()) .appendPadding(this.getTextLeftMargin(), this.getTextLeftChar()) ; return ret; }
if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(2, true)).append(" checked item").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(2, false)).append(" unchecked item"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(3, true)).append(" checked item").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(3, false)).append(" unchecked item"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(4, true)).append(" checked item").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(4, false)).append(" unchecked item"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(5, true)).append(" checked item").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(5, false)).append(" unchecked item"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(6, true)).append(" checked item").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(6, false)).append(" unchecked item");
if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(2)).append(" item 1").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(2)).append(" item 2"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(3)).append(" item 1").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(3)).append(" item 2"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(4)).append(" item 1").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(4)).append(" item 2"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(5)).append(" item 1").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(5)).append(" item 2"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(6)).append(" item 1").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(6)).append(" item 2");
/** * Renders a bottom line for the frame. * @param mode the frame mode * @param width the width of lines in the frame * @return a builder with bottom line, empty if none was created */ default StrBuilder renderBottomLine(int mode, int width){ StrBuilder ret = new StrBuilder(width); if(TA_FrameOptions.cornerBottomLeft(mode)){ ret.append(this.getCorner().getCorner(TA_Corner.MODE_BOTTOM_LEFT)); } else if(TA_FrameOptions.cornerBottomLeftNeeded(mode)){ ret.appendPadding(this.getCorner().getCorner(TA_Corner.MODE_BOTTOM_LEFT).length(), ' '); } if(TA_FrameOptions.lineBottom(mode)){ ret.append(this.getBottomline().getLine(width)); } else if(TA_FrameOptions.lineBottomNeeded(mode)){ ret.appendPadding(width, ' '); } if(TA_FrameOptions.cornerBottomRight(mode)){ ret.append(this.getCorner().getCorner(TA_Corner.MODE_BOTTOM_RIGHT)); } else if(TA_FrameOptions.cornerBottomRightNeeded(mode)){ ret.appendPadding(this.getCorner().getCorner(TA_Corner.MODE_BOTTOM_RIGHT).length(), ' '); } return ret; }
sb.insert(0, new StrBuilder().appendPadding(this.getBorder().getBorder(TA_Border.MODE_LEFT).length(), ' ')); sb.appendPadding(this.getBorder().getBorder(TA_Border.MODE_RIGHT).length(), ' ');
ret.appendPadding(this.getCorner().getCorner(TA_Corner.MODE_TOP_LEFT).length(), ' '); ret.appendPadding(this.getTopline().getLine(width).length(), ' '); ret.appendPadding(this.getCorner().getCorner(TA_Corner.MODE_TOP_RIGHT).length(), ' ');
if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(2)).append(" item 1").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(2)).append(" item 2"); if(this.getMaxLevel()==-1 || this.getMaxLevel()>=n){ ret.appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(3)).append(" item 1").appendNewLine(); ret.appendPadding(2*(n-1), ' ').append(this.getLabel(3)).append(" item 2").appendNewLine();
@Override public StrBuilder toLog() { StrBuilder ret = new StrBuilder(); if(this.hasList()){ ret .append("List item: [") .append(this.list.getClass().getSimpleName()) .append('/') .append(this.list.getContext().getLevel()) .append("] - text == ") .append(this.getRawText()) ; for(AsciiListItem i : this.list.getItems()){ ret .appendNewLine() .appendPadding(this.list.getContext().getLevel() * 2, ' ') .append("- ") .append(i.toLog()) ; } } else{ ret .append("Text item: ") .append(this.getRawText()) ; } return ret; } }