It's not ideal, but one way that I've found to define a typedef function that exposes "static" functions similar to a class is to put those "static" functions into a package with the same name as the root function.
package { /** * @externs */ COMPILE::JS public function marked(s:String):String { return null; }; } package marked { /** * @externs * configure marked with options */ COMPILE::JS public function setOptions(o:Object):void {}; } Another option is to use dynamic access, but that won't be checked by the compiler. marked["setOptions"]() -- Josh Tynjala Bowler Hat LLC <https://bowlerhat.dev> On Wed, Apr 15, 2020 at 7:39 AM Carlos Rovira <carlosrov...@apache.org> wrote: > Hi Yishay, > > this finally worked (declaring as a function): > > package > { > /** > * @externs > */ > COMPILE::JS > public function marked(s:String):String { > return null; > }; > } > > I see two problems with this approach > > 1. inject_html is not valid, So I need other wrapper class to add the > inject_html and use marked within, to make usable as a piece of code > (don't > like let the user to add the .js script to the html template > 2. Since is a function I can add other API functions like setOptions. > ie: > > /** > * configure marked with options > */ > COMPILE::JS > public function setOptions(o:Object):void {}; > > Would like to be know how to declare this as a class to add other function > APIs available in the js library > > > El mié., 15 abr. 2020 a las 11:14, Yishay Weiss (<yishayj...@hotmail.com>) > escribió: > > > You can just return null. > > > > I think the best thing for you to do is to go to one of the typedefs, > > build, and look at the generated sources. > > > > For example > > > > cd …\royale-typedefs > > cd google_maps > > ant; > > cd target\generated-sources > > > > Explore the .as classes there. > > > > Hope this helps. > > > > From: Carlos Rovira<mailto:carlosrov...@apache.org> > > Sent: Wednesday, April 15, 2020 12:05 PM > > To: Apache Royale Development<mailto:dev@royale.apache.org> > > Subject: Re: Problems to create AS3 externs when JS library returns some > > kind of object > > > > Hi, > > > > additional to this, is how we can create an extern function that return > > something: > > > > public function someFoo(s:String):String {}; > > > > AS3 expect here some return value inside the brackets. So how we can > write > > this in AS3 without errors? > > > > thanks > > > > El mié., 15 abr. 2020 a las 10:48, Carlos Rovira (< > carlosrov...@apache.org > > >) > > escribió: > > > > > Hi, > > > > > > I'm playing with a js markdown library [1] to see if is an option to > make > > > a Royale website that load markdown and render it (I'm experimenting to > > see > > > if we can't remove wordpress from our website and make a web based on > > > markdown similar to royale-docs) > > > > > > I'm having problems trying to create the extern as3 file. I'm trying > > > something similar to what we did with hljs. Here's my try: > > > > > > > > > package > > > { > > > /** > > > * marked js library > > > */ > > > COMPILE::JS > > > public class marked > > > { > > > /** > > > * > > > * <inject_html> > > > * <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js > > > "></script> > > > * </inject_html> > > > * > > > * @royaleignorecoercion String > > > */ > > > public function marked(s:String):String {}; > > > > > > /** > > > * configure marked with options > > > */ > > > public function setOptions(o:Object):void {}; > > > } > > > } > > > > > > The problem is > > > > > > public function marked(s:String):String {}; > > > > > > since the library gets a String and returns a String, but AS3 > > constructors > > > must be void > > > > > > I remember Josh posted alternative ways to create this kind of AS3 > stubs, > > > but he posted in a paste apache that is now gone. > > > Anyway would be good to know if this is a limitation of AS3 language > and > > > we can't create this kind of AS3 classes that model a JS library with > > > constructors that return something like a string. > > > > > > Thanks > > > > > > [1] https://marked.js.org/#/README.md#usage > > > > > > -- > > > Carlos Rovira > > > http://about.me/carlosrovira > > > > > > > > > > -- > > Carlos Rovira > > http://about.me/carlosrovira > > > > > > -- > Carlos Rovira > http://about.me/carlosrovira >