1 28 29 package com.idaremedia.antx; 30 31 import java.io.File ; 32 import java.net.URL ; 33 import java.util.Date ; 34 35 import org.apache.tools.ant.Project; 36 import org.apache.tools.ant.types.EnumeratedAttribute; 37 import org.apache.tools.ant.types.Environment; 38 import org.apache.tools.ant.types.Path; 39 import org.apache.tools.ant.types.RegularExpression; 40 import org.apache.tools.ant.util.regexp.RegexpMatcher; 41 42 import com.idaremedia.antx.apis.FlexStringFriendly; 43 import com.idaremedia.antx.helpers.DateTimeFormat; 44 import com.idaremedia.antx.helpers.InnerString; 45 import com.idaremedia.antx.helpers.Tk; 46 47 83 84 public class Stringifier implements FixtureCore 85 { 86 94 public static final Stringifier get(boolean lenient) 95 { 96 return lenient ? Iteration.lenientStringifer() 97 : Iteration.strictStringifier(); 98 } 99 100 101 104 public Stringifier() 105 { 106 m_isLenient = true; 107 } 108 109 110 115 public Stringifier(boolean lenient) 116 { 117 m_isLenient = lenient; 118 } 119 120 121 127 public final boolean isLenient() 128 { 129 return m_isLenient; 130 } 131 132 133 144 public String stringFrom(Object o, Project project) 145 { 146 if (o==null) { 147 return null; 148 } 149 if (o instanceof FlexStringFriendly) { 150 return ((FlexStringFriendly)o).stringFrom(project); 151 } 152 153 if (o instanceof String || o instanceof Boolean ) { 159 return o.toString(); 160 } 161 if (o instanceof InnerString) { 162 return ((InnerString)o).toString(project); 163 } 164 if (o instanceof Throwable ) { 165 return ((Throwable )o).getMessage(); 166 } 167 if (o instanceof RegularExpression) { 168 return ((RegularExpression)o).getPattern(project); 169 } 170 if (o instanceof RegexpMatcher) { 171 return ((RegexpMatcher)o).getPattern(); 172 } 173 if (o instanceof Path) { 174 return ((Path)o).toString(); 175 } 176 if (o instanceof File || o instanceof URL || o instanceof Number ) { 177 return o.toString(); 178 } 179 if (o instanceof Date ) { 180 return DateTimeFormat.GMTformat(((Date )o).getTime()); 181 } 182 if (o instanceof EnumeratedAttribute) { 183 return ((EnumeratedAttribute)o).getValue(); 184 } 185 if (o instanceof Environment.Variable) { 186 return ((Environment.Variable)o).getValue(); 187 } 188 if (o instanceof Class ) { 189 return ((Class )o).getName(); 190 } 191 192 if (!isLenient()) { 193 return null; } 195 196 return Tk.stringFrom(o,project); 199 } 200 201 202 private final boolean m_isLenient; 203 } 204 205 206 | Popular Tags |