Move String#undent to compat.

This commit is contained in:
Markus Reiter 2017-10-15 02:38:10 +02:00
parent 9bee9ca575
commit 487bec9570
4 changed files with 19 additions and 53 deletions

View File

@ -26,3 +26,4 @@ require "compat/ENV/shared"
require "compat/ENV/std"
require "compat/ENV/super"
require "compat/utils/shell"
require "compat/extend/string"

View File

@ -0,0 +1,18 @@
class String
def undent
gsub(/^[ \t]{#{(slice(/^[ \t]+/) || '').length}}/, "")
end
alias unindent undent
# eg:
# if foo then <<-EOS.undent_________________________________________________________72
# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
# eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
# minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
# ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
# voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
# sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
# mollit anim id est laborum.
# EOS
alias undent_________________________________________________________72 undent
end

View File

@ -2,23 +2,6 @@
require_relative "../vendor/backports/string"
class String
def undent
gsub(/^[ \t]{#{(slice(/^[ \t]+/) || '').length}}/, "")
end
alias unindent undent
# eg:
# if foo then <<~EOS_________________________________________________________72
# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
# eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
# minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
# ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
# voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
# sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt
# mollit anim id est laborum.
# EOS
alias undent_________________________________________________________72 undent
# String.chomp, but if result is empty: returns nil instead.
# Allows `chuzzle || foo` short-circuits.
def chuzzle

View File

@ -1,41 +1,5 @@
require "extend/string"
describe String do
describe "#undent" do
it "removes leading whitespace, taking the first line as reference" do
string = <<-EOS.unindent
hi
........my friend over
there
EOS
expect(string).to eq("hi\n........my friend over\n there\n")
end
it "removes nothing if the text is not indented" do
string = <<-EOS.unindent
hi
I'm not indented
EOS
expect(string).to eq("hi\nI'm not indented\n")
end
it "can be nested" do
nested_string = <<~EOS
goodbye
EOS
string = <<~EOS
hello
#{nested_string}
EOS
expect(string).to eq("hello\ngoodbye\n\n")
end
end
end
describe StringInreplaceExtension do
subject { string.extend(described_class) }
let(:string) { "foobar" }