"Try it now"

spir denis.spir at gmail.com
Thu Apr 14 04:20:23 PDT 2011


On 04/13/2011 10:54 PM, Adam D. Ruppe wrote:
> Andrei wrote:
>> Adam wrote an in-browser evaluator for D programs. These, when
>> presented on the homepage with "hello, world" in them are of
>> limited usefulness.
>> However, a personalized "try it now" button present for _each_
>> artifact in an std module would be of great usefulness.
>
> Indeed. I actually wrote a little javascript thing for that
> new home page that's reusable across other ddoc or similar
> sites. Check it out:
>
> http://arsdnet.net/d-web-site/std_algorithm2.html
>
> Every time it sees a d_code block, the script adds a button.
> Hit the button, and you can edit the code and send it off
> to my completelyexpendable vm to compile and run it.
>
> (It's also on my not-quite-done newsreader so example code in
> newsgroup posts are detected and made editable. That's less perfect
> since it's trying to pick code out of unstructured text, but it
> works reasonably well.)
>
>
> Of course, most examples fail to actually compile... but maybe
> a few replacement rules for the text - automatically insert main()
> if it's not there, import std.all or similar at the top,
> replace "..." with some generic data.
>
> I think we could make the examples work with just a few lines of
> code.
>
>
> Unittests are a different story though, since their code isn't
> in the HTML today. If dmd did make it available though, this same
> script should work on it.

What would be helpful, I guess, to have most examples work as is, is 
systematically:
* put the code in a unitest block
* add "void main () {}"
* "import std.commonimports;"
where commonimports is a to-be-defined module publicly importing common tools 
from std.* (there was a similar discussion about scripting in D):

public import std.stdio        : write, writef, writeln, writefln;
public import std.string       : format, join;
public import std.conv         : to;
...

Denis
-- 
_________________
vita es estrany
spir.wikidot.com



More information about the Digitalmars-d mailing list