[#99856] [Ruby master Feature#17143] Improve support for warning categories — merch-redmine@...

Issue #17143 has been reported by jeremyevans0 (Jeremy Evans).

16 messages 2020/09/03

[#99868] [Ruby master Bug#17144] Tempfile.open { ... } does not unlink the file — eregontp@...

Issue #17144 has been reported by Eregon (Benoit Daloze).

15 messages 2020/09/03

[#99885] [Ruby master Feature#17145] Ractor-aware `Object#deep_freeze` — marcandre-ruby-core@...

Issue #17145 has been reported by marcandre (Marc-Andre Lafortune).

32 messages 2020/09/03

[#99903] [Ruby master Bug#17146] Queue operations are allowed after it is frozen — eregontp@...

Issue #17146 has been reported by Eregon (Benoit Daloze).

16 messages 2020/09/03

[#100016] [Ruby master Feature#17171] Why is the visibility of constants not affected by `private`? — marcandre-ruby-core@...

Issue #17171 has been reported by marcandre (Marc-Andre Lafortune).

10 messages 2020/09/15

[#100024] [Ruby master Bug#17175] Ruby 2.5: OpenSSL related test failures — jaruga@...

Issue #17175 has been reported by jaruga (Jun Aruga).

10 messages 2020/09/16

[#100025] [Ruby master Feature#17176] GC.enable_autocompact / GC.disable_autocompact — tenderlove@...

Issue #17176 has been reported by tenderlovemaking (Aaron Patterson).

11 messages 2020/09/16

[#100099] [Ruby master Bug#17184] No stdlib function to perform simple string replacement — sheerun@...

Issue #17184 has been reported by sheerun (Adam Stankiewicz).

18 messages 2020/09/24

[#100192] [Ruby master Bug#17197] Some Hash methods still have arity 2 instead of 1 — marcandre-ruby-core@...

Issue #17197 has been reported by marcandre (Marc-Andre Lafortune).

14 messages 2020/09/28

[#100200] [Ruby master Misc#17199] id outputed by inspect and to_s output does not allow to find actual object_id and vice-versa — baptiste.courtois@...

Issue #17199 has been reported by Annih (Baptiste Courtois).

7 messages 2020/09/28

[#100206] [Ruby master Misc#17200] DevelopersMeeting20201026Japan — mame@...

Issue #17200 has been reported by mame (Yusuke Endoh).

18 messages 2020/09/28

[#100239] [Ruby master Feature#17206] Introduce new Regexp option to avoid MatchData allocation — fatkodima123@...

Issue #17206 has been reported by fatkodima (Dima Fatko).

8 messages 2020/09/30

[ruby-core:100145] [Ruby master Feature#17056] Array#index: Allow specifying the position to start search as in String#index

From: mame@...
Date: 2020-09-25 13:41:48 UTC
List: ruby-core #100145
Issue #17056 has been updated by mame (Yusuke Endoh).


Hi, 

fatkodima (Dima Fatko) wrote in #note-8:
> to avoid updating all of them, I would prefer just add start index argument to `Array#index`, for consistency with `String#index`,

I agree with your approach. However, your PR changes not only `Array#index` but also `Array#find_index`. This brings another inconsistency: `Enumerable#find_index` does not accept "start", but `Array#find_index` does.

We discussed this ticket at today's dev-meeting, and @ko1 proposed removing `Array#find_index` so that `ary.find_index` invokes `Enumerable#find_index` instead of keeping it as an alias to `Array#index`, and matz agreed with the removal.

----------------------------------------
Feature #17056: Array#index: Allow specifying the position to start search as in String#index
https://bugs.ruby-lang.org/issues/17056#change-87720

* Author: TylerRick (Tyler Rick)
* Status: Open
* Priority: Normal
----------------------------------------
I have a use case of finding the first matching line within a given section in a file. After finding the line number of the start of the section, I want to find the first match after that line.

My workaround for now is to use `with_index`:

```ruby
lines = pathname.read.lines
section_start_line = lines.index {|line| line.start_with?(/#* #{section_name}/) }
lines.index.with_index {|line, i| i > section_start_line && line.include?(sought) }
```

I'd like to do it in a more concise way using a feature of `Array#index` that I propose here, which is analogous to `String#index`.

If the second parameter of `String#index` is present, it specifies the position in the string to begin the search:

```ruby
'abcabc'.index('a') # => 0
'abcabc'.index('a',2) # => 3
```

I would expect to also be able to do:

```ruby
'abcabc'.chars.index('a') # => 0
'abcabc'.chars.index('a', 2)
```

Using such feature, I would be able to do:

```ruby
lines.index(sought, section_start_line)
```

This would give Ruby better parity with other programming languages like Python:

```python
>>> list('abcabc')
['a', 'b', 'c', 'a', 'b', 'c']
>>> list('abcabc').index('a')
0
>>> list('abcabc').index('a', 2)
3
```

## End index

We can further think of an optional parameter to specify the position to end the search. The following languages allow specifying both start and end indexes:

- [Python](https://docs.python.org/3/tutorial/datastructures.html)
- [C#](https://docs.microsoft.com/en-us/dotnet/api/system.array.indexof?view=netcore-3.1)

Ruby's `String#index` does not have one, so we could make a separate proposal to add `end` to both methods at the same time.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next