[#99426] [Ruby master Bug#17098] Float#negative? reports negative zero as not negative — chris@...

Issue #17098 has been reported by chrisseaton (Chris Seaton).

12 messages 2020/08/01

[#99449] [Ruby master Bug#17100] Ractor: a proposal for new concurrent abstraction without thread-safety issues — ko1@...

Issue #17100 has been reported by ko1 (Koichi Sasada).

41 messages 2020/08/03

[#99474] [Ruby master Feature#17103] Add a :since option to ObjectSpace.dump_all — jean.boussier@...

Issue #17103 has been reported by byroot (Jean Boussier).

9 messages 2020/08/04

[#99485] [Ruby master Misc#17104] Why are interpolated string literals frozen? — bughitgithub@...

Issue #17104 has been reported by bughit (bug hit).

23 messages 2020/08/05

[#99499] [Ruby master Bug#17105] A single `return` can return to two different places in a proc inside a lambda inside a method — eregontp@...

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

10 messages 2020/08/06

[#99582] [Ruby master Feature#17122] Add category to Warning#warn — eileencodes@...

Issue #17122 has been reported by eileencodes (Eileen Uchitelle).

20 messages 2020/08/13

[#99700] [Ruby master Bug#17129] bundle install `eventmachine` and `sassc` fails since 914b2208ab3eddec478cdc3e079e6c30d0f0892c — yasuo.honda@...

SXNzdWUgIzE3MTI5IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHlhaG9uZGEgKFlhc3VvIEhvbmRhKS4N

9 messages 2020/08/26

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

From: fatkodima123@...
Date: 2020-08-30 23:28:44 UTC
List: ruby-core #99780
Issue #17056 has been updated by fatkodima (Dima Fatko).


I have implemented an `offset` parameter for `Array#index` - https://github.com/ruby/ruby/pull/3448
Will adjust to more methods if asked.

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

* 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