Skip to content

Commit cbd2580

Browse files
committed
Update TypeEngine.
1 parent 08a19f3 commit cbd2580

22 files changed

+235
-242
lines changed

common/src/main/kotlin/me/scoretwo/fastscript/FastScript.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,11 @@ package me.scoretwo.fastscript
33
import me.scoretwo.fastscript.api.expansion.ExpansionManager
44
import me.scoretwo.fastscript.api.format.FormatHeader
55
import me.scoretwo.fastscript.api.plugin.ScriptPlugin
6-
import me.scoretwo.fastscript.api.script.AbstractScript
7-
import me.scoretwo.fastscript.api.script.FileScript
6+
import me.scoretwo.fastscript.api.script.Script
87
import me.scoretwo.fastscript.command.ScriptCommandNexus
98
import me.scoretwo.fastscript.config.SettingConfig
10-
import me.scoretwo.fastscript.script.ScriptManager
9+
import me.scoretwo.fastscript.api.script.ScriptManager
1110
import me.scoretwo.fastscript.utils.Utils
12-
import me.scoretwo.utils.bukkit.configuration.yaml.file.YamlConfiguration
13-
import me.scoretwo.utils.bukkit.configuration.yaml.patchs.getLowerCaseNode
1411
import me.scoretwo.utils.sender.GlobalPlayer
1512
import me.scoretwo.utils.sender.GlobalSender
1613
import me.scoretwo.utils.syntaxes.StreamUtils
@@ -109,7 +106,7 @@ class FastScript(val plugin: ScriptPlugin) {
109106

110107
}
111108
lateinit var plugin: ScriptPlugin
112-
val scripts = mutableListOf<FileScript>()
109+
val scripts = mutableListOf<Script>()
113110

114111
lateinit var settings: SettingConfig
115112

common/src/main/kotlin/me/scoretwo/fastscript/api/expansion/CoreScript.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
package me.scoretwo.fastscript.api.expansion
22

3-
import me.scoretwo.fastscript.api.script.AbstractScript
4-
import me.scoretwo.fastscript.api.script.FileScript
3+
import me.scoretwo.fastscript.api.script.Script
54
import me.scoretwo.fastscript.scripts
65
import me.scoretwo.utils.sender.GlobalSender
76

