Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,8 @@
text = 'a!===b=!=c'
separators = ['==', '!=', '=']
def multisplit_simple(text, separators)
text.split(Regexp.union(separators))
end
p multisplit_simple(text, separators) # => ["a", "", "b", "", "c"]

View file

@ -0,0 +1,18 @@
def multisplit(text, separators)
sep_regex = Regexp.union(separators)
separator_info = []
pieces = []
i = prev = 0
while i = text.index(sep_regex, i)
separator = Regexp.last_match(0)
pieces << text[prev .. i-1]
separator_info << [separator, i]
i = i + separator.length
prev = i
end
pieces << text[prev .. -1]
[pieces, separator_info]
end
p multisplit(text, separators)
# => [["a", "", "b", "", "c"], [["!=", 1], ["==", 3], ["=", 6], ["!=", 7]]]

View file

@ -0,0 +1,7 @@
def multisplit_rejoin(info)
str = info[0].zip(info[1])[0..-2].inject("") {|str, (piece, (sep, idx))| str << piece << sep}
str << info[0].last
end
p multisplit_rejoin(multisplit(text, separators)) == text
# => true