Write language name in 3D ASCII

var text = <<'EOT'

     ***
    *     *     *        **
    *           *       *
    *     *     *  ***  **
     ***  *  **** *   * *
        * * *   * ***** *
        * * *   * *     *
        * * *   * *     *
     ***  *  ****  ***  *
EOT

func banner3D(text, shift=-1) {
    var txt = text.lines.map{|line| line.gsub('*','__/').gsub(' ','   ')}
    var offset = txt.len.of {|i| " " * (shift.abs * i) }
    shift < 0 && offset.reverse!
    (offset »+« txt).join("\n")
}

say banner3D(text)

Output:


                        __/__/__/
                    __/               __/               __/                        __/__/
                   __/                                 __/                     __/
                  __/               __/               __/      __/__/__/      __/__/
                    __/__/__/      __/      __/__/__/__/   __/         __/   __/
                            __/   __/   __/         __/   __/__/__/__/__/   __/
                           __/   __/   __/         __/   __/               __/
                          __/   __/   __/         __/   __/               __/
                __/__/__/      __/      __/__/__/__/      __/__/__/      __/