87
abstract class FastScriptExpansion {
98

109
abstract val name: String
1110
abstract val sign: String
11+
abstract val fileSuffix: String
1212

13-
fun getHookedScripts() = mutableListOf<FileScript>().also { list ->
13+
abstract fun convertScriptProcessor(script: Script): Boolean
14+
15+
// abstract fun eval(script: Script, sender: GlobalSender): Any?
16+
17+
// abstract fun execute(script: Script, sender: GlobalSender, main: String, args: Array<Any?>): Any?
18+
19+
fun getHookedScripts() = mutableListOf<Script>().also { list ->
1420
scripts.forEach {
15-
if (it.hookExpansions.contains(this)) list.add(it)
21+
if (it.scriptProcessor.containsKey(sign)) list.add(it)
1622
}
1723
}
1824
}

common/src/main/kotlin/me/scoretwo/fastscript/api/script/AbstractScript.kt

Lines changed: 0 additions & 17 deletions
This file was deleted.

common/src/main/kotlin/me/scoretwo/fastscript/api/script/ConfigScriptOptions.kt

Lines changed: 0 additions & 23 deletions
This file was deleted.

common/src/main/kotlin/me/scoretwo/fastscript/api/script/FileScript.kt

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package me.scoretwo.fastscript.api.script
2+
3+
import me.scoretwo.fastscript.FastScript
4+
import me.scoretwo.utils.sender.GlobalSender
5+
import java.io.File
6+
7+
abstract class Script(
8+
val description: ScriptDescription,
9+
val options: ScriptOptions,
10+
val scriptFiles: MutableList<File> = mutableListOf()
11+
) {
12+
// sign, processor
13+
val scriptProcessor = mutableMapOf<String, ScriptProcessor>()
14+
// sign, mergedText
15+
val mergedTexts = mutableMapOf<String, StringBuilder>()
16+
17+
open fun eval(sign: String, sender: GlobalSender): Any? {
18+
if (!scriptProcessor.containsKey(sign)) {
19+
return null
20+
}
21+
return scriptProcessor[sign]!!.eval(sender)
22+
}
23+
open fun execute(sign: String, sender: GlobalSender, main: String = options.main, args: Array<Any?> = arrayOf()): Any? {
24+
if (!scriptProcessor.containsKey(sign)) {
25+
return null
26+
}
27+
return scriptProcessor[sign]!!.execute(sender, main, args)
28+
}
29+
30+
open fun reload() {
31+
if (!options.file.exists()) {
32+
options.config.save(options.file)
33+
}
34+
}
35+
36+
fun mergeToTexts() {
37+
mergedTexts.clear()
38+
FastScript.instance.expansionManager.expansions.forEach {
39+
mergeToText(it.sign)
40+
}
41+
}
42+
43+
fun mergeToText(sign: String) {
44+
mergedTexts[sign] = StringBuilder().also {
45+
scriptFiles.forEach { file ->
46+
if (file.exists() && file.name.endsWith(".$sign")) {
47+
it.append(file.readText()).append("\n")
48+
}
49+
} }
50+
51+
}
52+
53+
}

common/src/main/kotlin/me/scoretwo/fastscript/script/ScriptManager.kt renamed to common/src/main/kotlin/me/scoretwo/fastscript/api/script/ScriptManager.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
package me.scoretwo.fastscript.script
1+
package me.scoretwo.fastscript.api.script
22

33
import me.scoretwo.fastscript.FastScript
4-
import me.scoretwo.fastscript.api.script.FileScript
5-
import me.scoretwo.fastscript.config.SettingConfig
64
import me.scoretwo.fastscript.plugin
75
import me.scoretwo.fastscript.settings
86
import me.scoretwo.utils.bukkit.configuration.yaml.patchs.getLowerCaseNode
@@ -12,7 +10,7 @@ class ScriptManager {
1210

1311
val defaultScriptPath = File(plugin.dataFolder, "scripts")
1412

15-
val scripts = mutableMapOf<String, FileScript>()
13+
val scripts = mutableMapOf<String, Script>()
1614

1715
fun getScript(name: String) = if (scripts.containsKey(name)) scripts[name] else null
1816

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,23 @@
11
package me.scoretwo.fastscript.api.script
22

3-
interface ScriptOptions {
3+
import me.scoretwo.utils.bukkit.configuration.yaml.ConfigurationSection
4+
import me.scoretwo.utils.bukkit.configuration.yaml.file.YamlConfiguration
5+
import me.scoretwo.utils.bukkit.configuration.yaml.patchs.getLowerCaseNode
6+
import java.io.File
47

5-
val main: String
8+
abstract class ScriptOptions(val file: File, val config: YamlConfiguration) {
9+
val main: String = config.getString(config.getLowerCaseNode("main"))
10+
val meta = mutableMapOf<String, String>().also { map ->
11+
config.getStringList(config.getLowerCaseNode("meta")).forEach {
12+
map[it.substringBefore(":")] = it.substringAfter(":")
13+
}
14+
}
615

7-
val meta: MutableMap<String, String>
16+
val otherSection = mutableMapOf<String, ConfigurationSection>().also { sections ->
17+
config.getKeys(false).forEach {
18+
if (!arrayOf("main", "meta").contains(it.toLowerCase()))
19+
sections[it] = config.getConfigurationSection(it)
20+
}
21+
}
822

923
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package me.scoretwo.fastscript.api.script
2+
3+
import me.scoretwo.fastscript.api.expansion.FastScriptExpansion
4+
import me.scoretwo.utils.sender.GlobalSender
5+
6+
abstract class ScriptProcessor(val script: Script, val expansion: FastScriptExpansion) {
7+
8+
abstract fun eval(sender: GlobalSender): Any?
9+
abstract fun execute(sender: GlobalSender, main: String = script.options.main, args: Array<Any?> = arrayOf()): Any?
10+
11+
}

0 commit comments

Comments
 (0)