diff options
author | Karl Berry <karl@freefriends.org> | 2012-06-02 22:04:37 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-06-02 22:04:37 +0000 |
commit | 7bcf7f61d7372d3df64de4b8f8ec361a436622be (patch) | |
tree | 0d6726c14f34e3c63bd0dcfd6b3b9617c7b7243d /Master/texmf-dist/doc | |
parent | 1be4c489af95633ffb30295d7aa468f7ba72f263 (diff) |
mycv_split_contents.pl in scripts/, per author
git-svn-id: svn://tug.org/texlive/trunk@26807 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/latex/mycv/mycv_split_contents.pl | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/Master/texmf-dist/doc/latex/mycv/mycv_split_contents.pl b/Master/texmf-dist/doc/latex/mycv/mycv_split_contents.pl deleted file mode 100644 index 1fc172764dc..00000000000 --- a/Master/texmf-dist/doc/latex/mycv/mycv_split_contents.pl +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/perl - -# ------------------------------------------------------- -# Copyright 2012 Ghersi Andrea (ghanhawk@gmail.com). -# -# This work may be distributed and/or modified under the -# conditions of the LaTeX Project Public License version -# 1.3c, available at 'http://www.latex-project.org/lppl'. -# ------------------------------------------------------- - -# $Id: mycv_split_contents.pl 89 2012-05-19 18:23:03Z ghangenit $ - -use Getopt::Long; -use File::Path; -use warnings; -use strict; -use Cwd; - -# hashes with errors and warnings messages - -my %errors = ( - OME => "$0: ERROR opening <%s> in output mode (CWD: %s): %s\n", - IME => "$0: ERROR opening <%s> in input mode (CWD: %s): %s\n", - NIF => "$0: ERROR: no input file provided!\nUse the option <-i infile>.\n", - NOD => "$0: ERROR: no output dir. provided!\nUse the option <-o outdir>.\n", - IOE => "$0: ERROR: input file and output dir are the same!\n" -); - -my %warnings = ( - NVC => "WARNING:: <%s> is not recognized as a valid component!\n" . - "A component can only be 'header', 'body' or 'footer'.\n" -); - -my $outdir = 'Contents'; # default output dir -my $infile = 'cv_contents.tex'; # default input file -my $cwd = getcwd(); # current directory -my %opt = (); # hash for options - -### -### - -sub _usage() -{ - print STDERR << "EOF"; - - Usage: $0 [-h] [-e] [-i infile] [-o outdir] [-m modelfile] - Version <1.0> - - Options: - ======== - - -o outdir \t : uses <outdir> as output dir {default: 'Contents'} - -m mdlfile \t : writes basic model directives to the <mdlfile> file - -i infile \t : uses <infile> as input file {default: 'cv_contents.tex'} - -e \t : keeps file names extension in model directives - -h \t : this help message - - Examples: - ========= - - 1) Splits the input file 'cv_contents.tex' into multiple files (they - will be created in the directory 'Contents'), as specified in the - file itself - the input file is not modified: - - [$0 -i cv_contents.tex] - - 2) As above but, in addiction, a basic model file (model-spl.tex) for - multiple files is created (in the model directives, the file names - extension will be removed): - - [$0 -i cv_contents.tex -m model-spl.tex] - - 3) As above, but file names in the model directives will keep their - own extension: - - [$0 -i cv_contents.tex -m model-spl.tex -e] - -EOF - exit 0; -} - -### -### - -sub mcdie { printf STDERR @_, $!; exit 1; } - -### -### - -sub processCommandLine() -{ - GetOptions ( - 'o=s' => \$opt{o}, 'i=s' => \$opt{i}, - 'm=s' => \$opt{m}, 'h' => \$opt{h}, - 'e' => \$opt{e} - ) or _usage(); - - $opt{h} and _usage(); - _usage() if ( $#ARGV > -1 ); - - _dealWithInOutFiles(); - return \%opt; -} - -### -### - -sub _dealWithInOutFiles -{ - $opt{o} and $outdir = $opt{o}; - $opt{i} and $infile = $opt{i}; - - if ( $infile eq "" ){ die $errors{NIF} } - if ( $outdir eq "" ){ die $errors{NOD} } - if ( $infile eq $outdir ){ die $errors{IOE} } - - $opt{outdir} = $outdir; - $opt{infile} = $infile; -} - -### -### - -sub fileprocess ($) -{ - my $cmdoptions = shift; - my $outdir = $cmdoptions->{'outdir'}; - my $linehook = '###'; - my %components; - my $sep = '::'; - - open INFILE, $cmdoptions->{'infile'} or - mcdie( $errors{IME}, $cmdoptions->{'infile'}, $cwd ); - - mkpath($outdir); - (-d $outdir) or mcdie( $errors{OME}, $outdir, $cwd ); - - while ( my $line = <INFILE> ) - { - my @info; my $ctype=''; - if ( $line =~ /$linehook/ ) - { - PROCESSLINE: - @info = split(/$sep/, $line); - - $ctype=$info[2]; # contains the component type (header,...) - chomp($ctype); - - if ( $info[2] ) - { - if ( $ctype =~ /header/ ) { push (@{$components{h}}, $line) } - elsif ( $ctype =~ /body/ ){ push (@{$components{b}}, $line) } - elsif ( $ctype =~ /footer/ ){ push (@{$components{f}}, $line) } - else { printf STDERR $warnings{NVC}, $ctype } - } - - if ( $info[1] ) # contains the file name to write - { - open OUTFILE, '>', "$outdir/$info[1]" or - mcdie( $errors{OME}, $info[1], $cwd ); - - while ( $line = <INFILE> ) - { - if ( $line =~ /$linehook/ ) - { - close OUTFILE; - goto PROCESSLINE; - } - else { print OUTFILE $line } # write to file - } - } - } - } - - close INFILE; - if ( $cmdoptions->{'m'} ) - { - open OUTFILE, '>', $cmdoptions->{'m'} or - mcdie( $errors{OME}, $cmdoptions->{'m'}, $cwd ); - - for my $key ( keys %components ) - { - if ( $key eq "b" ) { print OUTFILE "\\def\\bodylayoutlist{%\n" } - elsif ( $key eq "h" ) { print OUTFILE "\\def\\headerlayoutlist{%\n" } - elsif ( $key eq "f" ) { print OUTFILE "\\def\\footerlayoutlist{%\n" } - - my @info; my $cnt=0; my $fname=''; - while ( $components{$key}[$cnt] ) - { - @info = split(/$sep/, $components{$key}[$cnt]); - $cnt++; - - $fname=$info[1]; - if ( !$cmdoptions->{'e'} ){ $fname =~ s{\.[^.]+$}{} } - if ( $info[1] ){ chomp($fname); print OUTFILE " $fname@" } - if ( $info[3] ){ chomp($info[3]); print OUTFILE ":$info[3]" } - print OUTFILE ",\n"; - } - print OUTFILE "}\n"; - } - close OUTFILE; - } -} - -## -## MAIN -## - -fileprocess( processCommandLine() ); |