[#103241] [Ruby master Bug#17777] 2.6.7 fails to build on macOS: implicit declaration of function 'rb_native_mutex_destroy' is invalid in C99 — eregontp@...
Issue #17777 has been reported by Eregon (Benoit Daloze).
17 messages
2021/04/05
[#103305] [Ruby master Feature#17785] Allow named parameters to be keywords — marcandre-ruby-core@...
Issue #17785 has been reported by marcandre (Marc-Andre Lafortune).
21 messages
2021/04/08
[#103342] [Ruby master Feature#17790] Have a way to clear a String without resetting its capacity — jean.boussier@...
Issue #17790 has been reported by byroot (Jean Boussier).
14 messages
2021/04/09
[#103388] [ANN] Multi-factor Authentication of bugs.ruby-lang.org — SHIBATA Hiroshi <hsbt@...>
Hello,
5 messages
2021/04/12
[#103414] Re: [ANN] Multi-factor Authentication of bugs.ruby-lang.org
— Martin J. Dürst <duerst@...>
2021/04/13
SXMgdGhlcmUgYSB3YXkgdG8gdXNlIHRoaXMgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIGZv
[#103547] List of CI sites to check — Martin J. Dürst <duerst@...>
SGVsbG8gZXZlcnlib2R5LAoKRHVlIHRvIHZhcmlvdXMgcGVyc29uYWwgcmVhc29ucywgSSBoYXZl
4 messages
2021/04/22
[#103596] [Ruby master Feature#17830] Add Integer#previous and Integer#prev — rafasoaresms@...
Issue #17830 has been reported by rafasoares (Rafael Soares).
9 messages
2021/04/26
[ruby-core:103266] [Ruby master Feature#12133] Ability to exclude start when defining a range
From:
arima.yasuhiro@...
Date:
2021-04-07 06:49:26 UTC
List:
ruby-core #103266
Issue #12133 has been updated by arimay (yasuhiro arima).
Definition of a range object that exclude a start position, and its shorthand notation.
Since we have #exclude_end? we also want #exclude_begin? .
class Range
def initialize(begin, end, exclude_end=false, exclude_begin=false)
def exclude_begin?
Shorthand, by known as the neko operator.
notation meaning new
b..e b <= v <= e Range.new(b, e)
b..^e b <= v < e Range.new(b, e, true) # the same as "b...e"
b^..e b < v <= e Range.new(b, e, false, true)
b^..^e b < v < e Range.new(b, e, true, true)
with nil.
..e v <= e Range.new(nil, e)
^..e v <= e Range.new(nil, e)
..^e v < e Range.new(nil, e, true)
^..^e v < e Range.new(nil, e, true)
b.. b <= v Range.new(b, nil, false, false)
b..^ b <= v Range.new(b, nil, false, false)
b^.. b < v Range.new(b, nil, false, true)
b^..^ b < v Range.new(b, nil, false, true)
The priority of the range operators is the same.
< Higher >
||
.. ... ..^ ^.. ^..^
?:
< Lower >
Situation: Notation.
range = 0^..100 # 0 < v <= 100
range = 100^..1000 # 100 < v <= 1000
range = 1000^.. # 1000 < v
Situation: Pass to argument for method call.
[ 0^..100, 100^..1000, 1000^.. ].each do |range|
pp Items.where( price: range ).all
end
Situation: Build expression.(e.g. query script)
def build( v, range )
b = range.begin
e = range.end
exprs = []
if range.exclude_begin?
exprs << "#{b} < #{v}"
elsif b
exprs << "#{b} <= #{v}"
end
if range.exclude_end?
exprs << "#{v} < #{e}"
elsif e
exprs << "#{v} <= #{e}"
end
exprs.join(" and ")
end
The new feature will enables more clear code.
We believe this feature will be very useful for developers.
----------------------------------------
Feature #12133: Ability to exclude start when defining a range
https://bugs.ruby-lang.org/issues/12133#change-91351
* Author: slash_nick (Ryan Hosford)
* Status: Feedback
* Priority: Normal
----------------------------------------
An intuitive, approach would be to allow defining ranges like so:
~~~
[1..10]
[1..10)
(1..10]
(1..10)
~~~
... where a square bracket indicates boundary inclusion and a parenthesis represents boundary exclusion. The syntax there is obviously not going to work, but it demonstrates the idea.
A more feasible, still intuitive, solution might look like the following
~~~
(1..10) # [1..10]
(1...10) # [1..10) ... Alternatively: (1..10).exclude_end
(1..10).exclude_start # (1..10]
(1...10).exclude_start # (1..10) ... Alternatively: (1..10).exclude_start.exclude_end
~~~
For consistency, I think we'd also want to add `#exclude_start?` & `#exclude_end` methods.
--
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>