DeflatedPickle/Quiver

View on GitHub
core/src/main/kotlin/com/deflatedpickle/quiver/backend/extension/String.kt

Summary

Maintainability
A
0 mins
Test Coverage
/* Copyright (c) 2021 DeflatedPickle under the MIT license */

package com.deflatedpickle.quiver.backend.extension

import com.deflatedpickle.quiver.Quiver
import org.fife.ui.rsyntaxtextarea.SyntaxConstants

fun String.toSyntaxEditingStyle() = when (this) {
    // Do resource packs even have properties?
    "properties" -> SyntaxConstants.SYNTAX_STYLE_PROPERTIES_FILE
    // I'm almost certain they use JSON, though!
    "json", "mcmeta" -> SyntaxConstants.SYNTAX_STYLE_JSON
    // They changed the format of lang files, let's keep backwards compatibility
    "lang" -> if (Quiver.resolution >= 3) SyntaxConstants.SYNTAX_STYLE_PROPERTIES_FILE
    else SyntaxConstants.SYNTAX_STYLE_JSON
    // I think resource packs can have scripts?
    "js" -> SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT
    // And if people don't want to use JavaScript...
    "ts" -> SyntaxConstants.SYNTAX_STYLE_TYPESCRIPT
    // There's no stock "ignore" or "markdown" file highlighter
    // So we'll use a random language with "#" comments
    "gitignore", "md" -> SyntaxConstants.SYNTAX_STYLE_PERL
    // In case people use scripts?
    "bat" -> SyntaxConstants.SYNTAX_STYLE_WINDOWS_BATCH
    "py" -> SyntaxConstants.SYNTAX_STYLE_PYTHON
    "rb" -> SyntaxConstants.SYNTAX_STYLE_RUBY
    "lua" -> SyntaxConstants.SYNTAX_STYLE_LUA
    // Maybe people'll use a makefile?
    "make", "makefile", "makef", "gmk", "mak" -> SyntaxConstants.SYNTAX_STYLE_MAKEFILE
    // Gradle stuff for whatever reason
    "gradle" -> SyntaxConstants.SYNTAX_STYLE_GROOVY
    // OpenGL shaders and that
    // There isn't a syntax style for shaders so we'll use the closest
    "fsh", "vsh" -> SyntaxConstants.SYNTAX_STYLE_C
    // I declare anything else as plain text
    // Or so it was written, which it is
    else -> SyntaxConstants.SYNTAX_STYLE_NONE
}