public synchronized String pipe()

in webconsole/gogo/src/main/java/org/apache/karaf/webconsole/gogo/Terminal.java [1559:1725]


    public synchronized String pipe(String d) {
        StringBuilder o = new StringBuilder();
        for (char c : d.toCharArray()) {
            if (vt100_keyfilter_escape) {
                vt100_keyfilter_escape = false;
                if (vt100_mode_cursorkey) {
                    switch (c) {
                        case '~':
                            o.append("~");
                            break;
                        case 'A':
                            o.append("\u001bOA");
                            break;
                        case 'B':
                            o.append("\u001bOB");
                            break;
                        case 'C':
                            o.append("\u001bOC");
                            break;
                        case 'D':
                            o.append("\u001bOD");
                            break;
                        case 'F':
                            o.append("\u001bOF");
                            break;
                        case 'H':
                            o.append("\u001bOH");
                            break;
                        case '1':
                            o.append("\u001b[5~");
                            break;
                        case '2':
                            o.append("\u001b[6~");
                            break;
                        case '3':
                            o.append("\u001b[2~");
                            break;
                        case '4':
                            o.append("\u001b[3~");
                            break;
                        case 'a':
                            o.append("\u001bOP");
                            break;
                        case 'b':
                            o.append("\u001bOQ");
                            break;
                        case 'c':
                            o.append("\u001bOR");
                            break;
                        case 'd':
                            o.append("\u001bOS");
                            break;
                        case 'e':
                            o.append("\u001b[15~");
                            break;
                        case 'f':
                            o.append("\u001b[17~");
                            break;
                        case 'g':
                            o.append("\u001b[18~");
                            break;
                        case 'h':
                            o.append("\u001b[19~");
                            break;
                        case 'i':
                            o.append("\u001b[20~");
                            break;
                        case 'j':
                            o.append("\u001b[21~");
                            break;
                        case 'k':
                            o.append("\u001b[23~");
                            break;
                        case 'l':
                            o.append("\u001b[24~");
                            break;
                    }
                } else {
                    switch (c) {
                        case '~':
                            o.append("~");
                            break;
                        case 'A':
                            o.append("\u001b[A");
                            break;
                        case 'B':
                            o.append("\u001b[B");
                            break;
                        case 'C':
                            o.append("\u001b[C");
                            break;
                        case 'D':
                            o.append("\u001b[D");
                            break;
                        case 'F':
                            o.append("\u001b[F");
                            break;
                        case 'H':
                            o.append("\u001b[H");
                            break;
                        case '1':
                            o.append("\u001b[5~");
                            break;
                        case '2':
                            o.append("\u001b[6~");
                            break;
                        case '3':
                            o.append("\u001b[2~");
                            break;
                        case '4':
                            o.append("\u001b[3~");
                            break;
                        case 'a':
                            o.append("\u001bOP");
                            break;
                        case 'b':
                            o.append("\u001bOQ");
                            break;
                        case 'c':
                            o.append("\u001bOR");
                            break;
                        case 'd':
                            o.append("\u001bOS");
                            break;
                        case 'e':
                            o.append("\u001b[15~");
                            break;
                        case 'f':
                            o.append("\u001b[17~");
                            break;
                        case 'g':
                            o.append("\u001b[18~");
                            break;
                        case 'h':
                            o.append("\u001b[19~");
                            break;
                        case 'i':
                            o.append("\u001b[20~");
                            break;
                        case 'j':
                            o.append("\u001b[21~");
                            break;
                        case 'k':
                            o.append("\u001b[23~");
                            break;
                        case 'l':
                            o.append("\u001b[24~");
                            break;
                    }
                }
            } else if (c == '~') {
                vt100_keyfilter_escape = true;
            } else if (c == '\u007f') {
                if (vt100_mode_backspace) {
                    o.append('\u0008');
                } else {
                    o.append('\u007f');
                }
            } else {
                o.append(c);
                if (vt100_mode_lfnewline && c == '\r') {
                    o.append('\n');
                }
            }
        }
        return o.toString();
    }