Commit Graph

322 Commits

Author SHA1 Message Date
Felipe Magno de Almeida 9470252450 gendoc-mono: Add documentation generation for C# language 2018-04-08 11:25:25 -03:00
Davide Andreoli 97289953ec Pyolian: fix __repr__ for Documentation 2018-03-17 12:06:34 +01:00
Davide Andreoli 2cb896dfab Pyolian doc generator: update wrt name API changes
Argh, this has been difficult... hopefully I have done
this right
2018-03-17 11:37:13 +01:00
Davide Andreoli 35316db2f0 Pyolian: let ctypes automatically convert types
Not a big improvement and not so much automatically...
but for sure a bit less to type :)
2018-03-17 10:49:42 +01:00
Davide Andreoli ef3e487b0c Pyolian: use tuple instead of list in declarations
This is a bit more correct and (maybe) a bit more faster
2018-03-17 10:31:33 +01:00
Davide Andreoli 6ef5f30a85 Pyolian: new API eolian_unit_state_get 2018-03-17 10:19:28 +01:00
Davide Andreoli 0a00e4cca1 Pyolian: new API eolian_object_unit_get
Also implemented __repr__ for Unit and State
2018-03-17 10:01:24 +01:00
Davide Andreoli 1ab22e4f00 Pyolian: fix tests wrt name/short_name/full_name API changes 2018-03-17 09:46:17 +01:00
Davide Andreoli 81d15b7cd8 Pyolian: add support EOLIAN_SO_DIR env var
Thanks goes to @lauromoura for proposing this in D5840
2018-03-16 20:00:49 +01:00
Daniel Kolesa bf1e3a702f eolian: event/function_get_by_name -> by_name_get 2018-03-16 14:26:15 +01:00
Daniel Kolesa 4fd0d5b436 pyolian: remove unneeded bindings in eolian_state 2018-03-14 17:08:36 +01:00
Daniel Kolesa 2d0a25c995 eolian: refactor doc ref resolution API 2018-03-14 16:51:11 +01:00
Daniel Kolesa 3840aa453c pyolian: update name APIs 2018-03-12 15:48:25 +01:00
Daniel Kolesa 7d6e2561a4 elua: update eolian name APIs 2018-03-12 14:27:20 +01:00
Davide Andreoli c1056d0c62 Pyolian generator: adjust to follow eolian changes 2018-03-11 17:45:14 +01:00
Davide Andreoli 2355df0e4f Pyolian: remove the useless Object.type binding
This is useless in py as Objects are never returned
directly, you always get the correct subtype (Class,
Variable, etc..). It was also clashing with Class.type
2018-03-11 15:52:52 +01:00
Davide Andreoli 752a6b1070 Pyolian: add tests for Eolian_Object
Two of the new tests are failing, the problem is that now
we have name clashes between Eolian_Object and Eolian_Class (at least)
For the moment I spotted:
 - Object.name clash with Class.name
 - Object.type clash with Class.type

