Re: Args with multiple identical keywords
Eddie Kohler <[email protected]> Tue, 07 Aug 2012 22:57:48 -0400
| Newsgroups | gmane.network.routing.click |
|---|---|
| Organization | Harvard University |
| Message-ID | <[email protected]> |
Hi Sascha, This is a good point. Unfortunately, the different argument order in read_all_with was important for hidden reasons, specifically EtherAddressArg with an 'unsigned char *' argument. Furthermore the IPAddressArg::parse function for vectors actually parses a SINGLE SPACE-SEPARATED argument; it doesn't work for multiple arguments. I checked in a number of changes that should fix this issue. The changes also add a new "Args::read_all()" method, which calls a parser once per argument and collects the results in a vector. Hope this is useful. Eddie On 8/7/12 7:44 AM, Sascha Alexander Jopen wrote: > Hello, > > while using read_all_with() i found different parse method signatures in > the parsers AnyArg and IPAddressArg for parsing into Vectors. I propose > to change the parse() signature of AnyArg for Vectors, as well as the > parser call in base_read_all_with() to have the same order of the > arguments as all other parse() methods. This may break existing custom > parsers, however. > > You can find the necessary changes in the attached patch, if you think > this is a reasonable change. > > Regards, > Sascha > > > On 07/30/12 19:37, Eddie Kohler wrote: >> Yes, try Args::read_all_with(). >> >> Eddie >> >> >> On Mon, Jul 30, 2012 at 7:35 AM, Sascha Alexander Jopen >> <[email protected]> wrote: >>> Hey, >>> >>> is it possible to parse argument lists containing the same keyword >>> multiple times, having each occurence of the keyword values assigned to >>> another variable? >>> >>> For example, would like to parse a configuration like this: >>> >>> SomeElement(FIRSTKEYWORD 1, FIRSTKEYWORD 2, ..., SECONDKEYWORD a, >>> SECONDKEYWORD b, ...); >>> >>> Currently only the last value of a keyword group is parsed and returned >>> as a result after consume() and all additional identical keyword >>> arguments are removed from the configuration string. >>> >>> The only solution i see so far is having a single keyword and >>> concatenating all values into a single argument to this keyword. This >>> keyword is then parsed as a string, splitting the string and passing the >>> parts to additional argument parsers of the right type. >>> >>> Does anybody know a better solution, which can directly be handled by >>> the argument parser? >>> >>> Regards, >>> Sascha >>> _______________________________________________ >>> click mailing list >>> [email protected] >>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click >