NAME
    Acme::CPANModules::TextTable - Modules that generate text tables

VERSION
    This document describes version 0.009 of Acme::CPANModules::TextTable
    (from Perl distribution Acme-CPANModules-TextTable), released on
    2021-02-20.

SYNOPSIS
    To run benchmark with default option:

     % bencher --cpanmodules-module TextTable

    To run module startup overhead benchmark:

     % bencher --module-startup --cpanmodules-module TextTable

    For more options (dump scenario, list/include/exclude/add participants,
    list/include/exclude/add datasets, etc), see bencher or run "bencher
    --help".

BENCHMARKED MODULES
    Version numbers shown below are the versions used when running the
    sample benchmark.

    Text::Table::Any 0.100

    Text::UnicodeBox::Table

    Text::Table::Manifold 1.03

    Text::ANSITable 0.602

    Text::ASCIITable 0.22

    Text::FormatTable 1.03

    Text::MarkdownTable 0.3.1

    Text::Table 1.133

    Text::Table::Tiny 1.00

    Text::Table::TinyBorderStyle 0.004

    Text::Table::More 0.009

    Text::Table::Sprintf 0.001

    Text::Table::TinyColor 0.002

    Text::Table::TinyColorWide 0.001

    Text::Table::TinyWide 0.001

    Text::Table::Org 0.02

    Text::Table::CSV 0.023

    Text::Table::HTML 0.003

    Text::Table::HTML::DataTables 0.007

    Text::TabularDisplay 1.38

BENCHMARK PARTICIPANTS
    *   Text::Table::Any (perl_code)

        Text::Table::Any

    *   Text::UnicodeBox::Table (perl_code)

        Text::UnicodeBox::Table

    *   Text::Table::Manifold (perl_code)

        Text::Table::Manifold

    *   Text::ANSITable (perl_code)

        Text::ANSITable

    *   Text::ASCIITable (perl_code)

        Text::ASCIITable

    *   Text::FormatTable (perl_code)

        Text::FormatTable

    *   Text::MarkdownTable (perl_code)

        Text::MarkdownTable

    *   Text::Table (perl_code)

        Text::Table

    *   Text::Table::Tiny (perl_code)

        Text::Table::Tiny

    *   Text::Table::TinyBorderStyle (perl_code)

        Text::Table::TinyBorderStyle

    *   Text::Table::More (perl_code)

        Text::Table::More

    *   Text::Table::Sprintf (perl_code)

        Text::Table::Sprintf

    *   Text::Table::TinyColor (perl_code)

        Text::Table::TinyColor

    *   Text::Table::TinyColorWide (perl_code)

        Text::Table::TinyColorWide

    *   Text::Table::TinyWide (perl_code)

        Text::Table::TinyWide

    *   Text::Table::Org (perl_code)

        Text::Table::Org

    *   Text::Table::CSV (perl_code)

        Text::Table::CSV

    *   Text::Table::HTML (perl_code)

        Text::Table::HTML

    *   Text::Table::HTML::DataTables (perl_code)

        Text::Table::HTML::DataTables

    *   Text::TabularDisplay (perl_code)

        Text::TabularDisplay

BENCHMARK DATASETS
    *   tiny (1x1)

    *   small (3x5)

    *   wide (30x5)

    *   long (3x300)

    *   large (30x300)

    *   multiline data (2x1) (not included by default)

    *   wide char data (1x2) (not included by default)

    *   color data (1x2) (not included by default)

