it's just slower, and the script few KB instead of an npx install each time.

I'm doing fine with npm install -g cgjs-about but you feel free to use npx

On Wed, Nov 8, 2017 at 10:31 PM, Ben Iofel <iofel...@gmail.com> wrote:

> I didn't expect this to work, but `npx cgjs-about` works fine, without
> having to install cgjs-about.
>
> On Wed, Nov 8, 2017 at 5:50 PM, Andrea Giammarchi <
> andrea.giammar...@gmail.com> wrote:
>
>> cgjs-about 0.2.0 is out with `abstract class` and `adbstracts` info per
>> namespace/class
>>
>> thanks everybody for the hint!
>>
>> On Wed, Nov 8, 2017 at 1:43 PM, Emmanuele Bassi <eba...@gmail.com> wrote:
>>
>>> If you're parsing the GIR, there's an "abstract" attribute for abstract
>>> classes.
>>>
>>> If you're using the GIRepository API, you can use
>>> `g_object_info_get_abstract()` to know if a type is abstract.
>>>
>>> Ciao,
>>>  Emmanuele.
>>>
>>> On 8 November 2017 at 16:40, Sam Jansen <sam.jan...@starleaf.com> wrote:
>>> > Perhaps you can check whether any methods are constructors? This is
>>> > effectively the information I look at when parsing GIR files for my TS
>>> > definitions...
>>> >
>>> > http://devdocs.baznga.org/girepository20~2.0_api/girepositor
>>> y.functioninfoflags#default-is_constructor
>>> >
>>> > On 8 November 2017 at 12:37, Andrea Giammarchi <
>>> andrea.giammar...@gmail.com>
>>> > wrote:
>>> >>
>>> >> the documentation doesn't say if I can instantiate those classes, or
>>> does
>>> >> it?
>>> >>
>>> >> if I could understand via GIRepository.Repository if a class could be
>>> >> extended/instantiated I could improve cgjs-about to show that right
>>> away.
>>> >>
>>> >> So far I thought that `objects` where all usable as `new Class` but
>>> that's
>>> >> not the case at all. Maybe I should check for an `is_abstract_object`
>>> ?
>>> >>
>>> >> Not sure there is anything like that though.
>>> >>
>>> >> Thanks.
>>> >>
>>> >>
>>> >> On Wed, Nov 8, 2017 at 3:41 AM, <philip.chime...@gmail.com> wrote:
>>> >>>
>>> >>> This comes a bit too late to help you, sorry, but the C docs will
>>> tell
>>> >>> you which classes extend a base class, e.g. for GInputStream
>>> >>> (Gio.InputStream in GJS):
>>> >>> https://developer.gnome.org/gio/stable/GInputStream.html#GIn
>>> putStream.object-hierarchy
>>> >>>
>>> >>> On Tue, Nov 7, 2017 at 2:36 PM Andrea Giammarchi
>>> >>> <andrea.giammar...@gmail.com> wrote:
>>> >>>>
>>> >>>> so, just FYI ...
>>> >>>>
>>> >>>> Buffered, Converter, Data, File, Memory and Unix InputStream are
>>> >>>> available.
>>> >>>>
>>> >>>> Buffered, Converter, and Data need a base_stream to work ... not a
>>> >>>> primitive.
>>> >>>>
>>> >>>> File and Unix need attributes or fd pointers
>>> >>>>
>>> >>>> The Memory seems to be the "base/primitive" I was looking for
>>> together
>>> >>>> with its MemoryOutputStream counterpart.
>>> >>>>
>>> >>>> Regards
>>> >>>>
>>> >>>>
>>> >>>>
>>> >>>> On Tue, Nov 7, 2017 at 7:28 PM, Andrea Giammarchi
>>> >>>> <andrea.giammar...@gmail.com> wrote:
>>> >>>>>
>>> >>>>> oh gosh, my own utility ... that is less useful in pretty print for
>>> >>>>> these kind of things .... although the list has many non-usable
>>> streams but
>>> >>>>> now I want to know which one is usable.
>>> >>>>>
>>> >>>>> P.S. for namespaces you don't' need gi prefix ... cgjs-about Gio
>>> would
>>> >>>>> do the same ;-)
>>> >>>>>
>>> >>>>> Thanks again
>>> >>>>>
>>> >>>>> On Tue, Nov 7, 2017 at 7:09 PM, Sam Jansen <
>>> sam.jan...@starleaf.com>
>>> >>>>> wrote:
>>> >>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> On 7 November 2017 at 21:55, Andrea Giammarchi
>>> >>>>>> <andrea.giammar...@gmail.com> wrote:
>>> >>>>>>>
>>> >>>>>>> this is gold, thank you!!!
>>> >>>>>>>
>>> >>>>>>> do you know if MemoryInputStream is the only one usable? is
>>> there any
>>> >>>>>>> list of available GJS streams one can use? I think memory is
>>> just fine
>>> >>>>>>> though, thanks again a lot!
>>> >>>>>>>
>>> >>>>>>
>>> >>>>>> I just took an educated guess: I figured anything useful would
>>> extend
>>> >>>>>> Gio.InputStream. I then just browsed through the docs, looking
>>> for anything
>>> >>>>>> with "InputStream" in their name, which isn't so many...
>>> >>>>>>
>>> >>>>>> This is a good place to start perhaps:
>>> >>>>>>
>>> >>>>>> $ cgjs-about gi.Gio --json | grep InputStream | grep -Ev
>>> >>>>>> "Class|Private"
>>> >>>>>>
>>> >>>>>>
>>> >>>>>> It would be a neat extension to cgjs-about if one could have it
>>> list
>>> >>>>>> the classes known to implement an interface or extend from a
>>> class...
>>> >>>>>>
>>> >>>>>>>
>>> >>>>>>> On Tue, Nov 7, 2017 at 6:46 PM, Sam Jansen <
>>> sam.jan...@starleaf.com>
>>> >>>>>>> wrote:
>>> >>>>>>>>
>>> >>>>>>>> Hi Andrea,
>>> >>>>>>>>
>>> >>>>>>>> I've come up with something that... almost does what you're
>>> looking
>>> >>>>>>>> at here. Perhaps it's useful as a guide of what one can do with
>>> the Gio
>>> >>>>>>>> interface.
>>> >>>>>>>>
>>> >>>>>>>> I think you may hit some awkward problems with modelling
>>> Node-style
>>> >>>>>>>> streams with GLib ones. But perhaps it is possible and this
>>> helps. I don't
>>> >>>>>>>> really know the Node stream semantics so I have assumed various
>>> things in my
>>> >>>>>>>> Readable implementation as you'll see... Note that
>>> MemoryInputStream really
>>> >>>>>>>> is just a byte stream; so there is no guarantee you'll receive
>>> the exact
>>> >>>>>>>> block of bytes that was written -- for example, when I run this
>>> I get a
>>> >>>>>>>> first chunk of "12", followed by "3", "4", etc.
>>> >>>>>>>>
>>> >>>>>>>>
>>> >>>>>>>> let Gio = imports.gi.Gio;
>>> >>>>>>>> let byteArray = imports.byteArray;
>>> >>>>>>>> let mainloop = imports.mainloop;
>>> >>>>>>>>
>>> >>>>>>>> class Readable {
>>> >>>>>>>>   constructor() {
>>> >>>>>>>>     this._mio = Gio.MemoryInputStream.new();
>>> >>>>>>>>     this._callbacks = {};
>>> >>>>>>>>     this._startNext();
>>> >>>>>>>>   }
>>> >>>>>>>>
>>> >>>>>>>>   _startNext() {
>>> >>>>>>>>     // Enqueue an async read; and re-enqueue when it finishes,
>>> so
>>> >>>>>>>> we're
>>> >>>>>>>>     // always waiting for data...
>>> >>>>>>>>     this._mio.read_bytes_async(4096, 1, null, (source, res) =>
>>> {
>>> >>>>>>>> this._onData(this._mio.read_bytes_finish(res));
>>> >>>>>>>>         this._startNext();
>>> >>>>>>>> });
>>> >>>>>>>>   }
>>> >>>>>>>>
>>> >>>>>>>>   _onData(bytes) {
>>> >>>>>>>>     if (this._callbacks['data']) {
>>> >>>>>>>>       let ba = byteArray.fromGBytes(bytes);
>>> >>>>>>>>       this._callbacks['data'](ba);
>>> >>>>>>>>       this._read();
>>> >>>>>>>>     }
>>> >>>>>>>>   }
>>> >>>>>>>>
>>> >>>>>>>>   push(bytes) {
>>> >>>>>>>>     if (bytes == null) {
>>> >>>>>>>>       mainloop.quit('main');
>>> >>>>>>>>       return;
>>> >>>>>>>>     }
>>> >>>>>>>>     this._mio.add_bytes(bytes);
>>> >>>>>>>>   }
>>> >>>>>>>>
>>> >>>>>>>>   on(name, callback) {
>>> >>>>>>>>     this._callbacks[name] = callback;
>>> >>>>>>>>     if (name === 'data') {
>>> >>>>>>>>       this._read();
>>> >>>>>>>>     }
>>> >>>>>>>>   }
>>> >>>>>>>> }
>>> >>>>>>>>
>>> >>>>>>>> class Counter extends Readable {
>>> >>>>>>>>   constructor(opt) {
>>> >>>>>>>>     super(opt);
>>> >>>>>>>>     this._max = 1000;
>>> >>>>>>>>     this._index = 1;
>>> >>>>>>>>   }
>>> >>>>>>>>
>>> >>>>>>>>   _read() {
>>> >>>>>>>>     const i = this._index++;
>>> >>>>>>>>     if (i > this._max)
>>> >>>>>>>>       this.push(null);
>>> >>>>>>>>     else {
>>> >>>>>>>>       const str = '' + i;
>>> >>>>>>>>       const buf = byteArray.fromString(str); // Buffer.from(str,
>>> >>>>>>>> 'ascii');
>>> >>>>>>>>       this.push(buf);
>>> >>>>>>>>     }
>>> >>>>>>>>   }
>>> >>>>>>>> }
>>> >>>>>>>>
>>> >>>>>>>> (new Counter).on('data', (str) => {
>>> >>>>>>>>     print("data", str.toString());
>>> >>>>>>>> });
>>> >>>>>>>>
>>> >>>>>>>> mainloop.run('main');
>>> >>>>>>>>
>>> >>>>>>>>
>>> >>>>>>>> On 7 November 2017 at 10:08, Andrea Giammarchi
>>> >>>>>>>> <andrea.giammar...@gmail.com> wrote:
>>> >>>>>>>>>
>>> >>>>>>>>> I am trying to implement a stream module and apparently I have
>>> >>>>>>>>> everything I need but practically I'm unable to use streams.
>>> >>>>>>>>>
>>> >>>>>>>>> If I instantiate a `new Gio.InputStream` I have the following
>>> >>>>>>>>> error:
>>> >>>>>>>>> cannot create instance of abstract (non-instantiatable) type
>>> >>>>>>>>> 'GInputStream'
>>> >>>>>>>>>
>>> >>>>>>>>> I cannot even extend it ... so I've though "ok, maybe it's
>>> like an
>>> >>>>>>>>> interface, I implement it and that's it"
>>> >>>>>>>>>
>>> >>>>>>>>> But then a JS class wouldn't work as base_stream for a
>>> >>>>>>>>> Gio.BufferedInputStream, and if I extend the JS class to be a
>>> GObject.Object
>>> >>>>>>>>> then:
>>> >>>>>>>>> Gjs-WARNING **: JS ERROR: TypeError: Object is of type
>>> >>>>>>>>> GObject.Object - cannot convert to GInputStream
>>> >>>>>>>>>
>>> >>>>>>>>> where GInputStream is the one I cannot use in the first place.
>>> >>>>>>>>>
>>> >>>>>>>>> I've reached full circle then so ... I wonder if anyone has any
>>> >>>>>>>>> idea how to use/create/extend streams in GJS (not talking
>>> about file streams
>>> >>>>>>>>> but streams in general) or if it's even possible.
>>> >>>>>>>>>
>>> >>>>>>>>> In node, as example, I could do this and it will work:
>>> >>>>>>>>>
>>> >>>>>>>>> ```js
>>> >>>>>>>>>
>>> >>>>>>>>> const { Readable } = require('stream');
>>> >>>>>>>>>
>>> >>>>>>>>> class Counter extends Readable {
>>> >>>>>>>>> constructor(opt) {
>>> >>>>>>>>> super(opt);
>>> >>>>>>>>> this._max = 1000;
>>> >>>>>>>>> this._index = 1;
>>> >>>>>>>>> }
>>> >>>>>>>>>
>>> >>>>>>>>> _read() {
>>> >>>>>>>>> const i = this._index++;
>>> >>>>>>>>> if (i > this._max)
>>> >>>>>>>>> this.push(null);
>>> >>>>>>>>> else {
>>> >>>>>>>>> const str = '' + i;
>>> >>>>>>>>> const buf = Buffer.from(str, 'ascii');
>>> >>>>>>>>> this.push(buf);
>>> >>>>>>>>> }
>>> >>>>>>>>> }
>>> >>>>>>>>> }
>>> >>>>>>>>>
>>> >>>>>>>>> (new Counter).on('data', console.log);
>>> >>>>>>>>>
>>> >>>>>>>>> ```
>>> >>>>>>>>>
>>> >>>>>>>>> _______________________________________________
>>> >>>>>>>>> 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
>>> >>
>>> >>
>>> >
>>> >
>>> > _______________________________________________
>>> > javascript-list mailing list
>>> > javascript-list@gnome.org
>>> > https://mail.gnome.org/mailman/listinfo/javascript-list
>>> >
>>>
>>>
>>>
>>> --
>>> https://www.bassi.io
>>> [@] ebassi [@gmail.com]
>>>
>>
>>
>> _______________________________________________
>> 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
>
>
_______________________________________________
javascript-list mailing list
javascript-list@gnome.org
https://mail.gnome.org/mailman/listinfo/javascript-list

Reply via email to