pike.git / lib / modules / Arg.pmod

version» Context lines:

pike.git/lib/modules/Arg.pmod:506:    foreach(unset; string index; Opt arg)    {    value = arg->get_value(({}), env, values[index]);    if(value)    values[index] = value;    }    }       }    -  //! -  protected int(0..1) unhandled_argument(array(string) argv, -  mapping(string:string) env) +  protected string index(string i)    { -  return 0; -  } -  -  //! -  protected mixed cast(string to) +  string s = ::`[](i, this, 0); +  if( !s ) return 0; +  if( !stringp(s) ) error("%O is not a string.\n", i); +  if( sizeof(s) )    { -  switch( to ) -  { -  case "mapping": -  return values + ([ REST : argv ]); -  case "array": -  return argv; +  return s;    } -  return UNDEFINED; +  return 0;    } - } +     - //! The option parser class that contains all the argument objects. - //! - class Options +  void usage()    { -  inherit LowOptions; -  -  protected mixed `[](mixed id) -  { -  if( id==REST ) return argv; -  if( id==PATH ) return application; -  if( id==APP ) return basename(application); -  return values[id]; -  } -  -  protected mixed `->(string id) -  { -  return values[id]; -  } -  -  //! -  protected int(0..1)|string unhandled_argument(array(string) argv, -  mapping(string:string) env) -  { -  if( !sizeof(argv) || argv[0]!="--help" ) return 0; -  if(!values->help) values->help=1; -  +     string s = index("help_pre");    if( s )    write( "%s\n", s );       foreach(opts; string i; Opt opt)    {    string opts = opt->get_opts()*", ";    s = index(i+"_help");    if ((sizeof(opts) > 23) || !s) {    write( "\t" + opts + "\n");
pike.git/lib/modules/Arg.pmod:593:    }    }    }    }       s = index("help_post");    if( s )    write( "%s\n", s );    }    -  protected string index(string i) +  //! +  protected int(0..1) unhandled_argument(array(string) argv, +  mapping(string:string) env)    { -  string s = ::`[](i, this, 0); -  if( !s ) return 0; -  if( !stringp(s) ) error("%O is not a string.\n", i); -  if( sizeof(s) ) +  return 0; +  } +  +  //! +  protected mixed cast(string to)    { -  return s; +  switch( to ) +  { +  case "mapping": +  return values + ([ REST : argv ]); +  case "array": +  return argv;    } -  return 0; +  return UNDEFINED;    }   }    -  + //! The option parser class that contains all the argument objects. + //! + class Options + { +  inherit LowOptions;    -  +  //! Options that trigger help output. +  Opt help = NoOpt("--help"); +  string help_help = "Help about usage."; +  +  protected void create(array(string) argv, void|mapping(string:string) env) +  { +  ::create(argv, env); +  +  if (values->help) { +  usage(); +  } +  } +  +  protected mixed `[](mixed id) +  { +  if( id==REST ) return argv; +  if( id==PATH ) return application; +  if( id==APP ) return basename(application); +  return values[id]; +  } +  +  protected mixed `->(string id) +  { +  return values[id]; +  } +  +  //! +  protected int(0..1) unhandled_argument(array(string) argv, +  mapping(string:string) env) +  { +  if( !sizeof(argv) || argv[0]!="--help" ) return 0; +  if(!values->help) values->help=1; +  } + } +  +    // --- Simple interface      class SimpleOptions   //! Options parser with a unhandled_argument implementation that   //! parses most common argument formats.   {    inherit LowOptions;       //! Handles arguments as described in @[Arg.parse]    int(0..1) unhandled_argument(array(string) argv, mapping(string:string) env)