pike.git / lib / modules / Arg.pmod

version» Context lines:

pike.git/lib/modules/Arg.pmod:1:   //   // Argument parser   // By Martin Nilsson - // $Id: Arg.pmod,v 1.4 2008/05/03 14:18:53 nilsson Exp $ + // $Id: Arg.pmod,v 1.5 2008/05/03 17:14:50 nilsson Exp $   //      #pike __REAL_VERSION__      class OptLibrary   {       //! Base class for parsing an argument. Inherit this class to create    //! custom made option types.    class Opt
pike.git/lib/modules/Arg.pmod:25:    {    if(next) return next->get_value(argv, env);    return 0;    }       //! Should return a list of options that are parsed. To properly    //! chain argument parsers, return @expr{your_opts +    //! ::get_opts()@}.    array(string) get_opts()    { +  if(!next) return ({});    return next->get_opts();    }       static this_program `|(mixed thing)    {    if( !objectp(thing) || !thing->is_opt )    error("Can only or %O with another %O.\n",    this, this_program);       if( next )
pike.git/lib/modules/Arg.pmod:346:   // FIXME: Support for rc files? ( Opt x = Opt("--x")|INIFile(path, name); )   // FIXME: Support for type casts? ( Opt level = Integer(Opt("--level"));      class LowOptions   {    static inherit OptLibrary;       static mapping(string:Opt) opts = ([]);    static mapping(string:int(1..1)|string) values = ([]);    static array(string) argv; +  static string application;       static void create(array(string) _argv, void|mapping(string:string) env)    {    if(!env)    env = getenv();       // Make a list of all the arguments we can parse.    foreach(::_indices(2), string index)    {    mixed val = ::`[](index, 2);    if(objectp(val) && val->is_opt) opts[index]=val;    }    -  +  application = _argv[0];    argv = _argv[1..];    mapping(string:Opt) unset = opts+([]);       while(1)    {    if(!sizeof(argv)) break;       int(0..1)|string value;    foreach(unset; string index; Opt arg)    {
pike.git/lib/modules/Arg.pmod:412:    }       static int(0..1) unhandled_argument(array(string) argv,    mapping(string:string) env)    {    return 0;    }       static mixed cast(string to)    { -  if( to=="mapping" ) +  switch( to )    { -  +  case "mapping":    return values + ([ REST : argv ]); -  +  case "array": +  return argv;    }    return UNDEFINED;    }   }      //! The option parser class that contains all the argument objects.   //!   class Options   {    inherit LowOptions;
pike.git/lib/modules/Arg.pmod:446:    mapping(string:string) env)    {    if( !sizeof(argv) || argv[0]!="--help" ) return 0;       string s = index("help_pre");    if( s )    write( s+"\n" );       foreach(opts; string i; Opt opt)    { -  // FIXME: Make a list of the attibutes parsed by arg. -  +  write( opt->get_opts()*", " + "\n");    s = index(i+"_help");    if( s )    write( s ); // FIXME: Format    }       s = index("help_post");    if( s )    write( "\n"+s );    }