Commit Graph

271 Commits

Author SHA1 Message Date
Davide Andreoli f003c6702d Pyolian: cache classes and properties
This give an overrall speed up of aroud 50% in the full doc generation.
2018-01-05 12:48:28 +01:00
Davide Andreoli 6421ea6d3c doc generator: show params and return type for functions 2018-01-04 11:06:06 +01:00
Davide Andreoli 2f69ba27d3 Put in a new (experimental) doc generator built only by templates
This is (in my mind) meant to replace the current elua generator.

Currently the generated output is pratically identical to the elua
one, just some little difference here and there, some for thecnical
reasons and some just for my preference.

I consider this work just a starting point, extending the
templates we can now easily improve our docs. Whithout the need
to touch a single line of code.

Really I think this is a great improvements, and this are some
numbers to prove it:

Current elua implementation:
4185 lines of code in 7 lua files
generation time: ~ 7 seconds

New generator:
115 lines of python + 513 lines of templates
generation time: ~ 8 seconds (can be optimizd ALOT)

To generate the full Efl.* docs just run "./gendoc.py -v" in this folder.

...will wait for reviews (in particular from @andy and @q66)
2018-01-03 16:54:51 +01:00
Davide Andreoli ee53d64dcb Pyolian: quite complete documentation for usage and template syntax
The same content is available in phab wiki at:
https://phab.enlightenment.org/w/pyolian/
2018-01-03 14:00:33 +01:00
Davide Andreoli a2b24d0948 Pyolian: fix segfault on shutdown
also improve abit all_namespaces performance by using a set (hashable)
2018-01-02 21:52:57 +01:00
Davide Andreoli b9ed84f4ed Pyolian: implement an utility class: Namspace
Update tests and generator to use this new feature
2018-01-02 15:44:43 +01:00
Davide Andreoli 3388077bc3 Pyolian: implemented doc tokenizer 2018-01-02 13:58:08 +01:00
Davide Andreoli e7a26af330 Pyolian: better equality test, new hierarchy prop and some tests 2018-01-01 08:37:13 +01:00
Davide Andreoli dd97383887 Pyolian: a fix and some new utils 2018-01-01 08:37:13 +01:00
Davide Andreoli 77fba4119b Pyolian generator: also make the classes visible in the template ctx 2018-01-01 08:37:13 +01:00
Davide Andreoli b5e3853e9d pyolian: make the library and the generator importable from another folder 2018-01-01 08:37:13 +01:00
Davide Andreoli 15c7bbf5fa Pyolian template-based generator.
This is a really powerfull tool that can be used to generate anything eolian
releted  just providing a template file. You can then render the template
with the wanted scope (class, namespace, enum, etc)

For example give a try at this (from the src/srcipts/pyolian folder):
./generator.py test_gen_class.template --cls Efl.Loop.Timer

or ./generator.py -h for the full help

Next step: maybe generate the new efl API doc using this tool?
@andy I think this will make your life much easier :)
2017-12-28 16:10:04 +01:00
Davide Andreoli 455f241463 New python bindings for eolian
This are manually written ctype bindings for eolian, that means they
run on the standard python library (nothing to install) and can run
without any build step (in fact ctypes just open the so/dll file at runtime)

Next step will be (soon) a template based generator for eolian that will
be a lot of fun :)
2017-12-28 13:53:54 +01:00
Andy Williams 46fbbef13a docs: Group our API landing page by namespace 2017-12-22 17:30:52 +00:00
Andy Williams 99f9789902 docs: Output correct signature for class method first parameter 2017-12-20 15:00:18 +00:00
Andy Williams 4202dca002 docs: Note class scope for method listings 2017-12-20 14:33:54 +00:00
Andy Williams 2a0e077416 docs: Correct sig for eolian lua calls 2017-12-20 14:31:56 +00:00
Daniel Kolesa 18e18ca74c eolian: remove remaining global state (+ modify APIs accordingly) 2017-12-15 17:11:11 +01:00
Daniel Kolesa 011bbfdc93 Revert "docs: remove resolved FIXMEs"
This reverts commit b8b183bfcb.

