/** * Finds a code with a given ID in this fragment, or null if there is no such code. * @param id the ID to look for. * @return code, or null */ public Code findCode(int id) { for (Code code : codes) { if (code.getId() == id) { return code; } } return null; }
@Override public int compare(Code c1, Code c2) { if (c1.getId() == c2.getId() && c1.getTagType() == c2.getTagType()) { return 0; } else if (c1.getId() == c2.getId() && c1.getTagType() != c2.getTagType()) { return c1.getTagType().compareTo(c2.getTagType()); } else { return Integer.compare(c1.getId(), c2.getId()); } } }
/** * Find the minimum ID of any code in the TextFragment, then * use that to calculate the offset/delta by which all code * IDs in the TextFragment need to be adjusted. * * @param tf TextFragment to examine * @return code ID offset for the TextFragment, which is one * less than the minimum code ID */ public static int calculateCodeOffset(TextFragment tf) { if (tf.getCodes().size() == 0) { return 0; } int minId = Integer.MAX_VALUE; for (Code code : tf.getCodes()) { if (minId > code.getId()) { minId = code.getId(); } } return minId - 1; }
/** * Reduce the IDs for all codes in a TextFragment by a fixed amount. * @param tf * @param offset */ private static void reduceCodeIdsByOffset(TextFragment tf, int offset) { for (Code code : tf.getCodes()) { code.setId(code.getId() - offset); } }
return String.format("{%d}", code.getId()); case CLOSING: return String.format("{/%d}", code.getId()); case PLACEHOLDER: return String.format("{%d/}", code.getId()); switch ( code.getTagType() ) { case OPENING: return String.format("<%d>", code.getId()); case CLOSING: return String.format("</%d>", code.getId()); case PLACEHOLDER: return String.format("<%d/>", code.getId());
index = TextFragment.toIndex(codedText.charAt(++i)); if ( normalText ) tmp.append(codes.get(index).toString()); else tmp.append(String.format("<%d>", codes.get(index).getId())); break; case TextFragment.MARKER_CLOSING: index = TextFragment.toIndex(codedText.charAt(++i)); if ( normalText ) tmp.append(codes.get(index).toString()); else tmp.append(String.format("</%d>", codes.get(index).getId())); break; case TextFragment.MARKER_ISOLATED: else { if ( codes.get(index).getTagType() == TagType.OPENING ) { tmp.append(String.format("<b%d/>", codes.get(index).getId())); tmp.append(String.format("<e%d/>", codes.get(index).getId())); tmp.append(String.format("<%d/>", codes.get(index).getId()));
private static int incrementCodeIdsByOffset(TextFragment tf, int delta) { int count = 0; for ( Code code : tf.getCodes() ) { code.setId(code.getId() + delta); if (code.getTagType() != TagType.CLOSING) count++; } return count; } }
private void addClosingCode(TextFragment tf, RunContainer rc, Code openCode) { Code code = new Code(TagType.CLOSING, openCode.getType()); code.setData("</" + rc.getType().getValue() + openCode.getId() + ">"); code.setId(openCode.getId()); // Clear container default properties runCodeStack.pop(); tf.append(code); } }
private void addCode(Code code) { Object codeObject = codeMap.get(code.getId());
sb.append(tag.toString()); sb.append(" id=\""); sb.append(code.getId()); sb.append("\"");
protected void addOpeningCode(TextFragment tf, RunCode rc) { Code code = new Code(TextFragment.TagType.OPENING, rc.getCodeType()); code.setId(rc.getCodeId()); code.setData("<run" + code.getId() + ">"); codeMap.put(rc.getCodeId(), rc.getRunProperties()); tf.append(code); }
private void addClosingCode(TextFragment textFragment, ContentCode contentCode) { Code code = new Code(TextFragment.TagType.CLOSING, contentCode.getCodeType()); code.setId(contentCode.getCodeId()); code.setData(CONTENT_TAG_CLOSING + DASH + code.getId() + TAG_CLOSING); textFragment.append(code); }
protected void addClosingCode(TextFragment tf, RunCode rc) { Code code = new Code(TextFragment.TagType.CLOSING, rc.getCodeType()); code.setId(rc.getCodeId()); code.setData("</run" + code.getId() + ">"); tf.append(code); }
private void addOpeningCode(TextFragment textFragment, ContentCode contentCode) { Code code = new Code(TextFragment.TagType.OPENING, contentCode.getCodeType()); code.setId(contentCode.getCodeId()); code.setData(CONTENT_TAG_OPENING + DASH + code.getId() + TAG_CLOSING); textFragment.append(code); codeMap.put(contentCode.getCodeId(), null == contentCode.getStyledTextReferenceElement() ? contentCode.getStyleDefinitions() : contentCode.getStyledTextReferenceElement()); }
case OPENING: xCode = xFrag.append(net.sf.okapi.lib.xliff2.core.TagType.OPENING, String.valueOf(code.getId()), code.getData(), mayOverlapDefault); break; case CLOSING: xCode = xFrag.append(net.sf.okapi.lib.xliff2.core.TagType.CLOSING, String.valueOf(code.getId()), code.getData(), mayOverlapDefault); break; case PLACEHOLDER: default: xCode = xFrag.appendCode(String.valueOf(code.getId()), code.getData()); break;