On Jan 4, 5:05 pm, Tatablack <[email protected]> wrote:
> Hi, all.
>
> I'm working on a Firebug extension meant to "beautify" JavaScript code
> as shown in the Script and Net panels (the beautifying work is done by
> the JS Beautifier library).
> The Net Panel stuff is finished (just one glitch left to be sorted
> out). I'm not sure which is the best way to go with the script panel,
> and that's why I'm here.
> I'm sorry if some of what I'll write may sound confused - it probably
> is, given that I'm still trying to understand Firebug's internals.
>
> I added a button in the Script toolbar, just to the right of the
> "fbLocationList" combo (the one showing available JS files).

To the left would be more in keeping with the design...

> Clicking the button, I'm able to get the currently displayed JS text,
> like this:
>
> context.sourceCache.loadText(context.panelMap.script.location.href)

I'm not sure where you are putting your code, but in a panel it would
be
this.context and this.location.  Especially the second expression is
quite odd.

>
> ...and beautify it. Now I have to replace the currently displayed file
> with the beautified version. Questions arise...

> 1. I understand that there's a sourceCache object storing, I believe,
> all loaded source files (HTML, JS, and so on). Should I leave the
> cache alone, or update it with the beautified text (in case it's an
> external JS file, of course)?

Better leave it. Plus I don't know how you can replace it: the
sourceFile objects hold unrendered text and I guess you want decorated
(colored) text?

>
> 2. I saw that there's a sourceFileMap, used to access different types
> of SourceFile objects, created by parsing <script> tags, included JS
> files, and probably other things I'm not quite sure about. Should I
> create a new SourceFile object, and use it to replace the one with the
> same href in the sourceFileMap? If so, how can I know which kind of
> SourceFile object to create?

Better not.  Firebug assumes that the sourceFileMap is the one it
built.

>
> 3. Moreover, I see that, after choosing another file from the
> fbLocationList combo, the script panel contents are refreshed by
> calling the navigate(object) method of the panel, passing as "object"
> the value of "locationList.repObject" (happens in chrome.js). How is
> this related to the SourceFile currently displayed? (I tried to get at
> it, but ChromeBug crashed on me after trying to access it while at a
> breakpoint)

The object navigate(object) will be the same type as the
this.location, for every panel. So you can look at the functions like
getLocationList() to see that yes, the SourceFile is the location type
for Script panel.

(By 'crashed' you mean exited with a crashreport?)
>
> That is, more or less, where I am poking at now. Any help would be
> greatly appreciated.

Just to point out that the SourceBox used in the Script file is
designed to support beautifier-like tools, that is any tool that wants
to decorate the source. The script panel only shows a viewport full of
the source at any one time. So if you have 65,000 line of source and a
window that can show 40 lines, the SourceBox arranges to show 40 at a
time. All 65kloc cannot be rendered at once. So a beautifier (or
decompressor) like tool would implement SourceBoxDecorator and chain
the Script panel function getDecorator(). (By chain I mean ensure that
the previous object in getDecorator is called just before your decorate
().

>
> A.

--

You received this message because you are subscribed to the Google Groups 
"Firebug" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/firebug?hl=en.


Reply via email to