Create your own text control codes: Difference between revisions

(julia example)
Line 77:
</pre>
 
 
=={{header|Phix}}==
The printf() function is implemented in fairly standard Phix hll code in builtins\VM\pprntfN.e<br>
Recent-ish additions along the lines of the task description include:<br>
%q, %Q (print with quotes)<br>
%v, %V (apply sprint internally)<br>
%a, %A (print in bases 2..62)<br>
%[i]<i>specifier</i> (print i'th arg here)<br>
%=<i>specifier</i> (centre, with odd padding as eg 3:4)<br>
%|<i>specifier</i> (centre, with odd padding as eg 4:3)<br>
Just as an example, so we can have some actual code here, but omitting the setup of
"centre" from the format string, the latter two were mainly implemented as follows:
<!--<lang Phix>(phixonline)-->
<span style="color: #008080;">elsif</span> <span style="color: #000000;">centre</span> <span style="color: #008080;">then</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">mh</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">floor</span><span style="color: #0000FF;">(</span><span style="color: #000000;">minfieldwidth</span><span style="color: #0000FF;">/</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">centre</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span> <span style="color: #000080;font-style:italic;">-- '=', split 3:4</span>
<span style="color: #000000;">r1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #008000;">' '</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mh</span><span style="color: #0000FF;">)&</span><span style="color: #000000;">r1</span><span style="color: #0000FF;">&</span><span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #008000;">' '</span><span style="color: #0000FF;">,</span><span style="color: #000000;">minfieldwidth</span><span style="color: #0000FF;">-</span><span style="color: #000000;">mh</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">else</span> <span style="color: #000080;font-style:italic;">-- '|', split 4:3</span>
<span style="color: #000000;">r1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #008000;">' '</span><span style="color: #0000FF;">,</span><span style="color: #000000;">minfieldwidth</span><span style="color: #0000FF;">-</span><span style="color: #000000;">mh</span><span style="color: #0000FF;">)&</span><span style="color: #000000;">r1</span><span style="color: #0000FF;">&</span><span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #008000;">' '</span><span style="color: #0000FF;">,</span><span style="color: #000000;">mh</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<!--</lang>-->
At the same time, similar changes were made to the version of printf() defined in pwa/p2js.js:
<lang javascript>
let padlen = parseInt(size,10)-res.length;
let half = Math.floor(padlen/2);
case '=': res = pad.repeat(half) + res + pad.repeat(padlen-half); break;
case '|': res = pad.repeat(padlen-half) + res + pad.repeat(half); break;
</lang>
 
=={{header|Raku}}==
7,818

edits