The FIXMEs are not resolved, just worked around.
2017-12-14 15:53:27 +01:00
Andy Williams ed307bda40 docs: Move inherited items to tables
Lots of refactoring required to make sense of the generator
2017-12-13 18:10:57 +00:00
Andy Williams f8889239b6 docs: Sort the data before rendering
Better on memory and saves on intermediate buffers
2017-12-13 18:10:57 +00:00
Andy Williams e747e1ec2a docs: Don't display any inheritance info if we do not inherit 2017-12-13 10:08:21 +00:00
Andy Williams d5d130085a docs: Remove the somewhat unreadable graphs from web output 2017-12-13 10:08:21 +00:00
Andy Williams b3f575fd43 docs: Fix description position for property pages 2017-12-12 17:52:46 +00:00
Andy Williams 92c9ec33e7 docs: Save a few kB by stripping spaces from newlines 2017-12-12 16:54:15 +00:00
Andy Williams 86b37828d9 docs: Group our inherited members and events by class
That's the closest class that extends, not the originating class.
Also realised that "inherited from" is not needed this deep,
so keep it succinct.
2017-12-12 16:35:20 +00:00
Andy Williams 33a4050048 docs: Keep description at the top and code snippets at the bottom 2017-12-12 16:35:20 +00:00
Andy Williams 7fa99824a0 docs: Reverse the described relationships in our API docs site
This means that "<ns><method> [Overridden from <parentns>]" is
preferred to "<parentns><method> [Overridden in <ns>]".
This also means that "Overriden here" becomes
"Overridden from <parentns>"
2017-12-12 16:35:20 +00:00
Andy Williams dc13197895 docs: Strip duplicate inherited events 2017-12-11 22:30:25 +00:00
Andy Williams 5ce17ae60a docs: We no longer have class type in URLs 2017-12-11 17:25:50 +00:00
Andy Williams 87900f49b0 docs: Include Eina in the allowable Unified API namespaces 2017-12-11 17:25:28 +00:00
Andy Williams 6757fd504e docs: Remove the details for inherited members and events
Also fix the headings so "Members" and "Events" is always visible
as it makes for a better Table of Contents.

