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]



Reply via email to