poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 0/4] Implement version tools


From: Arsen Arsenović
Subject: Re: [PATCH v2 0/4] Implement version tools
Date: Mon, 30 Jan 2023 11:25:49 +0100

Morning,

"Jose E. Marchesi" <jemarch@gnu.org> writes:

>> Evening,
>>
>> I've addressed the few notes from before and refactored to operate
>> around the "parse into struct" paradigm.  Range diff included.
>
> I find it difficult to read range diffs.  For subsequent versions of
> patches, we prefer to get full patches plus a little changelog like
>
> [Changes from V1:
> - Foo was changed to bar.
> - Baz was a quux after all.]

Sure, will keep in mind.

>> OK for master?
>
> The series i OK for master.
> Thanks!  This is very nice stuff.  Now pickles can do poke version control.

Pushed, thanks.  Yes, I think it'll be quite handy :)

>>
>> Thanks in advance, have a great night.
>>
>> Arsen Arsenović (4):
>>   std.pk: Implement strrchr
>>   std.pk: Refactor atoi into strtoi
>>   std.pk: Implement strtok
>>   std.pk: Implement pk_version_parse, pk_vercmp
>>
>>  ChangeLog                      |  54 ++++++
>>  autoconf/poke.m4               |   2 +-
>>  doc/poke.texi                  | 285 ++++++++++++++++++++++++++++++-
>>  libpoke/std.pk                 | 303 ++++++++++++++++++++++++++++++++-
>>  testsuite/poke.std/std-test.pk | 130 ++++++++++++++
>>  5 files changed, 765 insertions(+), 9 deletions(-)
>>
>> Range-diff against v1:
>> 1:  c8f16234 ! 1:  6bf64f45 std.pk: Implement strrchr
>>     @@ doc/poke.texi: work on strings:
>>       * ltrim::              Remove leading characters.
>>       * rtrim::              Remove trailing characters.
>>      -* strchr::             Locate a character in a string.
>>     -+* strchr::              Locate a character in a string, from the 
>> beginning.
>>     ++* strchr::             Locate a character in a string, from the 
>> beginning.
>>      +* strrchr::            Locate a character in a string, from the end.
>>       @end menu
>>       
>> 2:  87fd4129 = 2:  c7ab6b8b std.pk: Refactor atoi into strtoi
>> 3:  8018f305 ! 3:  b30481c4 std.pk: Implement strtok
>>     @@ ChangeLog
>>      +       (String Functions): Add strtok to menu.
>>      +       (Concept Index): Merge fn -> cp, as there's not enough use of 
>> the
>>      +       function index to justify separate section currently.
>>     -+       * libpoke/std.pk (Tokenizer): New type.  Holds the persistent
>>     ++       * libpoke/std.pk (String_Tokenizer): New type.  Holds the 
>> persistent
>>      +       state of the strtok-like operation.
>>     -+       (strtok): New function.  Returns a new Tokenizer.
>>     -+       (Tokenizer): New type.  Holds tokenization state.
>>     ++       (strtok): New function.  Returns a new String_Tokenizer.
>>     ++       (String_Tokenizer): New type.  Holds tokenization state.
>>      +       * testsuite/poke.std/std-test.pk: Add strtok test.
>>      +
>>       2023-01-29  Arsen Arsenović  <arsen@aarsen.me>
>>     @@ ChangeLog
>>       ## doc/poke.texi ##
>>      @@ doc/poke.texi: work on strings:
>>       * rtrim::              Remove trailing characters.
>>     - * strchr::              Locate a character in a string, from the 
>> beginning.
>>     + * strchr::             Locate a character in a string, from the 
>> beginning.
>>       * strrchr::            Locate a character in a string, from the end.
>>     -+* strtok::              String tokenization.
>>     ++* strtok::             String tokenization.
>>       @end menu
>>       
>>       @node ltrim
>>     @@ doc/poke.texi: It returns the index of the last occurrence of the 
>> character @var
>>      +this API are:
>>      +
>>      +@example
>>     -+type Tokenizer =
>>     ++type String_Tokenizer =
>>      +  struct
>>      +  @{
>>      +    uint<64> i;
>>     @@ doc/poke.texi: It returns the index of the last occurrence of the 
>> character @var
>>      +    method poprdelim = (string @var{delimiters}) string: @{ @dots{} @}
>>      +  @}
>>      +
>>     -+fun strtok = (string @var{a}) Tokenizer: @{ @dots{} @}
>>     ++fun strtok = (string @var{a}) String_Tokenizer: @{ @dots{} @}
>>      +@end example
>>      +
>>     -+@deftypefun Tokenizer strtok (string @var{a})
>>     ++@deftypefun String_Tokenizer strtok (string @var{a})
>>      +Creates a new tokenizer for the string @var{a}, initially on the zero
>>      +position.
>>      +@end deftypefun
>>      +
>>     -+@cindex @code{Tokenizer}
>>     -+The members of the @code{Tokenizer} class are:
>>     ++@cindex @code{String_Tokenizer}
>>     ++The members of the @code{String_Tokenizer} class are:
>>      +
>>     -+@deftypeivar Tokenizer uint<64> i
>>     ++@deftypeivar String_Tokenizer uint<64> i
>>      +Offset to the next character to be tokenized, i.e. to the first
>>      +character that has not already been consumed.
>>      +@end deftypeivar
>>      +
>>     -+@deftypeivar Tokenizer string str
>>     ++@deftypeivar String_Tokenizer string str
>>      +The string being tokenized.  This string is never tokenized.
>>      +@end deftypeivar
>>      +
>>     -+@deftypeivar Tokenizer uint<32> more
>>     ++@deftypeivar String_Tokenizer uint<32> more
>>      +A read-only computed property whose value is truthy if there's more
>>      +characters and falsey otherwise.
>>      +@end deftypeivar
>>      +
>>     -+@deftypemethod Tokenizer char poke ()
>>     ++@deftypemethod String_Tokenizer char poke ()
>>      +Returns the first unread character of the string, but does not advance
>>      +the @var{i} offset.
>>      +
>>      +Raises @code{E_out_of_bounds} if at the end of the string.
>>      +@end deftypemethod
>>      +
>>     -+@deftypemethod Tokenizer char peek ()
>>     ++@deftypemethod String_Tokenizer char peek ()
>>      +Returns the first unread character of the string, and advances the
>>      +tokenizer.
>>      +
>>      +Raises @code{E_out_of_bounds} if at the end of the string.
>>      +@end deftypemethod
>>      +
>>     -+@deftypemethod Tokenizer int<64> pop_number (int<32> @var{base} = 10)
>>     ++@deftypemethod String_Tokenizer int<64> pop_number (int<32> @var{base} 
>> = 10)
>>      +Returns the number at the start of the string and advances the
>>      +tokenizer in the given @var{base}.  The bases that are supported are
>>      +the same as for @code{strtoi}.
>>     @@ doc/poke.texi: It returns the index of the last occurrence of the 
>> character @var
>>      +Raises @code{E_out_of_bounds} if at the end of the string.
>>      +@end deftypemethod
>>      +
>>     -+@deftypemethod Tokenizer string popdelim (string @var{delim})
>>     ++@deftypemethod String_Tokenizer string popdelim (string @var{delim})
>>      +Returns the substring up to the first character also present in the
>>      +string @var{delim}.  Advances the tokenizer to after the delimiter
>>      +character (i.e. it consumes the delimiter character).
>>     @@ doc/poke.texi: It returns the index of the last occurrence of the 
>> character @var
>>      +Raises @code{E_out_of_bounds} if at the end of the string.
>>      +@end deftypemethod
>>      +
>>     -+@deftypemethod Tokenizer string poprdelim (string @var{delim})
>>     ++@deftypemethod String_Tokenizer string poprdelim (string @var{delim})
>>      +Returns the substring up to the last character also present in the
>>      +string @var{delim}.  Advances the tokenizer to after the delimiter
>>      +character (i.e. it consumes the delimiter character).
>>     @@ libpoke/std.pk: fun isxdigit = (uint<8> c) int<32>:
>>      +
>>      +/* A helper object to tokenize a string.  */
>>      +
>>     -+type Tokenizer =
>>     ++type String_Tokenizer =
>>      +  struct
>>      +  {
>>      +    uint<64> i;
>>     @@ libpoke/std.pk: fun isxdigit = (uint<8> c) int<32>:
>>      +    }
>>      +  };
>>      +
>>     -+fun strtok = (string a) Tokenizer:
>>     ++fun strtok = (string a) String_Tokenizer:
>>      +{
>>     -+  return Tokenizer { str = a, i = 0 };
>>     ++  return String_Tokenizer { str = a, i = 0 };
>>      +}
>>      
>>       ## testsuite/poke.std/std-test.pk ##
>> 4:  a743af87 < -:  -------- std.pk: Implement pk_vercmp
>> -:  -------- > 4:  3f4c91c2 std.pk: Implement pk_version_parse, pk_vercmp


-- 
Arsen Arsenović

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]