SAMPLE BENCHMARK RESULTS
    Run on: perl: *v5.30.0*, CPU: *Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
    (2 cores)*, OS: *GNU/Linux Ubuntu version 19.10*, OS kernel: *Linux
    version 5.3.0-64-generic*.

    Benchmark with default options ("bencher --cpanmodules-module
    TextTable"):

     #table1#
     {dataset=>"large (30x300)"}
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
     | participant                   | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors   | samples |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
     | Text::UnicodeBox::Table       |       1   |     970   |                 0.00% |             39484.05% |   0.0022  |      20 |
     | Text::ANSITable               |       2.4 |     420   |               131.74% |             16981.42% |   0.00087 |      20 |
     | Text::Table::More             |       5.2 |     190   |               406.72% |              7711.84% |   0.00029 |      20 |
     | Text::ASCIITable              |      12   |      86   |              1026.60% |              3413.58% |   0.00026 |      22 |
     | Text::FormatTable             |      17   |      60   |              1529.60% |              2329.06% |   0.00022 |      20 |
     | Text::Table::TinyColorWide    |      17   |      58.8 |              1556.30% |              2289.90% | 5.3e-05   |      20 |
     | Text::Table::TinyWide         |      24   |      41   |              2259.87% |              1577.38% | 7.6e-05   |      20 |
     | Text::Table::Manifold         |      39   |      26   |              3665.29% |               951.29% | 3.8e-05   |      20 |
     | Text::TabularDisplay          |      44   |      23   |              4151.12% |               831.14% |   0.0001  |      20 |
     | Text::Table::TinyColor        |      62   |      16   |              5958.76% |               553.34% | 3.7e-05   |      20 |
     | Text::Table::Tiny             |      64   |      16   |              6174.05% |               530.92% | 4.7e-05   |      20 |
     | Text::Table::Any              |      65   |      15   |              6222.54% |               526.08% | 6.8e-05   |      20 |
     | Text::MarkdownTable           |      82   |      12   |              7857.77% |               397.43% | 7.2e-05   |      20 |
     | Text::Table                   |     100   |       9.6 |             10093.51% |               288.33% | 5.7e-05   |      20 |
     | Text::Table::HTML::DataTables |     110   |       8.9 |             10851.19% |               261.46% | 8.8e-05   |      20 |
     | Text::Table::HTML             |     120   |       8.1 |             11889.99% |               230.14% | 7.2e-05   |      21 |
     | Text::Table::CSV              |     230   |       4.3 |             22339.48% |                76.40% | 1.8e-05   |      20 |
     | Text::Table::TinyBorderStyle  |     200   |       4   |             23298.18% |                69.18% | 4.2e-05   |      20 |
     | Text::Table::Org              |     240   |       4.2 |             23335.57% |                68.91% | 1.9e-05   |      20 |
     | Text::Table::Sprintf          |     400   |       2   |             39484.05% |                 0.00% | 3.2e-05   |      20 |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+

     #table2#
     {dataset=>"long (3x300)"}
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
     | participant                   | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors   | samples |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
     | Text::UnicodeBox::Table       |       8.2 |   120     |                 0.00% |             41406.41% |   0.00042 |      20 |
     | Text::ANSITable               |      22   |    46     |               166.08% |             15499.31% |   0.00015 |      20 |
     | Text::Table::More             |      49   |    21     |               493.69% |              6891.21% | 8.8e-05   |      20 |
     | Text::ASCIITable              |     100   |     8     |              1371.68% |              2720.35% |   0.00011 |      21 |
     | Text::FormatTable             |     150   |     6.5   |              1768.23% |              2121.69% | 5.6e-05   |      20 |
     | Text::Table::TinyColorWide    |     170   |     6     |              1949.23% |              1925.46% | 3.1e-05   |      20 |
     | Text::Table::TinyWide         |     200   |     4     |              2664.36% |              1401.48% | 5.2e-05   |      20 |
     | Text::TabularDisplay          |     300   |     3.3   |              3561.61% |              1033.56% | 3.3e-05   |      20 |
     | Text::Table::Manifold         |     350   |     2.9   |              4185.03% |               868.64% | 1.3e-05   |      20 |
     | Text::MarkdownTable           |     410   |     2.4   |              4941.74% |               723.26% | 1.8e-05   |      21 |
     | Text::Table                   |     490   |     2     |              5886.85% |               593.29% | 1.4e-05   |      21 |
     | Text::Table::Any              |     570   |     1.8   |              6841.50% |               497.95% | 7.2e-06   |      20 |
     | Text::Table::Tiny             |     580   |     1.7   |              6954.00% |               488.41% | 5.1e-06   |      20 |
     | Text::Table::TinyColor        |     600   |     1.7   |              7181.51% |               470.03% | 1.3e-05   |      20 |
     | Text::Table::HTML::DataTables |     950   |     1.1   |             11545.75% |               256.41% | 9.6e-06   |      20 |
     | Text::Table::HTML             |    1110   |     0.901 |             13475.05% |               205.76% | 8.5e-07   |      20 |
     | Text::Table::TinyBorderStyle  |    1800   |     0.57  |             21361.42% |                93.40% | 2.9e-06   |      20 |
     | Text::Table::Org              |    1800   |     0.55  |             22236.24% |                85.83% | 1.4e-06   |      20 |
     | Text::Table::CSV              |    1840   |     0.544 |             22392.40% |                84.54% | 4.8e-07   |      20 |
     | Text::Table::Sprintf          |    3390   |     0.295 |             41406.41% |                 0.00% | 2.1e-07   |      20 |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+

     #table3#
     {dataset=>"small (3x5)"}
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
     | participant                   | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors | samples |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
     | Text::UnicodeBox::Table       |       190 | 5.2       |                 0.00% |             52622.69% | 4.8e-05 |      20 |
     | Text::ANSITable               |       850 | 1.2       |               340.98% |             11855.81% | 4.9e-06 |      20 |
     | Text::Table::More             |      2100 | 0.48      |               986.91% |              4750.69% | 1.3e-06 |      20 |
     | Text::ASCIITable              |      4900 | 0.2       |              2469.54% |              1951.83% | 9.1e-07 |      20 |
     | Text::FormatTable             |      7000 | 0.14      |              3572.36% |              1335.66% | 2.1e-07 |      21 |
     | Text::Table                   |      7700 | 0.13      |              3933.76% |              1207.04% |   2e-07 |      22 |
     | Text::Table::Manifold         |      7800 | 0.13      |              3981.37% |              1191.79% | 2.1e-07 |      20 |
     | Text::Table::TinyColorWide    |      7900 | 0.13      |              4011.29% |              1182.39% | 2.1e-07 |      20 |
     | Text::Table::TinyWide         |     11200 | 0.0895    |              5724.02% |               805.26% | 7.8e-08 |      21 |
     | Text::Table::TinyBorderStyle  |     12000 | 0.086     |              5937.79% |               773.21% | 1.3e-07 |      20 |
     | Text::MarkdownTable           |     12000 | 0.08      |              6383.09% |               713.23% | 2.1e-07 |      20 |
     | Text::Table::HTML::DataTables |     10000 | 0.08      |              6790.67% |               665.13% | 7.7e-07 |      20 |
     | Text::TabularDisplay          |     15000 | 0.067     |              7719.69% |               574.23% | 2.4e-07 |      20 |
     | Text::Table::TinyColor        |     20000 | 0.05      |              9510.69% |               448.58% | 2.6e-06 |      22 |
     | Text::Table::Any              |     20000 | 0.049     |             10442.21% |               400.11% | 1.1e-07 |      20 |
     | Text::Table::Tiny             |     21000 | 0.048     |             10673.61% |               389.37% | 5.7e-08 |      27 |
     | Text::Table::HTML             |     47000 | 0.021     |             24414.86% |               115.06% | 2.7e-08 |      20 |
     | Text::Table::Org              |     56000 | 0.018     |             28940.37% |                81.55% | 2.7e-08 |      20 |
     | Text::Table::CSV              |     78800 | 0.0127    |             41005.07% |                28.26% |   6e-09 |      25 |
     | Text::Table::Sprintf          |    101130 | 0.0098881 |             52622.69% |                 0.00% | 2.1e-11 |      20 |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+

     #table4#
     {dataset=>"tiny (1x1)"}
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
     | participant                   | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors | samples |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
     | Text::UnicodeBox::Table       |       500 |   2       |                 0.00% |             61292.33% | 7.3e-05 |      20 |
     | Text::ANSITable               |      3000 |   0.34    |               528.88% |              9662.22% | 2.3e-06 |      22 |
     | Text::Table::More             |      7700 |   0.13    |              1524.09% |              3680.11% |   2e-07 |      23 |
     | Text::Table::Manifold         |     14000 |   0.073   |              2805.73% |              2012.80% |   1e-07 |      21 |
     | Text::Table::TinyBorderStyle  |     15000 |   0.066   |              3132.40% |              1799.28% | 1.3e-07 |      22 |
     | Text::ASCIITable              |     18000 |   0.056   |              3670.77% |              1528.11% | 1.3e-07 |      22 |
     | Text::Table                   |     21000 |   0.048   |              4295.45% |              1296.72% | 1.1e-07 |      20 |
     | Text::Table::HTML::DataTables |     21000 |   0.048   |              4341.79% |              1282.15% | 1.2e-07 |      20 |
     | Text::MarkdownTable           |     25000 |   0.041   |              5115.47% |              1077.12% | 1.1e-07 |      20 |
     | Text::FormatTable             |     34000 |   0.029   |              7133.04% |               748.78% | 6.4e-08 |      22 |
     | Text::Table::TinyColorWide    |     45000 |   0.022   |              9403.75% |               545.98% | 2.4e-08 |      24 |
     | Text::TabularDisplay          |     56000 |   0.018   |             11798.72% |               415.96% |   8e-08 |      20 |
     | Text::Table::TinyWide         |     58000 |   0.017   |             12203.74% |               398.97% | 3.3e-08 |      20 |
     | Text::Table::Any              |     59000 |   0.017   |             12427.69% |               390.05% | 2.7e-08 |      20 |
     | Text::Table::Tiny             |     63000 |   0.016   |             13217.27% |               361.00% | 2.7e-08 |      20 |
     | Text::Table::TinyColor        |     94000 |   0.011   |             19914.10% |               206.75% | 1.3e-08 |      20 |
     | Text::Table::Org              |    147000 |   0.0068  |             31110.94% |                96.70% |   3e-09 |      24 |
     | Text::Table::HTML             |    183000 |   0.00546 |             38769.80% |                57.94% | 1.6e-09 |      23 |
     | Text::Table::Sprintf          |    288000 |   0.00347 |             61087.88% |                 0.33% | 1.6e-09 |      23 |
     | Text::Table::CSV              |    289000 |   0.00346 |             61292.33% |                 0.00% | 1.4e-09 |      29 |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+

     #table5#
     {dataset=>"wide (30x5)"}
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
     | participant                   | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors   | samples |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
     | Text::UnicodeBox::Table       |     38    | 26        |                 0.00% |             42439.84% |   0.00017 |      20 |
     | Text::ANSITable               |    110    |  9.4      |               180.50% |             15065.71% | 4.4e-05   |      22 |
     | Text::Table::More             |    200    |  4        |               541.40% |              6532.38% | 6.9e-05   |      20 |
     | Text::ASCIITable              |    510    |  2        |              1237.96% |              3079.46% | 1.4e-05   |      20 |
     | Text::FormatTable             |    700    |  1.4      |              1754.40% |              2194.00% | 6.5e-06   |      20 |
     | Text::Table::TinyColorWide    |    870    |  1.1      |              2209.99% |              1741.56% | 3.1e-06   |      20 |
     | Text::Table                   |   1200    |  0.86     |              2996.76% |              1273.69% | 3.4e-06   |      20 |
     | Text::Table::TinyWide         |   1200    |  0.84     |              3039.14% |              1255.14% | 6.9e-06   |      23 |
     | Text::Table::Manifold         |   1700    |  0.6      |              4352.22% |               855.47% | 1.1e-06   |      20 |
     | Text::TabularDisplay          |   2200    |  0.45     |              5784.98% |               622.85% | 2.2e-06   |      21 |
     | Text::Table::Tiny             |   2900    |  0.35     |              7520.63% |               458.22% |   2e-06   |      20 |
     | Text::Table::Any              |   3000    |  0.33     |              7872.28% |               433.60% | 4.3e-07   |      20 |
     | Text::Table::TinyColor        |   3100    |  0.32     |              8138.17% |               416.38% | 3.7e-07   |      20 |
     | Text::Table::TinyBorderStyle  |   3280    |  0.305    |              8579.95% |               390.09% | 2.1e-07   |      20 |
     | Text::MarkdownTable           |   3500    |  0.28     |              9233.10% |               355.80% | 8.8e-07   |      21 |
     | Text::Table::HTML::DataTables |   5000    |  0.2      |             13148.63% |               221.09% | 9.6e-07   |      20 |
     | Text::Table::HTML             |   6600    |  0.15     |             17449.76% |               142.40% | 2.1e-07   |      20 |
     | Text::Table::Org              |   9158.85 |  0.109184 |             24163.82% |                75.32% | 2.3e-11   |      20 |
     | Text::Table::CSV              |  12200    |  0.0818   |             32273.50% |                31.40% | 2.5e-08   |      22 |
     | Text::Table::Sprintf          |  16100    |  0.0623   |             42439.84% |                 0.00% | 2.6e-08   |      21 |
     +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+

    Benchmark module startup overhead ("bencher --cpanmodules-module
    TextTable --module-startup"):

     #table6#
     +-------------------------------+-----------+---------------------+-----------------------+-----------------------+-----------+---------+
     | participant                   | time (ms) | mod_overhead_time   | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors   | samples |
     +-------------------------------+-----------+---------------------+-----------------------+-----------------------+-----------+---------+
     | Text::UnicodeBox::Table       |     170   | 161.1               |                 0.00% |              1833.19% |   0.00081 |      20 |
     | Text::Table::Manifold         |      89   |  80.1               |                93.41% |               899.52% |   0.00023 |      20 |
     | Text::ANSITable               |      48   |  39.1               |               255.87% |               443.24% |   0.00016 |      26 |
     | Text::MarkdownTable           |      44   |  35.1               |               293.61% |               391.15% |   0.00016 |      20 |
     | Text::Table::TinyColorWide    |      34   |  25.1               |               409.02% |               279.79% | 9.1e-05   |      20 |
     | Text::Table::TinyWide         |      33   |  24.1               |               428.82% |               265.56% |   0.00026 |      20 |
     | Text::Table::More             |      24   |  15.1               |               606.64% |               173.57% | 5.8e-05   |      20 |
     | Text::Table                   |      24   |  15.1               |               624.82% |               166.71% |   0.00017 |      23 |
     | Text::ASCIITable              |      19   |  10.1               |               812.81% |               111.78% | 4.7e-05   |      22 |
     | Text::Table::Tiny             |      17   |   8.1               |               899.58% |                93.40% | 4.9e-05   |      20 |
     | Text::FormatTable             |      15   |   6.1               |              1016.34% |                73.17% | 5.6e-05   |      20 |
     | Text::Table::TinyColor        |      14   |   5.1               |              1090.20% |                62.43% | 4.7e-05   |      20 |
     | Text::Table::TinyBorderStyle  |      12   |   3.1               |              1323.11% |                35.84% | 4.5e-05   |      21 |
     | Text::TabularDisplay          |      12   |   3.1               |              1387.51% |                29.96% | 3.6e-05   |      20 |
     | Text::Table::HTML             |      11   |   2.1               |              1475.23% |                22.72% | 5.2e-05   |      20 |
     | Text::Table::HTML::DataTables |      11   |   2.1               |              1489.90% |                21.59% | 3.8e-05   |      20 |
     | Text::Table::Any              |       9.8 |   0.9               |              1648.24% |                10.58% | 4.5e-05   |      20 |
     | Text::Table::Org              |       9.3 |   0.4               |              1747.29% |                 4.65% | 8.8e-05   |      20 |
     | Text::Table::Sprintf          |       9.3 |   0.4               |              1750.16% |                 4.49% | 8.5e-05   |      20 |
     | Text::Table::CSV              |       9.1 |   0.199999999999999 |              1790.16% |                 2.28% |   5e-05   |      20 |
     | perl -e1 (baseline)           |       8.9 |   0                 |              1833.19% |                 0.00% | 6.2e-05   |      20 |
     +-------------------------------+-----------+---------------------+-----------------------+-----------------------+-----------+---------+

    To display as an interactive HTML table on a browser, you can add option
    "--format html+datatables".

ACME::CPANMODULES FEATURE COMPARISON MATRIX
     +-------------------------------+----------------+------------------+---------------+--------------+----------------+-----------------+-------------+-------------------+------------------+---------------------+--------------+------------+------------------+--------------------+-----------------+----------------+-------------------+----------+-----------------------+---------------------+-----------------+-----------+
     | module                        | align_cell *1) | align_column *2) | align_row *3) | box_char *4) | color_data *5) | color_theme *6) | colspan *7) | custom_border *8) | custom_color *9) | multiline_data *10) | rowspan *11) | speed *12) | valign_cell *13) | valign_column *14) | valign_row *15) | wide_char_data | column_width *16) | pad *17) | per_column_width *18) | per_row_height *19) | row_height *20) | vpad *21) |
     +-------------------------------+----------------+------------------+---------------+--------------+----------------+-----------------+-------------+-------------------+------------------+---------------------+--------------+------------+------------------+--------------------+-----------------+----------------+-------------------+----------+-----------------------+---------------------+-----------------+-----------+
     | Text::Table::Any              | N/A *22)       | N/A *22)         | N/A *22)      | N/A *22)     | N/A *22)       | N/A *22)        | N/A *22)    | N/A *22)          | N/A *22)         | N/A *22)            | N/A *22)     | N/A *22)   | N/A *22)         | N/A *22)           | N/A *22)        | N/A *22)       | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::UnicodeBox::Table       | no             | yes              | N/A           | no           | yes            | no              | no          | yes               | no               | no                  | no           | slow       | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::Manifold         | no             | yes              | N/A           | N/A          | yes            | no              | no          | no *23)           | no               | no                  | no           | N/A        | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::ANSITable               | yes            | yes              | yes           | yes          | yes            | yes             | no          | yes               | yes              | yes                 | no           | slow       | yes              | yes                | yes             | yes            | yes               | yes      | yes                   | yes                 | yes             | yes       |
     | Text::ASCIITable              | N/A            | N/A              | N/A           | no           | no             | N/A             | N/A         | N/A               | N/A              | yes                 | N/A          | N/A        | N/A              | N/A                | N/A             | no             | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::FormatTable             | N/A            | N/A              | N/A           | no           | no             | N/A             | N/A         | N/A               | N/A              | yes                 | N/A          | N/A        | N/A              | N/A                | N/A             | no             | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::MarkdownTable           | N/A            | N/A              | N/A           | no           | no             | N/A             | N/A         | N/A               | N/A              | no *24)             | N/A          | N/A        | N/A              | N/A                | N/A             | no             | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table                   | N/A            | N/A              | N/A           | N/A *25)     | no             | N/A             | N/A         | N/A               | N/A              | yes                 | N/A          | N/A        | N/A              | N/A                | N/A             | no             | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::Tiny             | N/A            | N/A              | N/A           | yes          | yes            | N/A             | N/A         | N/A               | N/A              | no                  | N/A          | N/A        | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::TinyBorderStyle  | N/A            | N/A              | N/A           | yes          | no             | N/A             | N/A         | N/A               | N/A              | no                  | N/A          | N/A        | N/A              | N/A                | N/A             | no             | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::More             | yes            | yes              | yes           | yes          | yes            | no              | yes         | yes               | no               | yes                 | yes          | slow       | yes              | yes                | yes             | yes            | no                | no       | no                    | no                  | no              | no        |
     | Text::Table::Sprintf          | N/A            | N/A              | N/A           | no           | no             | N/A             | N/A         | N/A               | N/A              | no                  | N/A          | fast       | N/A              | N/A                | N/A             | no             | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::TinyColor        | N/A            | N/A              | N/A           | no           | yes            | N/A             | N/A         | N/A               | N/A              | no                  | N/A          | N/A        | N/A              | N/A                | N/A             | no             | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::TinyColorWide    | N/A            | N/A              | N/A           | no           | yes            | N/A             | N/A         | N/A               | N/A              | no                  | N/A          | N/A        | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::TinyWide         | N/A            | N/A              | N/A           | no           | no             | N/A             | N/A         | N/A               | N/A              | N/A                 | N/A          | N/A        | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::Org              | N/A            | N/A              | N/A           | no           | no             | N/A             | N/A         | N/A               | N/A              | no                  | N/A          | N/A        | N/A              | N/A                | N/A             | no             | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::CSV              | N/A            | N/A              | N/A           | N/A *26)     | no             | N/A             | N/A         | N/A               | N/A              | yes *27)            | N/A          | N/A        | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::HTML             | N/A            | N/A              | N/A           | no           | no *28)        | N/A             | N/A         | N/A               | N/A              | yes                 | N/A          | N/A        | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::Table::HTML::DataTables | N/A            | N/A              | N/A           | no           | no *28)        | N/A             | N/A         | N/A               | N/A              | yes                 | N/A          | N/A        | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     | Text::TabularDisplay          | N/A            | N/A              | N/A           | N/A *26)     | no             | N/A             | N/A         | N/A               | N/A              | yes                 | N/A          | N/A        | N/A              | N/A                | N/A             | yes            | N/A               | N/A      | N/A                   | N/A                 | N/A             | N/A       |
     +-------------------------------+----------------+------------------+---------------+--------------+----------------+-----------------+-------------+-------------------+------------------+---------------------+--------------+------------+------------------+--------------------+-----------------+----------------+-------------------+----------+-----------------------+---------------------+-----------------+-----------+

    Notes:

    1. align_cell: Whether module supports aligning text horizontally in
    individual cells (left/right/middle)
    2. align_column: Whether module supports aligning text horizontally in a
    column (left/right/middle)
    3. align_row: Whether module supports aligning text horizontally in a
    row (left/right/middle)
    4. box_char: Whether module can utilize box-drawing characters
    5. color_data: Whether module supports ANSI colors (i.e. text with ANSI
    color codes can still be aligned properly)
    6. color_theme: Whether the module supports color theme/scheme
    7. colspan: Whether module supports column spans
    8. custom_border: Whether module allows customizing border in some way
    9. custom_color: Whether the module produces colored table and supports
    customizing color in some way
    10. multiline_data: Whether module supports aligning data cells that
    contain newlines
    11. rowspan: Whether module supports row spans
    12. speed: Rendering speed
    13. valign_cell: Whether module supports aligning text vertically in
    individual cells (top/bottom/middle)
    14. valign_column: Whether module supports aligning text vertically in a
    column (top/bottom/middle)
    15. valign_row: Whether module supports aligning text vertically in a
    row (top/bottom/middle)
    16. column_width: Whether module allows setting the width of columns
    17. pad: Whether module allows customizing cell horizontal padding
    18. per_column_width: Whether module allows setting column width on a
    per-column basis
    19. per_row_height: Whether module allows setting row height on a
    per-row basis
    20. row_height: Whether module allows setting the height of rows
    21. vpad: Whether module allows customizing cell vertical padding
    22. Depends on backend
    23. But this module can pass rendering to other module like
    Text::UnicodeBox::Table
    24. Newlines stripped
    25. Does not draw borders
    26. Irrelevant
    27. But make sure your CSV parser can handle multiline cell
    28. Not converted to HTML color elements

