Ok, thanks a lot. That makes sense. :-)
On Aug 20, 2009, at 12:24 AM, Henry Minsky wrote:
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]