You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-dev@jakarta.apache.org by fe...@apache.org on 2004/03/09 06:44:00 UTC
cvs commit: jakarta-taglibs/string/xml string.xml
felipeal 2004/03/08 21:44:00
Modified: string/src/org/apache/taglibs/string WordWrapTag.java
string/src/org/apache/taglibs/string/util StringW.java
string/xml string.xml
Log:
added attribute delimiterInside for tag wordWrap - see bug 21866
Revision Changes Path
1.9 +23 -1 jakarta-taglibs/string/src/org/apache/taglibs/string/WordWrapTag.java
Index: WordWrapTag.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/string/src/org/apache/taglibs/string/WordWrapTag.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- WordWrapTag.java 9 Mar 2004 00:54:45 -0000 1.8
+++ WordWrapTag.java 9 Mar 2004 05:44:00 -0000 1.9
@@ -39,6 +39,10 @@
* Character to use when a word has to be split.
* Default is a - character.
* </dd>
+ * <dt>delimiterInside</dt><dd>
+ * Flag indicating if the delimiter should be included in chunk before length reaches width.
+ * Default is true.
+ * </dd>
* </dl>
*
* @author bayard@generationjava.com
@@ -48,6 +52,7 @@
private String delimiter;
private String width;
private String split;
+ private boolean delimiterInside;
public WordWrapTag() {
super();
@@ -109,10 +114,26 @@
this.split = split;
}
+ /**
+ * Get the delimiterInside property
+ *
+ * @return delimiterInside property
+ */
+ public boolean getDelimiterInside() {
+ return this.delimiterInside;
+ }
+ /**
+ * Set the delimiterInside property
+ *
+ * @param delimiterInside property
+ */
+ public void setDelimiterInside(boolean delimiterInside) {
+ this.delimiterInside = delimiterInside;
+ }
public String changeString(String text) throws JspException {
- return StringW.wordWrap(text, NumberUtils.stringToInt(width), delimiter, split);
+ return StringW.wordWrap(text, NumberUtils.stringToInt(width), delimiter, split, delimiterInside );
}
public void initAttributes() {
@@ -123,6 +144,7 @@
this.split = "-";
+ this.delimiterInside = true;
}
}
1.18 +31 -5 jakarta-taglibs/string/src/org/apache/taglibs/string/util/StringW.java
Index: StringW.java
===================================================================
RCS file: /home/cvs/jakarta-taglibs/string/src/org/apache/taglibs/string/util/StringW.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- StringW.java 6 Mar 2004 06:58:49 -0000 1.17
+++ StringW.java 9 Mar 2004 05:44:00 -0000 1.18
@@ -68,7 +68,7 @@
* use a - sign to split it.
*/
static public String wordWrap(String str) {
- return wordWrap(str, 80, "\n", "-");
+ return wordWrap(str, 80, "\n", "-", true);
}
/**
* Create a word-wrapped version of a String. Wrap at a specified width and
@@ -76,7 +76,7 @@
* use a - sign to split it.
*/
static public String wordWrap(String str, int width) {
- return wordWrap(str, width, "\n", "-");
+ return wordWrap(str, width, "\n", "-", true);
}
/**
* Word-wrap a string.
@@ -86,19 +86,43 @@
* @param delim String to use to separate lines
* @param split String to use to split a word greater than width long
*
+ * @return String that has been word wrapped (with the delim inside width boundaries)
+ */
+ static public String wordWrap(String str, int width, String delim, String split ) {
+ return wordWrap(str, width, delim, split, true);
+ }
+
+ /**
+ * Word-wrap a string.
+ *
+ * @param str String to word-wrap
+ * @param width int to wrap at
+ * @param delim String to use to separate lines
+ * @param split String to use to split a word greater than width long
+ * @param delimInside wheter or not delim should be included in chunk before length reaches width.
+ *
* @return String that has been word wrapped
*/
- static public String wordWrap(String str, int width, String delim, String split) {
+ static public String wordWrap(String str, int width, String delim,
+ String split, boolean delimInside) {
int sz = str.length();
+ // System.err.println( ">>>> inside: " + delimInside + " sz : " + sz );
+
/// shift width up one. mainly as it makes the logic easier
width++;
// our best guess as to an initial size
StringBuffer buffer = new StringBuffer(sz/width*delim.length()+sz);
- // every line will include a delim on the end
- width = width - delim.length();
+ // every line might include a delim on the end
+ // System.err.println( "width before: "+ width );
+ if ( delimInside ) {
+ width = width - delim.length();
+ } else {
+ width --;
+ }
+ // System.err.println( "width after: "+ width );
int idx = -1;
String substr = null;
@@ -116,9 +140,11 @@
// System.err.println("loop[i] is: "+i);
// the current line
substr = str.substring(i, i+width);
+ // System.err.println( "substr: " + substr );
// is the delim already on the line
idx = substr.indexOf(delim);
+ // System.err.println( "i: " + i + " idx : " + idx );
if(idx != -1) {
buffer.append(substr.substring(0,idx));
// System.err.println("Substr: '"substr.substring(0,idx)+"'");
1.30 +11 -0 jakarta-taglibs/string/xml/string.xml
Index: string.xml
===================================================================
RCS file: /home/cvs/jakarta-taglibs/string/xml/string.xml,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- string.xml 9 Mar 2004 00:48:03 -0000 1.29
+++ string.xml 9 Mar 2004 05:44:00 -0000 1.30
@@ -1427,6 +1427,17 @@
</description>
<availability>1.0</availability>
</attribute>
+ <attribute>
+ <name>delimiterInside</name>
+ <required>false</required>
+ <rtexprvalue>false</rtexprvalue>
+ <type>boolean</type>
+ <description>
+ Flag indicating if the delimiter should be included in chunk before length reaches width.
+ Default is true.
+ </description>
+ <availability>1.1</availability>
+ </attribute>
<example>
<usage>
<comment>
---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-dev-help@jakarta.apache.org