ACME::MODULES ENTRIES
    *   Text::Table::Any

        This is a common frontend for many text table modules as backends.
        The interface is dead simple, following Text::Table::Tiny. The main
        drawback is that it currently does not allow passing (some, any)
        options to each backend.

    *   Text::UnicodeBox::Table

        The main feature of this module is the various border style it
        provides drawn using Unicode box-drawing characters. It allows
        per-row style. The rendering speed is particularly slow compared to
        other modules.

    *   Text::Table::Manifold

        Two main features of this module is per-column aligning and wide
        character support. This module, aside from doing its rendering, can
        also be told to pass rendering to HTML, CSV, or other text table
        module like Text::UnicodeBox::Table); so in this way it is similar
        to Text::Table::Any.

    *   Text::ANSITable

        This 2013 project was my take in creating a text table module that
        can handle color, multiline text, wide characters. I also threw in
        various formatting options, e.g. per-column/row/cell
        align/valign/pad/vpad, conditional formatting, and so on. I even
        added a couple of features I never used: hiding rows and specifying
        columns to display which can be in different order from the original
        specified columns or can contain the same original columns multiple
        times. I think this module offers the most formatting options on
        CPAN.

        In early 2021, I needed colspan/rowspan and I implemented this in a
        new module: Text::Table::Span (later renamed to Text::Table::More).
        I plan to add this feature too to Text::ANSITable, but in the
        meantime I'm also adding more formatting options which I need to
        Text::Table::More.

    *   Text::ASCIITable

    *   Text::FormatTable

    *   Text::MarkdownTable

    *   Text::Table

    *   Text::Table::Tiny

    *   Text::Table::TinyBorderStyle

    *   Text::Table::More

        A module I wrote in early 2021. Main distinguishing feature is
        support for rowspan/colspan. I plan to add more features to this
        module on an as-needed basic. This module is now preferred than
        Text::ANSITable, although currently it does not nearly as many
        formatting options as Text::ANSITable.

    *   Text::Table::Sprintf

    *   Text::Table::TinyColor

    *   Text::Table::TinyColorWide

    *   Text::Table::TinyWide

    *   Text::Table::Org

    *   Text::Table::CSV

    *   Text::Table::HTML

    *   Text::Table::HTML::DataTables

    *   Text::TabularDisplay

