#!/usr/bin/perl # # Simple program to arrange the example programs in a user defined order # instead of a sorted order. Also add a caption. # # SPDX-License-Identifier: BSD-2-Clause # Copyright 2014-2024, John McNamara, jmcnamara@cpan.org. # use warnings; use strict; # The required example order and descriptions. my @examples = ( [ 'hello.c', 'A simple hello world example' ], [ 'anatomy.c', 'The anatomy of a libxlsxwriter program' ], [ 'demo.c', 'Demo of some of the libxlsxwriter features' ], [ 'tutorial1.c', 'Tutorial 1 from the documentation' ], [ 'tutorial2.c', 'Tutorial 2 from the documentation' ], [ 'tutorial3.c', 'Tutorial 3 from the documentation' ], [ 'format_font.c', 'Example of writing data with font formatting' ], [ 'format_num_format.c', 'Example of writing data with number formatting' ], [ 'dates_and_times01.c', 'Writing dates and times with numbers' ], [ 'dates_and_times02.c', 'Writing dates and times with datetime' ], [ 'dates_and_times03.c', 'Writing dates and times with Unix datetimes' ], [ 'dates_and_times04.c', 'Dates and times with different formats' ], [ 'hyperlinks.c', 'A example of writing urls/hyperlinks' ], [ 'rich_strings.c', 'A example of writing "rich" multi-format strings' ], [ 'array_formula.c', 'A example of using array formulas' ], [ 'dynamic_arrays.c', 'A example of using Excel 365 dynamic array formulas' ], [ 'utf8.c', 'A example of some UTF-8 text' ], [ 'constant_memory.c', 'Write a large file with constant memory usage' ], [ 'output_buffer.c', 'Write a file to a memory buffer' ], [ 'image_buffer.c', 'Example of adding an image from a memory buffer.' ], [ 'merge_range.c', 'Create a merged range of cells' ], [ 'merge_rich_string.c', 'Create a merged range with a rich string' ], [ 'autofilter.c', 'An example of a worksheet autofilter' ], [ 'data_validate.c', 'Examples of worksheet data validation and drop down lists' ], [ 'conditional_format1.c', 'A simple conditional formatting example' ], [ 'conditional_format2.c', 'An advanced conditional formatting example' ], [ 'tables.c', 'Example of table to a worksheet.' ], [ 'images.c', 'Example of adding images to a worksheet.' ], [ 'headers_footers.c', 'Example of adding worksheet headers/footers' ], [ 'defined_name.c', 'Example of how to create defined names' ], [ 'outline.c', 'Example of grouping and outlines' ], [ 'outline_collapsed.c', 'Example of grouping and collapsed outlines' ], [ 'watermark.c', 'Example of how to set a watermark image for a worksheet' ], [ 'background.c', 'Example of how to set the background image for a worksheet' ], [ 'tab_colors.c', 'Example of how to set worksheet tab colors' ], [ 'diagonal_border.c', 'Example of how to set a worksheet cell diagonal border.' ], [ 'hide_sheet.c', 'Example of hiding a worksheet' ], [ 'doc_properties.c', 'Example of setting workbook doc properties' ], [ 'doc_custom_properties.c','Example of setting custom doc properties' ], [ 'worksheet_protection.c', 'Example of enabling worksheet protection' ], [ 'hide_row_col.c', 'Example of hiding worksheet rows and columns' ], [ 'comments1.c', 'Example of adding cell comments to a worksheet' ], [ 'comments2.c', 'Example of adding cell comments with options' ], [ 'macro.c', 'Example of adding a VBA macro to a workbook' ], [ 'panes.c', 'Example of how to create worksheet panes' ], [ 'ignore_errors.c', 'Example of ignoring worksheet errors/warnings' ], [ 'lambda.c', 'Example of using the EXCEL 365+ LAMBDA() function' ], [ 'chart.c', 'Example of a simple column chart' ], [ 'chart_area.c', 'Examples of area charts' ], [ 'chart_bar.c', 'Examples of bar charts' ], [ 'chart_column.c', 'Examples of column charts' ], [ 'chart_line.c', 'Example of a line chart' ], [ 'chart_scatter.c', 'Examples of scatter charts' ], [ 'chart_radar.c', 'Examples of radar charts' ], [ 'chart_pie.c', 'Examples of pie charts' ], [ 'chart_doughnut.c', 'Examples of doughnut charts' ], [ 'chart_clustered.c', 'Examples of clustered category chart' ], [ 'chart_data_table.c', 'Examples of charts with data tables' ], [ 'chart_data_tools.c', 'Examples of charts data tools' ], [ 'chart_data_labels.c', 'Examples of charts data labels' ], [ 'chart_fonts.c', 'Examples of using charts fonts' ], [ 'chart_pattern.c', 'Examples of using charts patterns' ], [ 'chart_styles.c', 'Examples of built-in charts styles' ], [ 'chartsheet.c', 'Example of a chartsheet chart' ], ); # Convert the array refs to a hash for lookups. my %examples; for my $example (@examples) { $examples{$example->[0]} = 1; } my $in_list = 0; while ( my $line = <> ) { # Print all lines not in the