Hi Josh,

so if I understand correctly your words, for cases where the function is
called the same as the typedef and we have params and return values we need
to create a function as I did and then add the rest of functions in
separate files in the packaged named the same as the typedef?

Regarding "marked" example, I got the initial example working, but I'm
trying to configure options that require create internal types in marked,
and I'm not got it already.

thanks



El mié., 15 abr. 2020 a las 18:00, Josh Tynjala (<[email protected]>)
escribió:

> 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 <[email protected]>
> 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 (<[email protected]
> >)
> > 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:[email protected]>
> > > Sent: Wednesday, April 15, 2020 12:05 PM
> > > To: Apache Royale Development<mailto:[email protected]>
> > > 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 (<
> > [email protected]
> > > >)
> > > 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
> >
>


-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to