> So unless there is a strong
> reason for adding this, rather than consistency, I would not go this
> route.

Personally I don't think it is an inconsistency because there is no
equivalent of String.trim_leading/1 (or the equivalent makes no sense,
or hardly has any use).

The need for String.trim_prefix/2 is because what actually solves the
problem (my use case) that I initially shows.

String.trim_leading could be considered an addition for consistency,
but I guess it could still be useful in some cases but its
implementation would not be as optimal as Sting.trim_prefix/2' s.


On Wed, 2 Mar 2022 14:56:19 +0100
José Valim <jose.va...@dashbit.co> wrote:

> Thanks for the proposal. I believe we don't support all patterns
> because it will be inefficient, especially the suffix/trailing
> functions. It is not necessarily trivial to implement it for regexes
> either (and regexes have their own mechanism to represent
> prefixes/suffixes).
> 
> The reason we don't have "trim_prefix" and "trim_suffix" is because
> there is no reasonable implementation of trim_prefix/1 and
> trim_suffix/1 - where no pattern to trim on is given (for example, it
> it to the behaviour of trim_leading/1 and trim_trailing/1). So we
> could add trim_prefix/2 and trim_suffix/2, but then it is
> inconsistent with other trim* functions. So unless there is a strong
> reason for adding this, rather than consistency, I would not go this
> route.
> 
> 
> 
> On Wed, Mar 2, 2022 at 2:25 PM 'eksperimental' via elixir-lang-core <
> elixir-lang-core@googlegroups.com> wrote:
> 
> > When starting to work in this implementation was wondering what
> > should be the return value of
> >
> >     String.trim_leading("--__--abc", [" ", "-", "_"])
> >
> >
> > and I realized that it should mimic String.replace_leading/3
> > Therefore it should returning "abc"
> >
> > Which leads me to think we should introduce  String.trim_prefix/2,
> > in order to be consistent with String.replace_prefix/3
> > where the same input as above should behave like this:
> >  
> >     iex> String.trim_prefix("--__--abc", [" ", "-", "_"])  
> >     "__--abc"
> >
> > Which also makes me think that String.replace_prefix should also
> > behave like String.replace/3 where the second argument (match) is a
> > pattern, not a string (ie. a string, list of  strings, or a compiled
> > search pattern). By introducing this last consistency change, the
> > implementation of the consistency changes for the other functions
> > mentioned above is straight-forward.
> >
> > So in short this consistency proposals suggests some functions to
> > support t:String.pattern/0 which could be a string, a list of
> > strings, or a compiled search pattern.
> >
> > 1. `String.replace_{leading, prefix, suffix, trailing}/3` to
> > support in its second argument (match)  t:String.pattern/0. Current
> > String.replace/4 supports t:String.pattern/0 | t:Regex.t/0, but for
> > the sake of simplifying this proposal I would leave out
> > Regexes out of the equation for now.
> >
> > 2. Introduce String.trim_{prefix, suffix}/2 which will support
> > t:String.pattern/0 as a its second arguments. These functions should
> > mimic String.replace_{prefix, suffix}/2
> >
> > 3. Add support for t:String.pattern/0 for String.{trim,
> > trim_leading, trim_trailing}/2 to support t:String.pattern/0 as its
> > second argument. These functions should mimic String.{replace,
> > replace_leading, replace_trailing}/3
> >
> > Please let me know what you think.
> >
> > --
> > You received this message because you are subscribed to the Google
> > Groups "elixir-lang-core" group.
> > To unsubscribe from this group and stop receiving emails from it,
> > send an email to elixir-lang-core+unsubscr...@googlegroups.com.
> > To view this discussion on the web visit
> > https://groups.google.com/d/msgid/elixir-lang-core/621f703a.1c69fb81.2b06.fa97SMTPIN_ADDED_MISSING%40gmr-mx.google.com
> > .
> >  
> 

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/621fb346.1c69fb81.37fc8.dec4SMTPIN_ADDED_MISSING%40gmr-mx.google.com.

Reply via email to