You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by nb...@apache.org on 2005/11/18 01:18:01 UTC
svn commit: r345379 -
/jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/generic/ValueParser.java
Author: nbubna
Date: Thu Nov 17 16:17:57 2005
New Revision: 345379
URL: http://svn.apache.org/viewcvs?rev=345379&view=rev
Log:
re-implement get() to enable more convenient syntax when using in templates
Modified:
jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/generic/ValueParser.java
Modified: jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/generic/ValueParser.java
URL: http://svn.apache.org/viewcvs/jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/generic/ValueParser.java?rev=345379&r1=345378&r2=345379&view=diff
==============================================================================
--- jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/generic/ValueParser.java (original)
+++ jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/generic/ValueParser.java Thu Nov 17 16:17:57 2005
@@ -26,14 +26,14 @@
* <p><pre>
* Template example(s):
* $parser.foo -> bar
- * $parser.getNumber('baz') -> 12.6
- * $parser.getInt('baz') -> 12
- * $parser.getNumbers('foo') -> [12.6]
+ * $parser.baz.number -> 12.6
+ * $parser.baz.int -> 12
+ * $parser.baz.numbers -> [12.6]
*
* Toolbox configuration:
* <tool>
* <key>parser</key>
- * <class>org.apache.velocity.generic.Parser</class>
+ * <class>org.apache.velocity.generic.ValueParser</class>
* </tool>
* </pre></p>
*
@@ -93,9 +93,89 @@
* <code>null</code> if there is no matching
* parameter
*/
- public String get(String key)
+ public Object get(String key)
{
- return getString(key);
+ return new ValueParserSub(this, key);
+ }
+
+ /**
+ * A helper class to enable simplified syntax for
+ * using a ValueParser in a template.
+ * @since VelocityTools 1.3
+ */
+ public class ValueParserSub
+ {
+ private ValueParser parser;
+ private String key;
+
+ public ValueParserSub(ValueParser parser, String key)
+ {
+ this.parser = parser;
+ this.key = key;
+ }
+
+ public Object get(String key)
+ {
+ if (key == null)
+ {
+ return null;
+ }
+ else if (key.equalsIgnoreCase("string"))
+ {
+ return toString();
+ }
+ else if (key.equalsIgnoreCase("number"))
+ {
+ return parser.getNumber(key);
+ }
+ else if (key.equalsIgnoreCase("boolean"))
+ {
+ return parser.getBoolean(key);
+ }
+ else if (key.equalsIgnoreCase("int"))
+ {
+ return parser.getInteger(key);
+ }
+ else if (key.equalsIgnoreCase("double"))
+ {
+ return parser.getDouble(key);
+ }
+ else if (key.equalsIgnoreCase("strings"))
+ {
+ return parser.getStrings(key);
+ }
+ else if (key.equalsIgnoreCase("numbers"))
+ {
+ return parser.getNumbers(key);
+ }
+ else if (key.equalsIgnoreCase("ints"))
+ {
+ return parser.getInts(key);
+ }
+ else if (key.equalsIgnoreCase("doubles"))
+ {
+ return parser.getDoubles(key);
+ }
+ else if (key.equalsIgnoreCase("booleans"))
+ {
+ return parser.getBooleans(key);
+ }
+ else if (key.equalsIgnoreCase("string"))
+ {
+ return toString();
+ }
+ else
+ {
+ // assume the key had a period in it and reconstruct
+ return new ValueParserSub(parser, this.key+'.'+key);
+ }
+ }
+
+ public String toString()
+ {
+ return parser.getString(key);
+ }
+
}
/**
@@ -178,6 +258,68 @@
{
Boolean bool = getBoolean(key);
return (bool != null) ? bool : alternate;
+ }
+
+ /**
+ * @param key the desired parameter's key
+ * @return a {@link Integer} for the specified key or
+ * <code>null</code> if no matching parameter is found
+ */
+ public Integer getInteger(String key)
+ {
+ Number num = getNumber(key);
+ if (num == null || num instanceof Integer)
+ {
+ return (Integer)num;
+ }
+ return new Integer(num.intValue());
+ }
+
+ /**
+ * @param key the desired parameter's key
+ * @param alternate The alternate Integer
+ * @return an Integer for the specified key or the specified
+ * alternate if no matching parameter is found
+ */
+ public Integer getInteger(String key, Integer alternate)
+ {
+ Integer num = getInteger(key);
+ if (num == null)
+ {
+ return alternate;
+ }
+ return num;
+ }
+
+ /**
+ * @param key the desired parameter's key
+ * @return a {@link Double} for the specified key or
+ * <code>null</code> if no matching parameter is found
+ */
+ public Double getDouble(String key)
+ {
+ Number num = getNumber(key);
+ if (num == null || num instanceof Double)
+ {
+ return (Double)num;
+ }
+ return new Double(num.intValue());
+ }
+
+ /**
+ * @param key the desired parameter's key
+ * @param alternate The alternate Double
+ * @return an Double for the specified key or the specified
+ * alternate if no matching parameter is found
+ */
+ public Double getDouble(String key, Double alternate)
+ {
+ Double num = getDouble(key);
+ if (num == null)
+ {
+ return alternate;
+ }
+ return num;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org