Hi,

in my latest commit I added hljs extern class like Josh show in package
externs in TDJ

Then I didn't commit the following since is not working for me:

1.- In HighlightCode class (in utils package TDJ)

added:

import externs.hljs;

changed the method highlightBlock to:

        COMPILE::JS
/**
* block is the element (WrappedHTMLElement) inside the component (the
<code> tag)
*/
        public function highlightBlock(block:Element):void
        {
            hljs.highlightBlock(block);
        }

and running it I get:

Uncaught ReferenceError: externs is not defined
    at utils.HighlightCode.highlightBlock (HighlightCode.as:53)
    at
WelcomeSection.components.ExampleAndSourceCodeTabbedSectionContent.dataReadyHandler
(ExampleAndSourceCodeTabbedSectionContent.as:138)
    at services.GitHubService.goog.events.EventTarget.fireListeners
(eventtarget.js:284)
    at Function.goog.events.EventTarget.dispatchEventInternal_
(eventtarget.js:381)
    at services.GitHubService.goog.events.EventTarget.dispatchEvent
(eventtarget.js:196)
    at
services.GitHubService.org.apache.royale.events.EventDispatcher.dispatchEvent
(EventDispatcher.js:71)
    at services.GitHubService.services_GitHubService_completeHandler
(GitHubService.as:54)
    at
org.apache.royale.net.HTTPService.goog.events.EventTarget.fireListeners
(eventtarget.js:284)
    at Function.goog.events.EventTarget.dispatchEventInternal_
(eventtarget.js:381)
    at
org.apache.royale.net.HTTPService.goog.events.EventTarget.dispatchEvent
(eventtarget.js:196)

What I'm doing wrong?

thanks!


El jue., 2 may. 2019 a las 18:02, Carlos Rovira (<carlosrov...@apache.org>)
escribió:

> Hi Josh,
>
> I think this piece of knowledge you just exposed here is key for the
> success of Royale.
>
> I'll try to use this in TDJ to experiment with it and will use in the blog
> example I plan to do.
>
> thanks!
>
>
> El jue., 2 may. 2019 a las 16:36, Josh Tynjala (<joshtynj...@apache.org>)
> escribió:
>
>> > Users can't do this, they required that Royale framework devs add
>> typedefs to the typedefs repo and wait to next SDK release. What does not
>> seems very useful.
>>
>> Users can create their own typedefs from scratch.
>>
>> I just created a quick example for hljs, that exposes the
>> highlightBlock() function:
>>
>> https://paste.apache.org/dIq0
>>
>> Basically, the class needs an asdoc comment with the @externs tag (this
>> is something that comes from Google Closure compiler, which we use to
>> create release builds) and the compiler should handle the rest.
>>
>> As I understand it, you don't even need to create a SWC library for
>> custom typedefs. Recently, Alex mentioned that the mxmlc compiler is smart
>> enough to handle a source file as long as it has the @externs tag.
>>
>> - Josh
>>
>> On 2019/05/02 09:34:37, Carlos Rovira <carlosrov...@apache.org> wrote:
>> > Hi,
>> >
>> > to sumarize (let me know if I'm wrong), the current ways to integrate an
>> > existing library are 3:
>> >
>> > 1.- access vía brackets notation: This is the most easy and direct, an
>> > example is TourDeJewel in class utils.HighlightCode
>> >
>> > var hljs:Object = window["hljs"];
>> > hljs["highlightBlock"](block);
>> >
>> > but this one is not what we really want since we are going with Roayle
>> and
>> > AS3 to get type checking and strong typing. So this, although useful is
>> not
>> > what we really want to use in out Apps, but since we want to maintain
>> the
>> > dynamic aspect of the language it could be very useful sometimes
>> >
>> > 2.- using typedefs
>> >
>> > This will be the next step to use a real type and dot notation, but
>> seems
>> > not easy or direct.
>> > Users can't do this, they required that Royale framework devs add
>> typedefs
>> > to the typedefs repo and wait to next SDK release. What does not seems
>> very
>> > useful.
>> >
>> > In the other hand we'll need to know how to extend current typedefs
>> since
>> > don't know if we have docs about this. Until now I added to "missing.js"
>> > file fo now, but this doesn't seems a valid path since it lacks
>> > organization, separation, and a way for all people contributing to know
>> wha
>> > we have, what can be added and where, if not we'll find in time lots of
>> > code very difficult to maintain.
>> >
>> > Yishay and Josh talked about to use TypeScript, but seems that is
>> already
>> > explored by Josh but not a valid path since will be very difficult to
>> > maintain.
>> >
>> > 3.- wrapping libraries
>> >
>> > This is how we did with MDL. This will be recommended when we want to
>> > integrate existing libraries with Royale to make it work with our APIs
>> in a
>> > more seamless way. But the problems is that this is very laborious. Can
>> be
>> > useful for some concrete libraries and we should do when needed (the
>> case
>> > is MDL). But the problem is that this not solve the problem of our users
>> > that need to integrate a existing library themselves in a quick way.
>> >
>> > Let me know if you know other way.
>> >
>> > For me method 1, is ok to do the work, but doesn't make us justice.
>> > method 2 should be the main one if there's a fast and easy way... I'm
>> > missing something here? Can users create typedefs themselves?
>> > method 3 can be useful for us or for users (doing their own libs, and
>> > eventually can share with us to add to official royale repo and sdk)
>> > but is something not fast at all and not as convenient and direct as
>> method
>> > 2, and will require maintenance as libs change.
>> >
>> > Could we agree that this is the currently available ways in Royale now
>> to
>> > use external JS libs?
>> >
>> > thanks
>> >
>> > --
>> > Carlos Rovira
>> > http://about.me/carlosrovira
>> >
>>
>
>
> --
> Carlos Rovira
> http://about.me/carlosrovira
>
>

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

Reply via email to