Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -1723,6 +1723,12 @@ input.resetButton{display: none}
.d_example_buttons {
text-align: left;
}
.runnable-examples-stdin {
display: none;
}
.runnable-examples-args {
display: none;
}
/* Runnable-examples css -end */

.page-contents
Expand Down
4 changes: 4 additions & 0 deletions dlang.org.ddoc
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,10 @@ _=
RELATIVE_LINK2=$(ALOCAL $1, $+)
_=

RUNNABLE_EXAMPLE=$(DIVC runnable-examples, $1)
RUNNABLE_EXAMPLE_STDIN=<code class="runnable-examples-stdin">$0</code>
RUNNABLE_EXAMPLE_ARGS=<code class="runnable-examples-args">$0</code>

SAMPLESRC=$(SPANC sample_src, $(AHTTPS github.com/dlang/dmd/blob/master/samples/$0, /dmd/samples/d/$0))
SCINI=$(TC pre, scini notranslate, $0)
SCRIPTLOAD=<script type="text/javascript" src="$1"$+></script>
Expand Down
22 changes: 19 additions & 3 deletions index.dd
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ $(DIVC intro, $(DIV, $(DIV,
)
)
$(DIVID your-code-here-default,
$(RUNNABLE_EXAMPLE
$(RUNNABLE_EXAMPLE_STDIN 2.4 plus 2.4 equals 5 for sufficiently large values of 2.)
----
// Round floating point numbers
import std.algorithm, std.conv, std.functional,
Expand All @@ -49,7 +51,17 @@ void main()
}
----
)
)
$(EXTRA_EXAMPLE
$(RUNNABLE_EXAMPLE_STDIN
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune)
----
// Sort lines
import std.stdio, std.array, std.algorithm;
Expand Down Expand Up @@ -225,6 +237,11 @@ void main()

$(P Built-in linear and associative arrays, slices, and ranges make daily
programming simple and pleasant for tasks, both small and large. $(EXAMPLE 3,
$(RUNNABLE_EXAMPLE_STDIN
The D programming language
Modern convenience.
Modeling power.
Native efficiency.)
----
#!/usr/bin/env rdmd
import std.range, std.stdio;
Expand Down Expand Up @@ -418,12 +435,11 @@ Macros:
TAG=<$1>$+</$1>
TAG2=<$1 $2>$3</$1>
D=<span class="d_inlinecode">$0</span>
EXAMPLE=$(TAG2 a, id="a$1-control" class="example-control", )$(TAG2 div, id="a$1" class="example-box", $2)
EXTRA_EXAMPLE=<div class="your-code-here-extra" style="display:none">$0</div>
EXAMPLE=$(TAG2 a, id="a$1-control" class="example-control", )$(TAG2 div, id="a$1" class="example-box", $(RUNNABLE_EXAMPLE $2))
EXTRA_EXAMPLE=<div class="your-code-here-extra" style="display:none">$(RUNNABLE_EXAMPLE $0)</div>
LAYOUT_PREFIX=
LAYOUT_SUFFIX=
$(SCRIPTLOAD $(ROOT_DIR)js/platform-downloads.js, data-latest="$(LATEST)")
$(SCRIPTLOAD $(ROOT_DIR)js/run-main-website.js)
$(SCRIPTLOAD //arsdnet.net/this-week-in-d/twid-latest.js)
LAYOUT_TITLE=
TOUR=$(DIVC item, $(SECTION4 $(LINK2 $1, $(TC i, fa fa-$2 big-icon)$3), $4))
Expand Down
22 changes: 0 additions & 22 deletions js/run-main-website.js

This file was deleted.

260 changes: 21 additions & 239 deletions js/run.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,222 +37,10 @@ void main(string[] args) {
[end here]
------

Go to http://dpaste.dzfl.pl/md5sum, paste your example to Source box and click "Compute".
Copy generated md5sum. Open run-main-website.js file and add following

mainPage["yourMd5Sum"] = ["standard input is has 0 position", "standard args has 1 position"];

Save, reload website and see if standard input and/or standard arguments are displayed in your example form.

TL;DR
All examples are replaced with custom form by default. You need to do additional work only if you wan't
your example to have deafault standard input or default standard arguments.

*/

/**
Taken from http://www.webtoolkit.info/javascript-md5.html
*/
var MD5 = function (string) {

function RotateLeft(lValue, iShiftBits) {
return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
}

function AddUnsigned(lX,lY) {
var lX4,lY4,lX8,lY8,lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
} else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
} else {
return (lResult ^ lX8 ^ lY8);
}
}

function F(x,y,z) { return (x & y) | ((~x) & z); }
function G(x,y,z) { return (x & z) | (y & (~z)); }
function H(x,y,z) { return (x ^ y ^ z); }
function I(x,y,z) { return (y ^ (x | (~z))); }

function FF(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};

function GG(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};

function HH(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};

function II(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};

function ConvertToWordArray(string) {
var lWordCount;
var lMessageLength = string.length;
var lNumberOfWords_temp1=lMessageLength + 8;
var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
var lWordArray=Array(lNumberOfWords-1);
var lBytePosition = 0;
var lByteCount = 0;
while ( lByteCount < lMessageLength ) {
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
lWordArray[lNumberOfWords-2] = lMessageLength<<3;
lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
return lWordArray;
};

function WordToHex(lValue) {
var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
for (lCount = 0;lCount<=3;lCount++) {
lByte = (lValue>>>(lCount*8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
}
return WordToHexValue;
};

function Utf8Encode(string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";

for (var n = 0; n < string.length; n++) {

var c = string.charCodeAt(n);

if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}

}

return utftext;
};

var x=Array();
var k,AA,BB,CC,DD,a,b,c,d;
var S11=7, S12=12, S13=17, S14=22;
var S21=5, S22=9 , S23=14, S24=20;
var S31=4, S32=11, S33=16, S34=23;
var S41=6, S42=10, S43=15, S44=21;

string = Utf8Encode(string);

x = ConvertToWordArray(string);

a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;

for (k=0;k<x.length;k+=16) {
AA=a; BB=b; CC=c; DD=d;
a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
d=GG(d,a,b,c,x[k+10],S22,0x2441453);
c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
a=II(a,b,c,d,x[k+0], S41,0xF4292244);
d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
c=II(c,d,a,b,x[k+6], S43,0xA3014314);
b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
a=AddUnsigned(a,AA);
b=AddUnsigned(b,BB);
c=AddUnsigned(c,CC);
d=AddUnsigned(d,DD);
}

var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);

return temp.toLowerCase();
}

var nl2br = function()
{
Expand Down Expand Up @@ -335,45 +123,39 @@ $(document).ready(function()

var currentPage = $(location).attr('pathname');

if ($('body')[0].id != "Home")
return;

$('pre[class~=d_code]').each(function(index)
$('.runnable-examples').each(function(index)
{
var stripedText = $(this).text().replace(/\s/gm,'');
var md5sum = MD5(stripedText);
var root = $(this);
var el = root.children("pre");
var stripedText = el.text().replace(/\s/gm,'');

var stdin = "";
var args = "";
var currentExample = $(this);
var orig = currentExample.html();
var stdin = root.children(".runnable-examples-stdin").text();
var args = root.children(".runnable-examples-args").text();

if (typeof mainPage !== 'undefined' && md5sum in mainPage)
// only show stdin or args if they are set
if (stdin.length > 0)
{
var elements = mainPage[md5sum];

if (elements == null)
return; // this example is not runnable online

if (elements[0] != null)
stdin = elements[0];

if (elements[1] != null)
args = elements[1];
stdin = '<div class="d_code_stdin"><span class="d_code_title">Standard input</span><br>'
+ '<textarea class="d_code_stdin">'+stdin+'</textarea></div>';
}
if (args.length > 0)
{
args = '<div class="d_code_args"><span class="d_code_title">Command line arguments</span><br>'
+ '<textarea class="d_code_args">'+args+'</textarea></div>';
}

var currentExample = el;
var orig = currentExample.html();

currentExample.replaceWith(
'<div class="d_code"><pre class="d_code">'+orig+'</pre></div>'
+ '<div class="d_run_code">'
+ '<textarea class="d_code" style="display: none;"></textarea>'
+ '<div class="d_code_stdin"><span class="d_code_title">Standard input</span><br>'
+ '<textarea class="d_code_stdin">'+stdin+'</textarea></div>'
+ '<div class="d_code_args"><span class="d_code_title">Command line arguments</span><br>'
+ '<textarea class="d_code_args">'+args+'</textarea></div>'
+ stdin + args
+ '<div class="d_code_output"><span class="d_code_title">Application output</span><br><pre class="d_code_output" readonly>Running...</pre></div>'
+ '<input type="button" class="editButton" value="Edit">'
+ '<input type="button" class="argsButton" value="Args">'
+ '<input type="button" class="inputButton" value="Input">'
+ (args.length > 0 ? '<input type="button" class="argsButton" value="Args">' : '')
+ (stdin.length > 0 ? '<input type="button" class="inputButton" value="Input">' : '')
+ '<input type="button" class="runButton" value="Run">'
+ '<input type="button" class="resetButton" value="Reset"></div>'
);
Expand Down
2 changes: 1 addition & 1 deletion posix.mak
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ IMAGES=favicon.ico $(ORGS_USING_D) $(addprefix images/, \

JAVASCRIPT=$(addsuffix .js, $(addprefix js/, \
codemirror-compressed dlang ddox listanchors platform-downloads run \
run_examples run-main-website show_contributors jquery-1.7.2.min))
run_examples show_contributors jquery-1.7.2.min))

STYLES=$(addsuffix .css, $(addprefix css/, \
style print codemirror ddox))
Expand Down
Loading