Forgot to make clear, the <when property="foo"> is implicitly testing a boolean value, which many of the compile time constants are. It is just 'runtime' that is a string value, and can be compared via the <when property="foo" value="bar"> form.
On Wed, Aug 19, 2009 at 6:22 PM, Henry Minsky <[email protected]>wrote: > There was an older syntax which was specific to the 'runtime' property, and > the new syntax > can check any compile-time constant property. > > So you can actually say > > <when property="runtime" value="swf9"> > > Which I think would be the best way > > e.g., > > <switch> > <when property="runtime" value="swf9"> > <text>runtime is swf9</text> > </when> > <when property="runtime" value="swf10"> > <text>runtime is swf10</text> > </when> > <otherwise> > <text>some other runtime</text> > </otherwise> > </switch> > > "as3" is more of a language selector than a specific runtime, just as "as2" > and "js1" would be. > > The compiler sets these constants, which can be checked at compile time > > boolean setRuntime(String runtime) { > if (! ("dhtml".equals(runtime) || "j2me".equals(runtime) || > "svg".equals(runtime) || > "swf9".equals(runtime) || "swf10".equals(runtime) || > "swf7".equals(runtime) || "swf8".equals(runtime))) { > usage("runtime must be one of swf7, swf8, swf9, swf10, dhtml, j2me, > svg"); > return false; > } > compileTimeConstants.put("$runtime", runtime); > > // Kludges until compile-time constants can be expressions > compileTimeConstants.put("$swf7", > Boolean.valueOf("swf7".equals(runtime))); > compileTimeConstants.put("$swf8", > Boolean.valueOf("swf8".equals(runtime))); > compileTimeConstants.put( > "$as2", > Boolean.valueOf("swf7".equals(runtime) || "swf8".equals(runtime) )); > compileTimeConstants.put("$swf9", > Boolean.valueOf("swf9".equals(runtime))); > compileTimeConstants.put("$swf10", > Boolean.valueOf("swf10".equals(runtime))); > compileTimeConstants.put("$as3", Boolean.valueOf("swf9".equals(runtime) > || "swf10".equals(runtime))); > compileTimeConstants.put("$dhtml", > Boolean.valueOf("dhtml".equals(runtime))); > compileTimeConstants.put("$j2me", > Boolean.valueOf("j2me".equals(runtime))); > compileTimeConstants.put("$svg", > Boolean.valueOf("svg".equals(runtime))); > compileTimeConstants.put( > "$js1", > Boolean.valueOf("dhtml".equals(runtime) || "j2me".equals(runtime) || > "svg".equals(runtime))); > > compilerOptions.put(Compiler.RUNTIME, runtime); > return true; > > } > > > On Wed, Aug 19, 2009 at 4:57 PM, Raju Bitter <[email protected]> wrote: > >> Henry, >> >> why is it that you can say: >> >> <switch> >> <when runtime="dhtml"> >> >> for testing for DHTML runtime, but for SWF9 you have to say >> >> <switch> >> <when property="as3"> >> >> Is there a good reason for not supporting: >> >> <when runtime="swf9"> >> >> What if we have swf9 and swf10 specific code? >> >> - Raju >> > > > > -- > Henry Minsky > Software Architect > [email protected] > > > -- Henry Minsky Software Architect [email protected]
