[Bio] / FigKernelPackages / gjolib.pm Repository:
ViewVC logotype

View of /FigKernelPackages/gjolib.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (download) (as text) (annotate)
Mon Dec 5 19:06:30 2005 UTC (14 years, 2 months ago) by olson
Branch: MAIN
CVS Tags: rast_rel_2009_05_18, rast_rel_2008_06_18, rast_rel_2008_06_16, rast_rel_2008_12_18, rast_rel_2008_07_21, rast_2008_0924, rast_rel_2008_04_23, rast_rel_2008_09_30, rast_rel_2009_0925, caBIG-05Apr06-00, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, mgrast_rel_2008_0625, rast_rel_2008_10_09, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, mgrast_rel_2008_1110, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, caBIG-13Feb06-00, rast_rel_2009_03_26, rast_rel_2008_11_24, rast_rel_2008_08_07
Changes since 1.1: +17 -0 lines
Added license words.

#
# Copyright (c) 2003-2006 University of Chicago and Fellowship
# for Interpretations of Genomes. All Rights Reserved.
#
# This file is part of the SEED Toolkit.
# 
# The SEED Toolkit is free software. You can redistribute
# it and/or modify it under the terms of the SEED Toolkit
# Public License. 
#
# You should have received a copy of the SEED Toolkit Public License
# along with this program; if not write to the University of Chicago
# at info@ci.uchicago.edu or the Fellowship for Interpretation of
# Genomes at veronika@thefig.info or download a copy from
# http://www.theseed.org/LICENSE.TXT.
#

package gjolib;

#  Invoke with:
#
#     use gjolib;


#  Exported functions:
#
#     file_root_name( $path )
#     script_name( )
#     wrap_text( $str [, $len [, $indent_1 [, $indent_n]]] )

require Exporter;

our @ISA = qw(Exporter);
our @EXPORT = qw(
        file_root_name
        script_name
        wrap_text
        );

use strict;


#-----------------------------------------------------------------------------
#  Return the base name of a file (no directory & remove 1 extension)
#
#     $root_name = file_root_name( $path )
#-----------------------------------------------------------------------------
sub file_root_name {
    $_ = shift;

    s/^.*\///;     # remove all directory prefixes
    s/\.[^.]*$//;  # remove one dot something suffix
    return $_;
}



#-----------------------------------------------------------------------------
#  Return the name of the invoked command
#
#     $scriptname = script_name( )
#-----------------------------------------------------------------------------
sub script_name {
    $_ = $0;
    s/^.*\///;     # remove all directory prefixes
    return $_;
}



#-----------------------------------------------------------------------------
#  Return a string with text wrapped to defined line lengths:
#
#     $wrapped_text = wrap_text( $str )                  # default len   =  80
#     $wrapped_text = wrap_text( $str, $len )            # default ind   =   0
#     $wrapped_text = wrap_text( $str, $len, $indent )   # default ind_n = ind
#     $wrapped_text = wrap_text( $str, $len, $indent_1, $indent_n )
#-----------------------------------------------------------------------------
sub wrap_text {
    my ($str, $len, $ind, $indn) = @_;

    defined($str)  || die "wrap_text called without a string\n";
    defined($len)  || ($len  =   80);
    defined($ind)  || ($ind  =    0);
    ($ind  < $len) || die "wrap error: indent greater than line length\n";
    defined($indn) || ($indn = $ind);
    ($indn < $len) || die "wrap error: indent_n greater than line length\n";

    $str =~ s/\s+$//;
    $str =~ s/^\s+//;
    my ($maxchr, $maxchr1);
    my (@lines) = ();

    while ($str) {
        $maxchr1 = ($maxchr = $len - $ind) - 1;
        if ($maxchr >= length($str)) {
            push @lines, (" " x $ind) . $str;
            last;
        }
        elsif ($str =~ /^(.{0,$maxchr1}\S)\s+(\S.*)$/) { # no expr in {}
            push @lines, (" " x $ind) . $1;
            $str = $2;
        }
        elsif ($str =~ /^(.{0,$maxchr1}-)(.*)$/) {
            push @lines, (" " x $ind) . $1;
            $str = $2;
        }
        else {
            push @lines, (" " x $ind) . substr($str, 0, $maxchr);
            $str = substr($str, $maxchr);
        }
        $ind = $indn;
    }

    return join("\n", @lines);
}


1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3