App-SpreadsheetUtils
view release on metacpan or search on metacpan
lib/App/SpreadsheetUtils.pm view on Meta::CPAN
return [400, "Unknown field '$field'"] unless $args->{ignore_unknown_fields};
next FIELD;
}
next if grep { $field eq $_ } @selected_fields;
push @selected_fields, $field;
}
}
if (defined $args->{exclude_fields}) {
FIELD:
for my $field (@{ $args->{exclude_fields} }) {
unless (defined $field_idxs->{$field}) {
return [400, "Unknown field '$field'"] unless $args->{ignore_unknown_fields};
next FIELD;
}
@selected_fields = grep { $field ne $_ } @selected_fields;
}
}
if ($args->{show_selected_fields}) {
return [200, "OK", \@selected_fields];
}
#my %selected_field_idxs;
#$selected_field_idxs{$_} = $fields_idx->{$_} for @selected_fields;
my @selected_field_idxs_array;
push @selected_field_idxs_array, $field_idxs->{$_} for @selected_fields;
[100, "Continue", [\@selected_fields, \@selected_field_idxs_array]];
}
our $xcomp_spreadsheet_files = [filename => {file_ext_filter => qr/\A(?:sxc|ods|xls|xlsx|xlsm|csv)\z/i}];
our %argspecs_csv_input = (
# input_format?
);
our %argspecs_csv_output = (
output_header => {
summary => 'Whether output CSV should have a header row',
schema => 'bool*',
description => <<'_',
By default, a header row will be output *if* input CSV has header row. Under
`--output-header`, a header row will be output even if input CSV does not have
header row (value will be something like "col0,col1,..."). Under
`--no-output-header`, header row will *not* be printed even if input CSV has
header row. So this option can be used to unconditionally add or remove header
row.
_
tags => ['category:output'],
},
output_tsv => {
summary => "Inform that output file is TSV (tab-separated) format instead of CSV",
schema => 'bool*',
description => <<'_',
This is like `--input-tsv` option but for output instead of input.
Overriden by `--output-sep-char`, `--output-quote-char`, `--output-escape-char`
options. If one of those options is specified, then `--output-tsv` will be
ignored.
_
tags => ['category:output'],
},
output_sep_char => {
summary => 'Specify field separator character in output CSV, will be passed to Text::CSV_XS',
schema => ['str*', len=>1],
description => <<'_',
This is like `--input-sep-char` option but for output instead of input.
Defaults to `,` (comma). Overrides `--output-tsv` option.
_
tags => ['category:output'],
},
output_quote_char => {
summary => 'Specify field quote character in output CSV, will be passed to Text::CSV_XS',
schema => ['str*', len=>1],
description => <<'_',
This is like `--input-quote-char` option but for output instead of input.
Defaults to `"` (double quote). Overrides `--output-tsv` option.
_
tags => ['category:output'],
},
output_escape_char => {
summary => 'Specify character to escape value in field in output CSV, will be passed to Text::CSV_XS',
schema => ['str*', len=>1],
description => <<'_',
This is like `--input-escape-char` option but for output instead of input.
Defaults to `\\` (backslash). Overrides `--output-tsv` option.
_
tags => ['category:output'],
},
);
our %argspecopt_input_filename = (
input_filename => {
summary => 'Input spreadsheet file',
description => <<'_',
Use `-` to read from stdin.
Encoding of input file is assumed to be UTF-8.
_
schema => 'filename*',
default => '-',
'x.completion' => $xcomp_spreadsheet_files,
tags => ['category:input'],
},
);
# TEMP
our %argspecopt0_input_filename = (
input_filename => {
summary => 'Input spreadsheet file',
description => <<'_',
Use `-` to read from stdin.
Encoding of input file is assumed to be UTF-8.
_
schema => 'filename*',
default => '-',
'x.completion' => $xcomp_spreadsheet_files,
pos => 0,
tags => ['category:input'],
},
);
our %argspecopt_input_filenames = (
input_filenames => {
'x.name.is_plural' => 1,
'x.name.singular' => 'input_filename',
summary => 'Input spreadsheet files',
description => <<'_',
Use `-` to read from stdin.
_
schema => ['array*', of=>'filename*'],
default => ['-'],
'x.element_completion' => $xcomp_spreadsheet_files,
tags => ['category:input'],
},
( run in 0.799 second using v1.01-cache-2.11-cpan-39bf76dae61 )