Create an HTML table: Difference between revisions

Content added Content deleted
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
Line 713: Line 713:
</tr>
</tr>
</table>
</table>



=={{header|BBC BASIC}}==
=={{header|BBC BASIC}}==
Line 862: Line 861:
}</lang>
}</lang>
{{out}} (wiki doesn't like tbody/thead tags):<table style="text-align:center; border: 1px solid"><th></th><th>X</th><th>Y</th><th>Z</th><tr><th>0</th><td>2777</td><td>886</td><td>9383</td></tr><tr><th>1</th><td>8335</td><td>7793</td><td>6915</td></tr><tr><th>2</th><td>6649</td><td>492</td><td>5386</td></tr><tr><th>3</th><td>27</td><td>2362</td><td>1421</td></tr></table>
{{out}} (wiki doesn't like tbody/thead tags):<table style="text-align:center; border: 1px solid"><th></th><th>X</th><th>Y</th><th>Z</th><tr><th>0</th><td>2777</td><td>886</td><td>9383</td></tr><tr><th>1</th><td>8335</td><td>7793</td><td>6915</td></tr><tr><th>2</th><td>6649</td><td>492</td><td>5386</td></tr><tr><th>3</th><td>27</td><td>2362</td><td>1421</td></tr></table>

=={{header|C sharp}}==
<lang csharp>using System;
using System.Text;

namespace prog
{
class MainClass
{
public static void Main (string[] args)
{
StringBuilder s = new StringBuilder();
Random rnd = new Random();
s.AppendLine("<table>");
s.AppendLine("<thead align = \"right\">");
s.Append("<tr><th></th>");
for(int i=0; i<3; i++)
s.Append("<td>" + "XYZ"[i] + "</td>");
s.AppendLine("</tr>");
s.AppendLine("</thead>");
s.AppendLine("<tbody align = \"right\">");
for( int i=0; i<3; i++ )
{
s.Append("<tr><td>"+i+"</td>");
for( int j=0; j<3; j++ )
s.Append("<td>"+rnd.Next(10000)+"</td>");
s.AppendLine("</tr>");
}
s.AppendLine("</tbody>");
s.AppendLine("</table>");
Console.WriteLine( s );
}
}
}</lang>

=== More modern version ===
<lang csharp>using System;
using System.Text;
using System.Xml;

namespace N
{
public class T
{
public static void Main()
{
var headers = new [] { "", "X", "Y", "Z" };
var cols = headers.Select(name =>
new XElement(
"th",
name,
new XAttribute("text-align", "center")
)
);
var rows = Enumerable.Range(0, 4).Select(ri =>
new XElement(
"tr",
new XElement("td", ri),
Enumerable.Range(0, 4).Select(ci =>
new XElement(
"td",
ci,
new XAttribute("text-align", "center")
)
)
)
);
var xml = new XElement(
"table",
new XElement(
"thead",
new XElement("tr", cols),
new XElement("tbody", rows)
)
);
Console.WriteLine(xml.ToString());
}
}
}
</lang>


=={{header|C++}}==
=={{header|C++}}==
Line 951: Line 1,036:
</html>
</html>
</LANG>
</LANG>
=={{header|C sharp}}==
<lang csharp>using System;
using System.Text;


namespace prog
{
class MainClass
{
public static void Main (string[] args)
{
StringBuilder s = new StringBuilder();
Random rnd = new Random();
s.AppendLine("<table>");
s.AppendLine("<thead align = \"right\">");
s.Append("<tr><th></th>");
for(int i=0; i<3; i++)
s.Append("<td>" + "XYZ"[i] + "</td>");
s.AppendLine("</tr>");
s.AppendLine("</thead>");
s.AppendLine("<tbody align = \"right\">");
for( int i=0; i<3; i++ )
{
s.Append("<tr><td>"+i+"</td>");
for( int j=0; j<3; j++ )
s.Append("<td>"+rnd.Next(10000)+"</td>");
s.AppendLine("</tr>");
}
s.AppendLine("</tbody>");
s.AppendLine("</table>");
Console.WriteLine( s );
}
}
}</lang>

=== More modern version ===
<lang csharp>using System;
using System.Text;
using System.Xml;

namespace N
{
public class T
{
public static void Main()
{
var headers = new [] { "", "X", "Y", "Z" };
var cols = headers.Select(name =>
new XElement(
"th",
name,
new XAttribute("text-align", "center")
)
);
var rows = Enumerable.Range(0, 4).Select(ri =>
new XElement(
"tr",
new XElement("td", ri),
Enumerable.Range(0, 4).Select(ci =>
new XElement(
"td",
ci,
new XAttribute("text-align", "center")
)
)
)
);
var xml = new XElement(
"table",
new XElement(
"thead",
new XElement("tr", cols),
new XElement("tbody", rows)
)
);
Console.WriteLine(xml.ToString());
}
}
}
</lang>
=={{header|Clojure}}==
=={{header|Clojure}}==
Using Hiccup (https://github.com/weavejester/hiccup):
Using Hiccup (https://github.com/weavejester/hiccup):
Line 1,049: Line 1,050:
(for [n (range 1 4)]
(for [n (range 1 4)]
(->> #(rand-int 10000) (repeatedly 3) (cons n) (<tr> :td)))])</lang>
(->> #(rand-int 10000) (repeatedly 3) (cons n) (<tr> :td)))])</lang>

=={{header|CoffeeScript}}==
=={{header|CoffeeScript}}==
<lang coffeescript>
<lang coffeescript>
Line 1,300: Line 1,302:
<tr><td>3</td><td>4098</td><td>1563</td><td>2762</td></tr>
<tr><td>3</td><td>4098</td><td>1563</td><td>2762</td></tr>
</table></lang>
</table></lang>



=={{header|F_Sharp|F#}}==
=={{header|F_Sharp|F#}}==
Line 1,376: Line 1,377:
</tr>
</tr>
</table>
</table>

=={{header|Forth}}==
=={{header|Forth}}==
Printing out a group of HTML text strings is not difficult for Forth or most computer languages.
Printing out a group of HTML text strings is not difficult for Forth or most computer languages.
Line 2,293: Line 2,295:
{{out}}
{{out}}
<lang html5><table><th></th><th>X</th><th>Y</th><th>Z</th><tr><td>1</td><td>1</td><td>2</td><td>3</td></tr><tr><td>2</td><td>4</td><td>5</td><td>6</td></tr><tr><td>3</td><td>7</td><td>8</td><td>9</td></tr><tr><td>4</td><td>10</td><td>11</td><td>12</td></tr></table></lang>
<lang html5><table><th></th><th>X</th><th>Y</th><th>Z</th><tr><td>1</td><td>1</td><td>2</td><td>3</td></tr><tr><td>2</td><td>4</td><td>5</td><td>6</td></tr><tr><td>3</td><td>7</td><td>8</td><td>9</td></tr><tr><td>4</td><td>10</td><td>11</td><td>12</td></tr></table></lang>

=={{header|JavaScript}}==
=={{header|JavaScript}}==
===Iterative===
===Iterative===
Line 2,983: Line 2,986:
</tr>
</tr>
</table></pre>
</table></pre>

=={{header|M2000 Interpreter}}==
=={{header|M2000 Interpreter}}==
<lang qbasic>
<lang qbasic>
Line 3,765: Line 3,769:
print "</tbody></table>";</lang>
print "</tbody></table>";</lang>
Note that this is a rather inane way (because of the inane task specification) of generating structured document. For serious work, one should use a module such as XML or HTML for well-formedness instead of this ad hoc method.
Note that this is a rather inane way (because of the inane task specification) of generating structured document. For serious work, one should use a module such as XML or HTML for well-formedness instead of this ad hoc method.

=={{header|Perl 6}}==

The below example is kind of boring, and laughably simple. For more interesting/complicated examples see:

[[Show_Ascii_table#Perl_6]] - ''(simple)''<br>
[[Mayan_numerals#Perl_6]] - ''(heavy styling)''<br>
[[Rosetta_Code/Count_examples/Full_list]] - ''(multi-column sortable)''<br>
[[Rosetta_Code/List_authors_of_task_descriptions/Full_list]] - ''(complex nested tables)''

''Note: the above examples are outputting wikitable formatting, not HTML directly. It's pretty much a one-for-one shorthand notation though and the principles and process are the same.


This is certainly not the only or best way to generate HTML tables using Perl 6; just an example of one possible method.

<lang perl6>my @header = <&nbsp; X Y Z>;
my $rows = 5;

sub tag ($tag, $string, $param?) { return "<$tag" ~ ($param ?? " $param" !! '') ~ ">$string" ~ "</$tag>" };

my $table = tag('tr', ( tag('th', $_) for @header));

for 1 .. $rows -> $row {
$table ~= tag('tr', ( tag('td', $row, 'align="right"')
~ (tag('td', (^10000).pick, 'align="right"') for 1..^@header)));
}

say tag('table', $table, 'cellspacing=4 style="text-align:right; border: 1px solid;"');</lang>

{{out}}
<table cellspacing=4 style="text-align:right; border: 1px solid;"><tr><th>&nbsp;</th> <th>X</th> <th>Y</th> <th>Z</th></tr><tr><td align="right">1</td><td align="right">2179</td> <td align="right">4778</td> <td align="right">2717</td></tr><tr><td align="right">2</td><td align="right">2160</td> <td align="right">1592</td> <td align="right">4348</td></tr><tr><td align="right">3</td><td align="right">4511</td> <td align="right">540</td> <td align="right">7187</td></tr><tr><td align="right">4</td><td align="right">3484</td> <td align="right">5882</td> <td align="right">1273</td></tr><tr><td align="right">5</td><td align="right">1310</td> <td align="right">4017</td> <td align="right">410</td></tr></table>


=={{header|Phix}}==
=={{header|Phix}}==
Line 4,042: Line 4,015:
<tr><td>4</td><td>7090</td><td>475</td><td>4140</td></tr>
<tr><td>4</td><td>7090</td><td>475</td><td>4140</td></tr>
</table></lang>
</table></lang>

=={{header|PureBasic}}==
<font face="Courier New">Create an HTML table<br>
<br>
</font>

<lang PureBasic>
Title.s="Create an HTML table"

head.s=""
head.s+"<html><head><title>"+Title.s+"</title></head><body>"+chr(13)+chr(10)

tablehead.s
tablehead.s+"<table border=1 cellpadding=10 cellspacing=0>"+chr(13)+chr(10)
tablehead.s+"<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>"+chr(13)+chr(10)

index=0

tablebody.s=""
for row=1 to 4
index+1
tablebody.s+"<tr><th>"+str(index)+"</th>"
for col=1 to 3
tablebody.s+"<td align="+chr(34)+"right"+chr(34)+">"+str(Random(9999,1))+"</td>"
next
tablebody.s+"</tr>"+chr(13)+chr(10)
next

tablefoot.s=""
tablefoot.s+"</table>"+chr(13)+chr(10)

foot.s=""
foot.s+"</body></html>"+chr(13)+chr(10)

FileName.s="Create_an_HTML_table.html"
If CreateFile(0,FileName.s)
WriteString(0,head.s)
WriteString(0,tablehead.s)
WriteString(0,tablebody.s)
WriteString(0,tablefoot.s)
WriteString(0,foot.s)
CloseFile(0)
Else
Debug "Not WriteString :"+FileName.s
EndIf

; RunProgram(FileName.s)
</lang>

{{out}}
<table border=1 cellpadding=10 cellspacing=0>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><th>1</th><td align="right">6638</td><td align="right">5838</td><td align="right">5360</td></tr>
<tr><th>2</th><td align="right">2995</td><td align="right">3856</td><td align="right">3093</td></tr>
<tr><th>3</th><td align="right">37</td><td align="right">7644</td><td align="right">812</td></tr>
<tr><th>4</th><td align="right">4428</td><td align="right">1100</td><td align="right">3721</td></tr>
</table>


'''The raw HTML'''

<lang html5>
<html><head><title>Create an HTML table</title></head><body>
<table border=1 cellpadding=10 cellspacing=0>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><th>1</th><td align="right">6638</td><td align="right">5838</td><td align="right">5360</td></tr>
<tr><th>2</th><td align="right">2995</td><td align="right">3856</td><td align="right">3093</td></tr>
<tr><th>3</th><td align="right">37</td><td align="right">7644</td><td align="right">812</td></tr>
<tr><th>4</th><td align="right">4428</td><td align="right">1100</td><td align="right">3721</td></tr>
</table>
</body></html>
</lang>


=={{header|Python}}==
=={{header|Python}}==
Line 4,264: Line 4,309:
</tr>
</tr>
</table></lang>
</table></lang>

=={{header|PureBasic}}==
<font face="Courier New">Create an HTML table<br>
<br>
</font>

<lang PureBasic>
Title.s="Create an HTML table"

head.s=""
head.s+"<html><head><title>"+Title.s+"</title></head><body>"+chr(13)+chr(10)

tablehead.s
tablehead.s+"<table border=1 cellpadding=10 cellspacing=0>"+chr(13)+chr(10)
tablehead.s+"<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>"+chr(13)+chr(10)

index=0

tablebody.s=""
for row=1 to 4
index+1
tablebody.s+"<tr><th>"+str(index)+"</th>"
for col=1 to 3
tablebody.s+"<td align="+chr(34)+"right"+chr(34)+">"+str(Random(9999,1))+"</td>"
next
tablebody.s+"</tr>"+chr(13)+chr(10)
next

tablefoot.s=""
tablefoot.s+"</table>"+chr(13)+chr(10)

foot.s=""
foot.s+"</body></html>"+chr(13)+chr(10)

FileName.s="Create_an_HTML_table.html"
If CreateFile(0,FileName.s)
WriteString(0,head.s)
WriteString(0,tablehead.s)
WriteString(0,tablebody.s)
WriteString(0,tablefoot.s)
WriteString(0,foot.s)
CloseFile(0)
Else
Debug "Not WriteString :"+FileName.s
EndIf

; RunProgram(FileName.s)
</lang>

{{out}}
<table border=1 cellpadding=10 cellspacing=0>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><th>1</th><td align="right">6638</td><td align="right">5838</td><td align="right">5360</td></tr>
<tr><th>2</th><td align="right">2995</td><td align="right">3856</td><td align="right">3093</td></tr>
<tr><th>3</th><td align="right">37</td><td align="right">7644</td><td align="right">812</td></tr>
<tr><th>4</th><td align="right">4428</td><td align="right">1100</td><td align="right">3721</td></tr>
</table>


'''The raw HTML'''

<lang html5>
<html><head><title>Create an HTML table</title></head><body>
<table border=1 cellpadding=10 cellspacing=0>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><th>1</th><td align="right">6638</td><td align="right">5838</td><td align="right">5360</td></tr>
<tr><th>2</th><td align="right">2995</td><td align="right">3856</td><td align="right">3093</td></tr>
<tr><th>3</th><td align="right">37</td><td align="right">7644</td><td align="right">812</td></tr>
<tr><th>4</th><td align="right">4428</td><td align="right">1100</td><td align="right">3721</td></tr>
</table>
</body></html>
</lang>


=={{header|Racket}}==
=={{header|Racket}}==
Line 4,358: Line 4,331:
(display-xml/content (xexpr->xml xexpr))
(display-xml/content (xexpr->xml xexpr))
</lang>
</lang>

=={{header|Raku}}==
(formerly Perl 6)

The below example is kind of boring, and laughably simple. For more interesting/complicated examples see:

[[Show_Ascii_table#Perl_6]] - ''(simple)''<br>
[[Mayan_numerals#Perl_6]] - ''(heavy styling)''<br>
[[Rosetta_Code/Count_examples/Full_list]] - ''(multi-column sortable)''<br>
[[Rosetta_Code/List_authors_of_task_descriptions/Full_list]] - ''(complex nested tables)''

''Note: the above examples are outputting wikitable formatting, not HTML directly. It's pretty much a one-for-one shorthand notation though and the principles and process are the same.


This is certainly not the only or best way to generate HTML tables using Perl 6; just an example of one possible method.

<lang perl6>my @header = <&nbsp; X Y Z>;
my $rows = 5;

sub tag ($tag, $string, $param?) { return "<$tag" ~ ($param ?? " $param" !! '') ~ ">$string" ~ "</$tag>" };

my $table = tag('tr', ( tag('th', $_) for @header));

for 1 .. $rows -> $row {
$table ~= tag('tr', ( tag('td', $row, 'align="right"')
~ (tag('td', (^10000).pick, 'align="right"') for 1..^@header)));
}

say tag('table', $table, 'cellspacing=4 style="text-align:right; border: 1px solid;"');</lang>

{{out}}
<table cellspacing=4 style="text-align:right; border: 1px solid;"><tr><th>&nbsp;</th> <th>X</th> <th>Y</th> <th>Z</th></tr><tr><td align="right">1</td><td align="right">2179</td> <td align="right">4778</td> <td align="right">2717</td></tr><tr><td align="right">2</td><td align="right">2160</td> <td align="right">1592</td> <td align="right">4348</td></tr><tr><td align="right">3</td><td align="right">4511</td> <td align="right">540</td> <td align="right">7187</td></tr><tr><td align="right">4</td><td align="right">3484</td> <td align="right">5882</td> <td align="right">1273</td></tr><tr><td align="right">5</td><td align="right">1310</td> <td align="right">4017</td> <td align="right">410</td></tr></table>


=={{header|Rascal}}==
=={{header|Rascal}}==