Greetings.
I would like to finish Phobos runnable examples case. But I need
help in picking one strategy for implementation details.
Current state of things is rather bad.
Apart from the fact that lots of examples are not valid examples
per se
(first example in std.algorithm:
---
int[] a = ...;
static bool greater(int a, int b)
---
)
lots of examples have got outdated assertions in the unittest
blocks etc.
Requesting user to edit code first, add main(){} block or fix
invalid D code and then run example itself is unacceptable.
Snippets at main dlang.org website work well because all examples
are valid D code which compiles out of box. While phobos examples
are just taken out of context.
The options I've gathered so far:
1) Make all examples valid D code by hand. Make JavaScript assume
that all code examples in Phobos documentation should be wrapped
in void main() {} blocks. Add default set of includes + the
module we are on. Explicitly mark examples that are full programs
(ie. std.concurrency ones) and don't append void main() {} blocks
to them. Code should be already wrapped in main(){} block after
clicking Edit button. Append all special cases where default
stdin and stdargs are needed like it is done on main webpage (
http://dlang.org/js/run.js and
http://dlang.org/js/run-main-website.js )
2) Make JavaScript assume that all code examples in Phobos
documentation should be wrapped in void main() {} blocks. Create
subpage with wiki-like database where special cases would be
added and script could fetch data from it.
For example adding default stdin and stdargs arguments and
special includes.
3) The old macro approach, with wrapping examples in $(D_RUN)
macro. Probably won't scale now due to "unittest is example"
change in DDOC generation
4) Let's just forget about phobos having runnable examples. On
the other hand I think there aren't much Programming Languages in
which stdlib documentation has runnable examples. For example Go
website has dedicated subpage with couple Examples that can be
edited and then compiled but that's all. Nothing more. Something
like main dlang.org website now.
Sorry for any English related quirks :p
Looking forward for your opinions on this and any better ideas
you may have!
Regards,
Damian Ziemba