FAQ
  What is an Acme::CPANModules::* module?
    An Acme::CPANModules::* module, like this module, contains just a list
    of module names that share a common characteristics. It is a way to
    categorize modules and document CPAN. See Acme::CPANModules for more
    details.

  What are ways to use this Acme::CPANModules module?
    Aside from reading this Acme::CPANModules module's POD documentation,
    you can install all the listed modules (entries) using cpanmodules CLI
    (from App::cpanmodules distribution):

        % cpanmodules ls-entries TextTable | cpanm -n

    or Acme::CM::Get:

        % perl -MAcme::CM::Get=TextTable -E'say $_->{module} for @{ $LIST->{entries} }' | cpanm -n

    or directly:

        % perl -MAcme::CPANModules::TextTable -E'say $_->{module} for @{ $Acme::CPANModules::TextTable::LIST->{entries} }' | cpanm -n

    This Acme::CPANModules module contains benchmark instructions. You can
    run a benchmark for some/all the modules listed in this
    Acme::CPANModules module using the bencher CLI (from Bencher
    distribution):

        % bencher --cpanmodules-module TextTable

    This Acme::CPANModules module also helps lcpan produce a more meaningful
    result for "lcpan related-mods" command when it comes to finding related
    modules for the modules listed in this Acme::CPANModules module.

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/Acme-CPANModules-TextTable>.

SOURCE
    Source repository is at
    <https://github.com/perlancar/perl-Acme-CPANModules-TextTable>.

BUGS
    Please report any bugs or feature requests on the bugtracker website
    <https://github.com/perlancar/perl-Acme-CPANModules-TextTable/issues>

    When submitting a bug or request, please include a test-file or a patch
    to an existing test-file that illustrates the bug or desired feature.

SEE ALSO
    Acme::CPANModules::HTMLTable

    Acme::CPANModules - about the Acme::CPANModules namespace

    cpanmodules - CLI tool to let you browse/view the lists

AUTHOR
    perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2021, 2020, 2019 by perlancar@cpan.org.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

