Hi,
most of this code parsers the introspection data,
https://git.gnome.org/browse/introspection-doc-generator/tree/Introspect
it's used to generate the documentation here (it's getting quite old
though now)
http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/WebKit.html
The seed documentation is slightly better than gjs (as that is what I
used first) - from what i remember it does not document return values
that well for gjs.
If you are spawning... - I did wrap that up at one point here
http://git.roojs.com/?p=gitlive;a=blob;f=Spawn.js;h=4d9f202373cb111b47cb3c2eac0db4de405e0deb;hb=HEAD
Gives out quite a few features like tracking the io, backgrounding etc...
I'm not sure if the gir modifications in that file are relivant - I've
actually ported most of my seed code to vala now.
Regards
Alan
On Tuesday, December 08, 2015 05:17 PM, Andrea Giammarchi wrote:
Now that's what I call a welcome email, full of info: Thank You!!!
I'd love to know more about Jasper St. Pierre idea. I'm playing with
an experimental distro (on github, if interested I'll drop a link)
based on ArchLinux that bootstraps into Weston on Wayland backend and
GTK3 (GJS based) in 8 seconds, on a Raspberry PI, and it also launches
node.js so the stack is 100% JavaScript (who would have bet years ago?!)
About the documentation, I don't actually parse it: I just read all
file names
(https://github.com/WebReflection/jsgtk/blob/master/python-to.js) and
based on these I create the file that will optionally make the API
camel case.
As far as I have used JavaScript (15+ years at this point) in both Web
or Rhino/Nashorn/node/Server projects, methods and properties have
always been camelCase.
I found it convenient to have it like it is now (I guess simpler to
document and "Google | grep" with its PyGTK counterpart) but I'm used
too much to camelCase and having a lightweight opt-in that does not
compromise internals seemed like a good choice to me.
However, I'd like to generate Gtk and WebKit namespace too (or all
others different from GObject, GLib, and Gio in this link
https://people.gnome.org/~gcampagna/docs/
<https://people.gnome.org/%7Egcampagna/docs/> which is mentioned in
this page https://wiki.gnome.org/Projects/Gjs/Documentation) for both
reading files and also to document myself locally instead of bothering
some GNOME or Github server ;-)
Would this procedure via Ruby you've mentioned make it possible to
have all those files generated as well? Right now as soon as I make it
stops after static folder is parsed with anything in the generated list.
About node.js
For me it wasn't a love or hate story on its API, it's rather the
entry point to npm.
As example, now that I have a working `require` function instead of
needing to re-polyfill again Promises for js24, I can simply do this:
```js
const Promise = require('es6-promise').Promise;
new Promise(function (res, rej) {
setTimeout(res, 500, 'it worked!');
}).then(log);
```
That just worked via jsgtk. And please note jsgtk is not just a couple
of helpers, core functionalities
(https://github.com/WebReflection/jsgtk/tree/master/jsgtk) make it
already compatible with a wide range of modules.
For instance, my last push from yesterday introduced Readable and
Writable streams so that I can now communicate asynchronously within
separate channels via spawn and, let's say, sqlite3 (or module based
on this such dblite in npm, which now works too)
```js
let sqlite3 = require('child_process').spawn('sqlite3');
sqlite3.stdin.write('SELECT 123;\n');
sqlite3.stdout.on('data', (data) => {
log(data);
sqlite3.disconnect();
});
```
Thanks to this simplified spawn, where I couldn't find documentation,
I could workaround interacting directly with nodejs like I've done for
the os module:
https://github.com/WebReflection/jsgtk/blob/master/jsgtk/os.js (I had
hard time finding out how to retrieve valid network interfaces and
their info via GJS)
Not ideal, but it works. jsgtk is also far away from perfect or
complete ... but it kinda works already.
As final point about node.js, its documentation is superior for the
simple reason that every module, constructor, or event, is described
with examples too while the best documentation I could find about GJS
and its most basic functionalities is in Japanese (I guess)
http://foreachsam.github.io/book-lang-javascript-gjs/book/index.html
I'm willing to help improving GJS documentation, least through my
blog, but regarding `jsgtk` ... well, contributors are **more** than
welcome so please have a look if you're interested and ping me
whenever you want.
Best Regards
On Tue, Dec 8, 2015 at 6:02 AM, Philip Chimento
<philip.chime...@gmail.com <mailto:philip.chime...@gmail.com>> wrote:
On Mon, Dec 7, 2015 at 1:26 AM, Andrea Giammarchi
<andrea.giammar...@gmail.com <mailto:andrea.giammar...@gmail.com>>
wrote:
First of all, I'd like to say hello to everyone. I've been
using GNOME on ArchLinux for more than a year now and I love
pretty much everything about it.
Recently I've found GJS project and I've started playing with
it making it more "JSish" than "Pythonic" and implementing
partially some node.js core API and functionalities such
require, fs, path, os, with some synchronous and asynchhronous
API too.
Hello, welcome.
You might want to check in with Jasper St. Pierre (Jasper on IRC),
he has been interested in bootstrapping the Gnome stack onto Node.js.
So far, so good ... however, there are 2 main questions I'd
like to ask about GJS:
1. is this project still alive? It works like a charm but
repositories look untouched for long time
Yes, there was a 1.44.0 release just last month. It's not the most
active GNOME project though.
2. is it posible to know how to generate the Giovanni's
documentation? I've talked with him directly and apprently
he's not working on that branch anymore but beside static
assets that are present in such branch, all generated content
fails to build (tried in ArchLinux, Ubuntu) and I've no idea
what I should do in order to generate the documentation for
Gtk-3.0 or Gdk and others that are not Gio, GObject, and GLib.
The result of the parsing of such documentation gives me the
ability to create files like the following one:
https://github.com/WebReflection/jsgtk/blob/master/jsgtk/gi.js
Since the Proxy implemented in js24 seems to fail if used
directly as Gtk instance, that's the way to tarnsform all
accessors and methods from lower_case to camelCase but this is
only one part of the project, the rest will be at some point
documented as long as I understand it's worth keep improving it.
I would strongly recommend that you not parse the documentation
but instead parse the GIR files directly.
Even better would be, in my opinion, to write some code on the C
side of things to handle both underscored and camelcased methods.
Here's where it's done for GObject property names:
https://git.gnome.org/browse/gjs/tree/gi/object.cpp#n282
(I suspect a change like this would be controversial, though; I'm
not sure of the reason why it was originally done for GObject
properties and not methods, but hardly any existing GJS code that
I've seen takes advantage of camelcased properties.)
Coincidentally I've been working off and on, on getting the GJS
documentation into a local instance of devdocs.io
<http://devdocs.io>. If you want to try it out, build this branch
of gobject-introspection
(https://github.com/ptomato/gobject-introspection/tree/wip/ptomato/devdocs)
and check out this branch of devdocs
(https://github.com/ptomato/devdocs/tree/gir-redux). In your Ruby
environment run "thor gir:generate_all" then "thor gir:generate
gio --force" (repeat the last one for whichever GIR documentation
you want to generate), then "rackup" to start the webapp.
Right now the quick demo I can provide is that if you `npm
install jsgtk` in a folder that contains a `node_modules`
directory and you create a `hello-world` like the following
```
#!/usr/bin/env sh
imports=imports// "exec" "gjs" "-I" "$(dirname
$0)/node_modules/jsgtk/" "$0" "$@"
let {console} = imports.jsgtk;
console.info <http://console.info>('Hello jsgtk!');
```
and you `chmod +x hello-world` and run it or simply `sh
hello-world` you should see the message in console.
Thanks for any sort of info or comment or clarification.
Personally I'm not a fan of Node.js's API, rather see something
with promises than more callback hell, but it would indeed be nice
to have some sort of standard module that lowers the barrier of
entry for people new to Gnome who are used to web development. But
that's my opinion and I'm not a GJS maintainer, just a heavy user.
Satyajit Sahoo who I think reads this list, also has something
similar: https://github.com/satya164/gjs-helpers
Regards,
--
Philip
_______________________________________________
javascript-list mailing list
javascript-list@gnome.org
https://mail.gnome.org/mailman/listinfo/javascript-list
_______________________________________________
javascript-list mailing list
javascript-list@gnome.org
https://mail.gnome.org/mailman/listinfo/javascript-list