mirror of https://github.com/antonmedv/fx
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
678 B
Go
40 lines
678 B
Go
package main
|
|
|
|
import (
|
|
"github.com/charmbracelet/lipgloss"
|
|
)
|
|
|
|
func isHexDigit(ch byte) bool {
|
|
return (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F')
|
|
}
|
|
|
|
func isDigit(ch byte) bool {
|
|
return ch >= '0' && ch <= '9'
|
|
}
|
|
|
|
func colorForValue(b []byte) color {
|
|
if len(b) == 0 {
|
|
return noColor
|
|
}
|
|
|
|
switch b[0] {
|
|
case '"':
|
|
return currentTheme.String
|
|
case 't', 'f':
|
|
return currentTheme.Boolean
|
|
case 'n':
|
|
return currentTheme.Null
|
|
case '{', '[', '}', ']':
|
|
return currentTheme.Syntax
|
|
default:
|
|
if isDigit(b[0]) || b[0] == '-' {
|
|
return currentTheme.Number
|
|
}
|
|
return noColor
|
|
}
|
|
}
|
|
|
|
func width(s string) int {
|
|
return lipgloss.Width(s)
|
|
}
|