Align columns: Difference between revisions
Content added Content deleted
m (→EasyLang) |
Not a robot (talk | contribs) (Add SETL) |
||
Line 9,032: | Line 9,032: | ||
justified, right justified, or center justified within its column. |
justified, right justified, or center justified within its column. |
||
</pre> |
</pre> |
||
=={{header|SETL}}== |
|||
<syntaxhighlight lang="setl">program align; |
|||
magic := false; $ turn off regexp matching in GNU SETL |
|||
read_file; |
|||
ncols := max/[#line : line in lines]; |
|||
sizes := [1+max/[#(line(col) ? "") : line in lines] : col in [1..ncols]]; |
|||
loop for line in lines do |
|||
print(+/[align(line(col), sizes(col)) : col in [1..#line]]); |
|||
end loop; |
|||
read_file:: |
|||
f := open(command_line(1), "r"); |
|||
lines := []; |
|||
loop doing geta(f, line); while line /= om do |
|||
lines with:= split(line, "$"); |
|||
end loop; |
|||
close(f); |
|||
proc align(s, n); |
|||
case command_line(2) of |
|||
("r"): return lpad(s, n); |
|||
("l"): return rpad(s, n); |
|||
("c"): return center(s, n); |
|||
end case; |
|||
end proc; |
|||
proc center(s, n); |
|||
padding := n - #s; |
|||
l := " " * ceil(padding/2); |
|||
r := " " * floor(padding/2); |
|||
return l + s + r; |
|||
end proc; |
|||
end program;</syntaxhighlight> |
|||
{{out}} |
|||
<pre>$ setl align.setl test.txt l |
|||
Given a text file of many lines, where fields within a line |
|||
are delineated by a single 'dollar' character, write a program |
|||
that aligns each column of fields by ensuring that words in each |
|||
column are separated by at least one space. |
|||
Further, allow for each word in a column to be either left |
|||
justified, right justified, or center justified within its column. |
|||
$ setl align.setl test.txt r |
|||
Given a text file of many lines, where fields within a line |
|||
are delineated by a single 'dollar' character, write a program |
|||
that aligns each column of fields by ensuring that words in each |
|||
column are separated by at least one space. |
|||
Further, allow for each word in a column to be either left |
|||
justified, right justified, or center justified within its column. |
|||
$ setl align.setl test.txt c |
|||
Given a text file of many lines, where fields within a line |
|||
are delineated by a single 'dollar' character, write a program |
|||
that aligns each column of fields by ensuring that words in each |
|||
column are separated by at least one space. |
|||
Further, allow for each word in a column to be either left |
|||
justified, right justified, or center justified within its column.</pre> |
|||
=={{header|Shiny}}== |
=={{header|Shiny}}== |