Repl: refactoring, move common parts to utils
This commit is contained in:
@@ -21,10 +21,10 @@ import com.intellij.openapi.util.io.FileUtil
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.repl.ReplEvalResult
|
||||
import org.jetbrains.kotlin.cli.common.repl.replUnescapeLineBreaks
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.configuration.ConsoleReplConfiguration
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.configuration.IdeReplConfiguration
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.configuration.ReplConfiguration
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.messages.unescapeLineBreaks
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.KotlinCompilerVersion
|
||||
import java.io.File
|
||||
@@ -96,7 +96,7 @@ class ReplFromTerminal(
|
||||
private fun one(next: WhatNextAfterOneLine): WhatNextAfterOneLine {
|
||||
var line = replConfiguration.commandReader.readLine(next) ?: return WhatNextAfterOneLine.QUIT
|
||||
|
||||
line = unescapeLineBreaks(line)
|
||||
line = line.replUnescapeLineBreaks()
|
||||
|
||||
if (line.startsWith(":") && (line.length == 1 || line[1] != ':')) {
|
||||
val notQuit = oneCommand(line.substring(1))
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.cli.jvm.repl.messages
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
|
||||
// using '#' to avoid collisions with xml escaping
|
||||
internal val SOURCE_CHARS: Array<String> = arrayOf("\n", "#")
|
||||
internal val XML_REPLACEMENTS: Array<String> = arrayOf("#n", "#diez")
|
||||
|
||||
fun unescapeLineBreaks(s: String) = StringUtil.replace(s, XML_REPLACEMENTS, SOURCE_CHARS)
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.cli.jvm.repl.reader
|
||||
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.messages.unescapeLineBreaks
|
||||
import org.jetbrains.kotlin.cli.common.repl.replUnescapeLineBreaks
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.writer.ReplWriter
|
||||
import org.w3c.dom.Element
|
||||
import org.xml.sax.InputSource
|
||||
@@ -79,7 +79,7 @@ class ReplSystemInWrapper(
|
||||
val unescapedXml = parseXml(xmlInput)
|
||||
|
||||
return if (isReplScriptExecuting)
|
||||
unescapeLineBreaks(unescapedXml)
|
||||
unescapedXml.replUnescapeLineBreaks()
|
||||
else
|
||||
unescapedXml
|
||||
}
|
||||
|
||||
+4
-14
@@ -16,16 +16,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.cli.jvm.repl.writer
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.util.LineSeparator
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.messages.SOURCE_CHARS
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.messages.XML_REPLACEMENTS
|
||||
import org.jetbrains.kotlin.cli.common.repl.replAddLineBreak
|
||||
import org.jetbrains.kotlin.cli.common.repl.replOutputAsXml
|
||||
import org.jetbrains.kotlin.utils.repl.ReplEscapeType
|
||||
import java.io.PrintStream
|
||||
import org.jetbrains.kotlin.utils.repl.ReplEscapeType.*
|
||||
|
||||
internal val END_LINE: String = LineSeparator.getSystemLineSeparator().separatorString
|
||||
internal val XML_PREAMBLE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
import java.io.PrintStream
|
||||
|
||||
class IdeSystemOutWrapperReplWriter(standardOut: PrintStream) : PrintStream(standardOut, true), ReplWriter {
|
||||
override fun print(x: Boolean) = printWithEscaping(x.toString())
|
||||
@@ -42,12 +37,7 @@ class IdeSystemOutWrapperReplWriter(standardOut: PrintStream) : PrintStream(stan
|
||||
}
|
||||
|
||||
private fun printWithEscaping(text: String, escapeType: ReplEscapeType = USER_OUTPUT) {
|
||||
super.print("${xmlEscape(text, escapeType)}${END_LINE}")
|
||||
}
|
||||
|
||||
private fun xmlEscape(s: String, escapeType: ReplEscapeType): String {
|
||||
val singleLine = StringUtil.replace(s, SOURCE_CHARS, XML_REPLACEMENTS)
|
||||
return "${XML_PREAMBLE}<output type=\"$escapeType\">${StringUtil.escapeXml(singleLine)}</output>"
|
||||
super.print(text.replOutputAsXml(escapeType).replAddLineBreak())
|
||||
}
|
||||
|
||||
override fun printlnWelcomeMessage(x: String) = printlnWithEscaping(x, INITIAL_PROMPT)
|
||||
|
||||
Reference in New Issue
Block a user