[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/ -> less.pm (source)

   1  package less;
   2  use strict;
   3  use warnings;
   4  
   5  our $VERSION = '0.02';
   6  
   7  sub _pack_tags {
   8      return join ' ', @_;
   9  }
  10  
  11  sub _unpack_tags {
  12      return grep { defined and length }
  13          map  { split ' ' }
  14          grep {defined} @_;
  15  }
  16  
  17  sub of {
  18      my $class = shift @_;
  19  
  20      # If no one wants the result, don't bother computing it.
  21      return unless defined wantarray;
  22  
  23      my $hinthash = ( caller 0 )[10];
  24      my %tags;
  25      @tags{ _unpack_tags( $hinthash->{$class} ) } = ();
  26  
  27      if (@_) {
  28          exists $tags{$_} and return !!1 for @_;
  29          return;
  30      }
  31      else {
  32          return keys %tags;
  33      }
  34  }
  35  
  36  sub import {
  37      my $class = shift @_;
  38  
  39      @_ = 'please' if not @_;
  40      my %tags;
  41      @tags{ _unpack_tags( @_, $^H{$class} ) } = ();
  42  
  43      $^H{$class} = _pack_tags( keys %tags );
  44      return;
  45  }
  46  
  47  sub unimport {
  48      my $class = shift @_;
  49  
  50      if (@_) {
  51          my %tags;
  52          @tags{ _unpack_tags( $^H{$class} ) } = ();
  53          delete @tags{ _unpack_tags(@_) };
  54          my $new = _pack_tags( keys %tags );
  55  
  56          if ( not length $new ) {
  57              delete $^H{$class};
  58          }
  59          else {
  60              $^H{$class} = $new;
  61          }
  62      }
  63      else {
  64          delete $^H{$class};
  65      }
  66  
  67      return;
  68  }
  69  
  70  1;
  71  
  72  __END__
  73  
  74  =head1 NAME
  75  
  76  less - perl pragma to request less of something
  77  
  78  =head1 SYNOPSIS
  79  
  80      use less 'CPU';
  81  
  82  =head1 DESCRIPTION
  83  
  84  This is a user-pragma. If you're very lucky some code you're using
  85  will know that you asked for less CPU usage or ram or fat or... we
  86  just can't know. Consult your documentation on everything you're
  87  currently using.
  88  
  89  For general suggestions, try requesting C<CPU> or C<memory>.
  90  
  91      use less 'memory';
  92      use less 'CPU';
  93      use less 'fat';
  94  
  95  If you ask for nothing in particular, you'll be asking for C<less
  96  'please'>.
  97  
  98      use less 'please';
  99  
 100  =head1 FOR MODULE AUTHORS
 101  
 102  L<less> has been in the core as a "joke" module for ages now and it
 103  hasn't had any real way to communicating any information to
 104  anything. Thanks to Nicholas Clark we have user pragmas (see
 105  L<perlpragma>) and now C<less> can do something.
 106  
 107  You can probably expect your users to be able to guess that they can
 108  request less CPU or memory or just "less" overall.
 109  
 110  If the user didn't specify anything, it's interpreted as having used
 111  the C<please> tag. It's up to you to make this useful.
 112  
 113    # equivalent
 114    use less;
 115    use less 'please';
 116  
 117  =head2 C<< BOOLEAN = less->of( FEATURE ) >>
 118  
 119  The class method C<< less->of( NAME ) >> returns a boolean to tell you
 120  whether your user requested less of something.
 121  
 122    if ( less->of( 'CPU' ) ) {
 123        ...
 124    }
 125    elsif ( less->of( 'memory' ) ) {
 126  
 127    }
 128  
 129  =head2 C<< FEATURES = less->of() >>
 130  
 131  If you don't ask for any feature, you get the list of features that
 132  the user requested you to be nice to. This has the nice side effect
 133  that if you don't respect anything in particular then you can just ask
 134  for it and use it like a boolean.
 135  
 136    if ( less->of ) {
 137        ...
 138    }
 139    else {
 140        ...
 141    }
 142  
 143  =head1 CAVEATS
 144  
 145  =over
 146  
 147  =item This probably does nothing.
 148  
 149  =item This works only on 5.10+
 150  
 151  At least it's backwards compatible in not doing much.
 152  
 153  =back
 154  
 155  =cut


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1