In the file from the previous post, there few special regex patterns that
make js importer fail. If you delete those lines 2595-2613 from
jquery.terminal.js, importer will successfully import the file. Looking in
generated tree here are few example nodes:
//headline:if (typeof define === 'function' && define.amd)
//and the content of body is
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
// Node/CommonJS
@others
}
})(function($, undefined) {
'use strict';
//
-----------------------------------------------------------------------
// :: Replacemenet for jQuery 2 deferred objects
//
-----------------------------------------------------------------------
//or another one
//headline:everyTime: function(interval, label, fn, times, belay)
//and the body
everyTime: function(interval, label, fn, times, belay) {
@others
},
// and in at-others is following code
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, times, belay);
});
If one wants to read and understand function `everyTime`, he must look into
other node to see what it does. And here is little bit of context around
that function in source file:
//
-----------------------------------------------------------------------
// :: jQuery Timers
//
-----------------------------------------------------------------------
var jQuery = $;
jQuery.fn.extend({
everyTime: function(interval, label, fn, times, belay) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, times, belay);
});
},
oneTime: function(interval, label, fn) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, 1);
});
},
stopTime: function(label, fn) {
return this.each(function() {
jQuery.timer.remove(this, label, fn);
});
}
});
Arguably, the whole this code can fit nicely in one body. After all it is
just 20 lines long. Instead Leo importer split this piece of code into 7
nodes. The worse is that the beginning of the above code that has three
lines of comment as small heading is placed at the bottom of totally
unrelated node whose headline is `function dc(n)` and the body is as
follows:
function dc(n) { return wc(n, '', -1); } /** * Public API *
$.Storage.set("name", "value") * $.Storage.set({"name1":"value1",
"name2":"value2", etc}) * $.Storage.get("name") * $.Storage.remove("name")
*/ var localStorage; if (!hasCookies() && !isLS) { localStorage = {};
$.extend({ Storage: { set: wls, get: rls, remove: dls } }); } else { if
(isLS) { localStorage = window.localStorage; } $.extend({ Storage: { set:
isLS ? wls : wc, get: isLS ? rls : rc, remove: isLS ? dls : dc } }); } //
----------------------------------------------------------------------- //
:: jQuery Timers //
----------------------------------------------------------------------- var
jQuery = $; jQuery.fn.extend({
Now, if this examples are not enough to prove my point, please show
imported tree to any js developer and ask him what the code does or if he
finds that this particular view of source code is better then looking in a
flat file.
We may pretend that those are small glitches but, I really doubt that
anyone will buy it. Leo should be superior tool for studying others people
code, but when we speak about imported javascript files it fails (IMHO)
miserably. And I do believe it can be done much better.
I am sorry to be just criticizing your solution without providing any
other, and at the moment I really can't do anything more to provide the
solution. I shared my idea hoping that it would help. When I find more free
time, hopefully, I will made that idea come true. Also I was hoping that
once I have this plugin, and start to use it for importing js projects,
perhaps I would find that some sequence of the above explained commands
need to be manually repeated over and over until the whole file is
imported. In that case it would be simple enough to make that sequence of
steps in one new command or in some kind of recipe for importing files of
some specific coding style. Perhaps it would lead to a small collection of
recipes for importing js files depending on code style. Then perhaps, Leo
could execute several recipes, show the result tree and user just chose
what recipe suites best for particular project.
Vitalije
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.