diff --git a/src/main/java/com/singingbush/sdl/Tag.java b/src/main/java/com/singingbush/sdl/Tag.java index ab1d30a..7df7394 100644 --- a/src/main/java/com/singingbush/sdl/Tag.java +++ b/src/main/java/com/singingbush/sdl/Tag.java @@ -341,6 +341,7 @@ public class Tag implements Serializable { private final String namespace; private final String name; + private String comment; private List values = new ArrayList(); private List valuesView = Collections.unmodifiableList(values); private Map attributeToNamespace = new HashMap<>(); @@ -852,7 +853,15 @@ public String getNamespace() { return namespace; } - /** + public String getComment() { + return comment; + } + + public void setComment(final String comment) { + this.comment = comment; + } + + /** * Add all the tags specified in the file at the given URL to this Tag. * * @param url A UTF8 encoded .sdl file @@ -981,6 +990,13 @@ private String toString(@Nullable String linePrefix) { final StringBuilder builder = new StringBuilder(linePrefix); + if(comment != null && !comment.isEmpty()) { + final String[] lines = comment.split("\n"); + for (final String line : lines) { + builder.append("// ").append(line).append(newLine).append(linePrefix); + } + } + boolean skipValueSpace=false; if("content".equals(name) && "".equals(namespace)) { skipValueSpace=true; diff --git a/src/main/java/com/singingbush/sdl/TagBuilder.java b/src/main/java/com/singingbush/sdl/TagBuilder.java index 510069c..11d8d6e 100644 --- a/src/main/java/com/singingbush/sdl/TagBuilder.java +++ b/src/main/java/com/singingbush/sdl/TagBuilder.java @@ -17,6 +17,7 @@ public class TagBuilder { private final String name; private String namespace; + private String comment; private List values = new ArrayList<>(); private List children = new ArrayList<>(); private Map attributes = new HashMap<>(); @@ -41,6 +42,17 @@ public TagBuilder withNamespace(@NotNull final String name) { return this; } + /** + * + * @param comment a single line of text that will precede the tag when serialised + * @return this TagBuilder + * @since 2.0.2 + */ + public TagBuilder withComment(@NotNull final String comment) { + this.comment = comment; + return this; + } + /** * In SDL you can optionally have one or more values * @param value an SDL object, see {@link SdlValue} @@ -147,6 +159,7 @@ public TagBuilder withAttributes(@NotNull final Map attributes @NotNull public Tag build() { final Tag t = namespace != null? new Tag(namespace, name) : new Tag(name); + t.setComment(comment); values.forEach(t::addValue); children.forEach(t::addChild); t.setAttributes(attributes); // attributes.forEach(t::setAttribute);