Also fixed a typo in eolian_lib.py spotted by the new tests,
and removed the old tests for Declaration.
2018-03-11 15:24:59 +01:00
Davide Andreoli 6f6557e2d0 Pyolian: build the correct type from generic Object
This way all the generic Eolian_Object types are automatically
converted to the correct types (Class, Variable, etc...)
2018-03-11 14:28:51 +01:00
Daniel Kolesa 342974977f eolian: resolve to Eolian_Objects instead of voids 2018-03-09 15:25:36 +01:00
Daniel Kolesa c7fd43ad4e eolian: return Eolian_Object_Type from ref resolver
This needs only one enum and allows for better interop.
2018-03-09 15:25:36 +01:00
Daniel Kolesa bee3114c2c pyolian: add support for object retrieval 2018-03-08 23:07:01 +01:00
Daniel Kolesa f24fa691e7 pyolian: wipe out declaration api 2018-03-08 23:01:01 +01:00
Daniel Kolesa 10448fec97 pyolian: add Eolian_Object APIs and remove obsolete file_get ones 2018-03-08 22:48:01 +01:00
Daniel Kolesa 482c5d1ba2 eolian: get rid of old APIs for typedecl retrieval 2018-03-07 13:53:08 +01:00
Daniel Kolesa 93dad9d6bb elua: objectify unit and redo class retrieval 2018-03-02 14:04:41 +01:00
Daniel Kolesa 5701ce22a3 elua: remove old dir scan/parse APIs 2018-03-02 13:43:16 +01:00
Davide Andreoli 939cb26bd9 Pyolian: new APIs for typedecl lookups 2018-03-01 17:08:56 +01:00
Davide Andreoli 20f7d6f35f Pyolian: new variable lookup APIs
with adjusted tests
2018-03-01 16:35:22 +01:00
Davide Andreoli 0a51dbf2ff Pyolian: new APIs for class retrieval
Also updated tests, generator and gendoc accordly
2018-03-01 15:51:59 +01:00
Davide Andreoli d176a37f32 Pyolian: add APIs to retrieve units from a state
Also fixed a declaration error from previous commit
2018-02-28 14:31:59 +01:00
Davide Andreoli b7de65272f Pyolian: add API to get file name of a unit 2018-02-28 14:31:59 +01:00
Davide Andreoli 686aae5572 Pyolian: add API to get children of a unit 2018-02-28 14:31:59 +01:00
Davide Andreoli 9a90343df2 Pyolian: reorder the header file
No functional changes, just reordered the declarations
2018-02-28 14:31:59 +01:00
Davide Andreoli cb431b2b0e Pyolian: rename Eolian to Eolian_State 2018-02-27 19:14:38 +01:00
Davide Andreoli 191ca9096e Pyolian: eolian_file_parse -> eolian_state_file_parse 2018-02-27 19:14:38 +01:00
Davide Andreoli 2e43fd3f1c Pyolian: rename path/filename retrieval APIs 2018-02-27 19:14:38 +01:00
Davide Andreoli e90c551d74 Pyolian: rename all_files_parse functions 2018-02-27 19:14:38 +01:00
Davide Andreoli 541f04aa79 Pyolian: new APIs for directory scanning
eolian_directory_scan => eolian_state_directory_add
eolian_system_directory_scan => eolian_state_system_directory_add
2018-02-27 19:14:38 +01:00
Daniel Kolesa 6a284e48c9 eolian: eolian_* -> eolian_state_*, Eolian -> Eolian_State 2018-02-27 16:12:35 +01:00
Davide Andreoli 0af53f4bc6 Pyolian: improve a bit the namespace generation
I still think that namespaces should be directly exposed by eolian.
Currently pyolian provide a namespace implementation but it's
hard to get it right, and it should be really shared between
all eolian users.
2018-02-18 09:35:53 +01:00
Davide Andreoli 7255954ccc pyolian: improve a bit the 2 example templates 2018-01-25 22:51:42 +01:00
Davide Andreoli 94b6ad8448 pyolian: improve the doc generation 2018-01-24 22:26:40 +01:00
Davide Andreoli 8bbc16bf7e pyolian test: just rename the main eolian state 2018-01-23 21:32:28 +01:00
Davide Andreoli 9160bfe901 Pyolian: fix and tests for recent changes
q66: please leave the pyolian updating work to me,
it's harder for me to fix wrong stuff instead of just
implement myself ;)
2018-01-16 20:53:20 +01:00
Daniel Kolesa d47610a732 eolian: do not require unit when stringifying types
As it is no longer necessary to pass unit when evaluating exprs,
it is not necessary to pass it here either. Convert all the APIs
to the new style and update all instances in our tree.
2018-01-16 16:39:05 +01:00
Daniel Kolesa dd2e579fec eolian: do not require unit for expr eval APIs
The necessary information is now stored directly in the expr
during database validation.

Also enable expr validation for params.
2018-01-16 16:37:52 +01:00
Davide Andreoli 0179d34f0f Pyolian: add tests for recently added funcs 2018-01-14 12:05:33 +01:00
Andy Williams 8a71ac57ab docs: Show when classes really are top level EFL namespace 2018-01-14 00:05:59 +00:00
Daniel Kolesa c6436337a4 eolian: aliased_base_get funcs don't need unit 2018-01-12 18:05:13 +01:00
Daniel Kolesa 19c16b671e eolian: type_typedecl_get doesn't need a unit 2018-01-12 18:05:13 +01:00
Daniel Kolesa 707ed05d58 eolian: do not require unit for type_class_get 2018-01-12 18:05:13 +01:00
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