Layout could be improved, just playing with the minimal
information presentation for now.
2017-12-11 16:50:47 +00:00
Andy Williams 5b6d3bb538 docs: Compact and lay out the header of API docs
Add an inheritance summary (following the primary class heirarchy).
Move the full heirarchy to a folded section.
Put the description at the top where it belongs.
2017-12-11 16:50:47 +00:00
Andy Williams 0c744c6c1c docs: Filter the public API to just Efl.* 2017-12-11 16:50:47 +00:00
Andy Williams b8b183bfcb docs: remove resolved FIXMEs 2017-12-08 18:23:06 +00:00
Andy Williams 42368d16e8 docs: Complete removal of object type from API URLs
We still have the subtypes for now, that is less
likely to cause user confusion as they are unlikely to browse
method names in the address bar.
2017-12-08 18:16:51 +00:00
Andy Williams 3cccf56795 docs: Strip class type from URLs, avoid user confusion 2017-12-08 16:39:05 +00:00
Andy Williams da29942989 docs: Don't confuse with dokuwiki user namespace 2017-12-08 16:39:05 +00:00
Andy Williams 8093546521 docs: Use more meaningful titles for when we only inherit 2017-12-08 16:39:05 +00:00
Daniel Kolesa 324e3dedea docs: always pass eos unit in gendoc 2017-12-08 13:18:38 +01:00
Andy Williams dc821546ad gendoc: Allow script to be run from other directories 2017-12-08 11:00:50 +00:00
Andy Williams 6cdcaf846b gendoc: Update to latest eolian syntax 2017-12-08 11:00:50 +00:00
Daniel Kolesa 8a1f93f698 eolian: pass state where necessary
This modifies the API so that global state removal is made
possible. It's still used internally for now but externally
the state is contained.
2017-12-05 16:41:42 +01:00
Daniel Kolesa 40214e16c7 elua: correctly wrap gettext funcs
Now, we cannot directly register funcs defined by a different
signature than the lua standard (int (*)(lua_State *)) so we
have to correctly wrap those with proper conversions etc.
2017-11-24 10:55:46 +01:00
Andy Williams 93995b0093 docgen: Correct title plugin usage 2017-11-22 09:59:52 +00:00
Daniel Kolesa a5d77546a8 docgen: better space out includes 2017-11-02 14:36:00 +01:00
Daniel Kolesa e46d6d41d2 docgen: fix generation and generate notes correctly 2017-11-02 14:29:20 +01:00
Andy Williams a7bb770e69 Generate docs into /develop/api/*
Also move root doc to start.txt for a better entry point
2017-10-25 18:17:25 +01:00
Daniel Kolesa 4f8a9b50f4 eolian: make inherits_get return a list of classes, not strings
Most of the time you need to retrieve the class from the string
anyway, so remove this relic of old Eolian and gain some small
performance benefits and extra convenience.

Subtly breaks API but everything should be updated.
2017-10-25 16:25:41 +02:00
Andy Williams 549f167002 Docs location moved 2017-10-21 16:39:07 +01:00
Daniel Kolesa c48cde4aed docs: move write_include out of the writer backend
This is a large chunk shared between backends.
2017-10-20 14:29:04 +02:00
Daniel Kolesa dbf48bf9f5 docs: prepare for markdown gendoc backend 2017-10-20 14:17:10 +02:00
Daniel Kolesa 1577c576e6 eolian: remove static_array and terminated_array
These types are of questionable value and the API was not entirely
thought out - remove for now, and if a legitimate use is found
later, they may be readded (with a better API), but typically it
seems best to redesign the bad APIs around safe containers...
2017-09-22 18:01:15 +02:00
Daniel Kolesa 4bae2a7385 eolian: merge REGULAR and COMPLEX types 2017-09-22 17:46:02 +02:00
Daniel Kolesa 60d6aeeb2d elua: update for new eolian ownership system 2017-09-15 17:52:38 +02:00
Daniel Kolesa e55ab81835 eolian: always implicitly validate database and remove its API 2017-09-13 23:58:47 +02:00
Daniel Kolesa 8b5d555cf5 elua: update eolian bindings and make docgen work again 2017-08-30 19:46:41 +02:00
Daniel Kolesa 10fd3c32e8 eolian: remove c_only
Unused and of questionable value.
2017-08-30 19:46:41 +02:00
Daniel Kolesa e38418dd9d elua: update eolian bindings with c type serialization change 2017-08-10 12:19:59 +02:00
Daniel Kolesa a72cac2223 docgen: stub out units so the generator works again 2017-05-30 17:15:54 +02:00
Daniel Kolesa bf2ac6c937 elua: update for unit api usage 2017-05-30 17:15:53 +02:00
Daniel Kolesa 7da0549970 eolian: make eolian_file_parse return unit 2017-05-30 17:15:53 +02:00
Daniel Kolesa bf7b3e5dfc docgen: include C usage snippet on event pages 2017-03-07 17:15:24 +01:00
Daniel Kolesa 2b02dd56fd docgen: better event C info, show private/protected in listing 2017-03-07 16:42:22 +01:00
Daniel Kolesa 3d3ea8dd92 docgen: run types/vars together with classes in parallel script 2017-03-03 17:51:50 +01:00
Daniel Kolesa 0a252c4463 docgen: add a simple script that does doc generation in parallel 2017-03-03 17:46:40 +01:00
Daniel Kolesa bfeddb8e09 docgen: only parse the necessary class when generating only one 2017-03-03 17:34:40 +01:00
Daniel Kolesa 7ef2e4dfd4 docgen: do not generate foreign classes' functions and events
Only generate the classes' own funcs/events (and overridden). Let other
classes generate their own stuff. This prevents some files from being
generated multiple times, which more than halves generation time.
2017-03-03 16:36:47 +01:00
Daniel Kolesa 81c84999fd docgen: add a pass to generate individual classes 2017-03-03 16:35:03 +01:00
Daniel Kolesa bc7561d8d5 docgen: add clist pass to list all classes 2017-03-03 16:18:21 +01:00
Daniel Kolesa ea436e49d1 docgen: initial support for multipass gen 2017-03-03 16:16:05 +01:00
Daniel Kolesa 79f10fc0a0 docgen: move stats and keyref build into later stage
That way we can multipass the doc build without worrying about stats.
2017-03-03 15:53:59 +01:00
Daniel Kolesa 3f5e1b4e1e docgen: add info about protected/private methods/properties in listing 2017-03-02 16:34:22 +01:00
Daniel Kolesa 4f540c1a7c docgen: fix broken inheritance graphs 2017-02-24 17:17:52 +01:00
Daniel Kolesa 4f9c3e0679 docgen: more useful event listing 2017-02-24 17:12:28 +01:00
Daniel Kolesa 9124f1f8c6 docgen: disregard override info for displaying property get/set 2017-02-24 16:24:36 +01:00
Daniel Kolesa 5cf08ef1a9 docgen: minor speed optimizations and cleanups 2017-02-24 16:10:00 +01:00
Daniel Kolesa 3f92a51b9a docgen: merge overridden and other categories for methods/properties 2017-02-24 15:47:25 +01:00
Daniel Kolesa 4405d1fc7e docgen: initial support for inherited events listing 2017-02-23 18:17:22 +01:00
Daniel Kolesa dcac79d5b6 docgen: add "Others" section with all remaining callables to class pages 2017-02-23 17:09:32 +01:00
Daniel Kolesa 96c1c30db4 docgen: merge methods and properties in listing 2017-02-23 17:09:32 +01:00
Daniel Kolesa 8e65011a4b docgen: properly handle overridden property docs 2017-02-23 17:09:32 +01:00
Daniel Kolesa 7249dd94ab docgen: add a way to get numerical id of a function 2017-02-22 18:29:18 +01:00
Daniel Kolesa 967af33da2 docgen: more useful function listings in class pages
Now there are C signatures visible.
2017-02-22 18:29:18 +01:00
Daniel Kolesa d8a0daaf58 docgen: inherit overridden method/property brief descriptions on class pages 2017-02-21 16:48:52 +01:00
Daniel Kolesa cbe7859d1c docgen: add -p to print what exactly is being generated currently 2017-02-16 17:29:23 +01:00
Daniel Kolesa f297454ac0 docgen: make sure all class retrievals are cached 2017-02-16 17:20:00 +01:00
Daniel Kolesa 0dfb6516a1 docgen: cache function instantiations 2017-02-16 17:12:43 +01:00
Daniel Kolesa b9090529e5 docgen: cache class retrievals for performance 2017-02-16 16:06:56 +01:00
Daniel Kolesa 9540e96107 docs: avoid possible duplicates when figuring out all impls of a func 2017-02-09 16:04:59 +01:00
Daniel Kolesa 5e50c9d52b docs: list all existing implements of a method/property 2017-02-09 15:58:52 +01:00
Daniel Kolesa 051f277be2 docs: reverse inheritance hierarchy api in doctree 2017-02-09 15:58:52 +01:00
Daniel Kolesa 995b1e480c docgen: link to the method an overriden one overrides 2017-01-26 17:52:00 +01:00
Daniel Kolesa ff8688e169 docgen: autodocument inherited methods/properties 2017-01-26 17:52:00 +01:00
Daniel Kolesa 3090e9c3ae docs: WIP overridden method/property documentation support in docgen 2017-01-20 17:20:28 +01:00
Daniel Kolesa c2b6fbccbc docs: use new implement based doc API 2017-01-20 15:32:00 +01:00
Daniel Kolesa 8207fd9cc5 docs: remove some duplicate doctree methods 2017-01-20 15:15:50 +01:00
Daniel Kolesa ab7b6815e0 docs: add implement to doctree 2017-01-20 15:10:23 +01:00
Daniel Kolesa 95181f2d36 eolian: move base function doc API into implements
This allows us to unify retrieval of docs for both regular and
overridden funcs without having two separate APIs. It's currently
missing validation and docgen is still not adjusted properly for
it either, but at least there's this. Enables retrieval of docs
for overridden funcs by default as well.
2017-01-19 15:09:07 +01:00
Daniel Kolesa 35c5e89269 eolian: remove/add APIs and clean up implements system
As there is no need to have separate is_auto, is_empty and
is_pure_virtual for functions and implements (each function has
its own base implement by default) I removed the function ones.
Instead, I added a way to retrieve a function's base implement
so that you can instead do the checks on the implement even when
you only have the function.

I also moved base implement build directly into the parser instead
of the database filler. That allows for significant cleanup. I
also removed distinction of implement pointers in Eolian_Function
for get and set as implements now always contain an entire thing
so the pointer was always the same anyway.

Things should still behave more or less the same, but ordering
of generated functions has changed because ordering of implements
has changed.
2017-01-16 15:55:06 +01:00