Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions core/range.rbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# FIXME: mruby/c only supports Range[Integer] only
class Range[out Elem] < Object
def ===: (untyped other) -> bool
def self.===: (untyped other) -> bool

def first: () -> Elem

def last: () -> Elem

def exclude_end?: () -> bool

def inspect: () -> String
def self.inspect: () -> String

alias to_s inspect
alias self.to_s self.inspect
end
6 changes: 2 additions & 4 deletions core/string.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,15 @@ class String < Object

def <<: (String) -> String

# TODO: Range
def slice: (Integer nth) -> String?
| (Integer nth, Integer len) -> String?
# | (Range range) -> String?
| (Range[Integer] range) -> String?

alias [] slice

# TODO: Range
def []=: (Integer nth, String val) -> String
| (Integer nth, Integer len, String val) -> String
# | (Range range, String val) -> String
| (Range[Integer] range, String val) -> String

def b: () -> String

Expand Down
23 changes: 23 additions & 0 deletions test/range.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# frozen_string_literal: true

# rubocop:disable Lint/Void
# rubocop:disable Style/CaseEquality
# rubocop:disable Lint/BinaryOperatorWithIdenticalOperands

0..10

(0..10) === (0..10)

(0..10).first

(0..10).last

(0...10).exclude_end?

(0..10).inspect
Range.inspect

(0..10).to_s
Range.to_s

# rubocop:enable all
3 changes: 3 additions & 0 deletions test/string.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,15 @@

'abcdef'.slice 2
'abcdef'.slice 2, 3
'abcdef'.slice 2..4

'abcdef'[3]
'abcdef'[3, 3]
'abcdef'[3...6]

'abcdef'[3] = 'D'
'abcdef'[3, 3] = 'defghi'
'abcdef'[3...6] = 'defghi'

'abcdef'.b

Expand Down