mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2025-12-19 18:49:19 +01:00
Display string/number keys same as values
This commit is contained in:
parent
3fbc17c603
commit
efffa2b41d
@ -1 +1 @@
|
||||
Subproject commit b9af29bb93878bb49079026ebc011d832dd61e4b
|
||||
Subproject commit ca8a2de2c7994f6a8c57f7d4433991b170b9935a
|
||||
@ -11,7 +11,6 @@ import ocelot.desktop.ui.layout.LinearLayout
|
||||
import ocelot.desktop.ui.widget._
|
||||
import ocelot.desktop.ui.widget.window.BasicWindow
|
||||
import ocelot.desktop.util.Orientation
|
||||
import org.apache.commons.text.StringEscapeUtils
|
||||
import totoro.ocelot.brain.entity.machine.luac._
|
||||
|
||||
import scala.collection.mutable.ArrayBuffer
|
||||
@ -370,16 +369,7 @@ class DebuggerWindow(computerNode: ComputerNode) extends BasicWindow {
|
||||
extends LuaValueView(name)
|
||||
{
|
||||
children :+= new Label {
|
||||
override def text: String = number match {
|
||||
case LuaValue.Number.Integer(value) => value.toString
|
||||
|
||||
case LuaValue.Number.Double(value) => value match {
|
||||
case v if v.isPosInfinity => "inf"
|
||||
case v if v.isNegInfinity => "-inf"
|
||||
case v if v.isNaN => if ((java.lang.Double.doubleToRawLongBits(v) >>> 63) == 0x0) "nan" else "-nan"
|
||||
case v => v.toString
|
||||
}
|
||||
}
|
||||
override def text: String = number.toString
|
||||
override def color: Color = ColorScheme("ComputerAddress")
|
||||
}
|
||||
}
|
||||
@ -694,16 +684,10 @@ class DebuggerWindow(computerNode: ComputerNode) extends BasicWindow {
|
||||
|
||||
private def luaValueToTableKey(value: LuaValue): Option[String] = {
|
||||
Some(value match {
|
||||
case LuaValue.Nil =>
|
||||
"[nil]"
|
||||
case LuaValue.Boolean(v) =>
|
||||
if (v) "[true]" else "[false]"
|
||||
case LuaValue.Number.Integer(v) =>
|
||||
s"[$v]"
|
||||
case LuaValue.Number.Double(v) =>
|
||||
s"[$v]"
|
||||
case s: LuaValue.String =>
|
||||
stringToPathComponent(s.toUtf8String)
|
||||
case LuaValue.Nil => "[nil]"
|
||||
case LuaValue.Boolean(v) => if (v) "[true]" else "[false]"
|
||||
case v: LuaValue.Number => s"[$v]"
|
||||
case LuaValue.String(s) => stringToPathComponent(s)
|
||||
case _ => return None
|
||||
})
|
||||
}
|
||||
@ -722,11 +706,11 @@ class DebuggerWindow(computerNode: ComputerNode) extends BasicWindow {
|
||||
}
|
||||
}
|
||||
|
||||
private def stringToPathComponent(s: String): String = {
|
||||
private def stringToPathComponent(s: List[Byte]): String = {
|
||||
if (isValidIdent(s))
|
||||
s"$s"
|
||||
new String(s.toArray)
|
||||
else
|
||||
s"[${'"' + StringEscapeUtils.escapeJava(s) + '"'}]"
|
||||
"[" + escapeLuaString(s) + "]"
|
||||
}
|
||||
|
||||
private def localNameToPathComponent(s: String): String = {
|
||||
@ -767,8 +751,13 @@ class DebuggerWindow(computerNode: ComputerNode) extends BasicWindow {
|
||||
Iterator(Some(what), nameWhat).flatten.mkString(" ")
|
||||
}
|
||||
|
||||
private def isValidIdent(str: String): Boolean = {
|
||||
str.matches("[a-zA-Z_][a-zA-Z0-9_]*")
|
||||
private def isValidIdent(str: List[Byte]): Boolean = {
|
||||
def isAlpha(c: Byte): Boolean = ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')
|
||||
def isNumeric(c: Byte): Boolean = '0' <= c && c <= '9'
|
||||
def checkFirstByte(c: Byte): Boolean = isAlpha(c) || c == '_'
|
||||
def checkTailByte(c: Byte): Boolean = checkFirstByte(c) || isNumeric(c)
|
||||
|
||||
str.headOption.exists(checkFirstByte) && str.tail.forall(checkTailByte)
|
||||
}
|
||||
|
||||
private def clearStackFrames(): Unit = {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user