[Click] Args with multiple identical keywords

Sascha Alexander Jopen jopen at informatik.uni-bonn.de
Wed Aug 8 06:49:49 EDT 2012


Thank you Eddie. This is exactly what i was looking for.

Sascha

On 08/08/12 04:57, Eddie Kohler wrote:
> 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
>>> <jopen at informatik.uni-bonn.de> 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
>>>> click at amsterdam.lcs.mit.edu
>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>



More information about the click mailing list