Done settings get and set

This commit is contained in:
Sirger Tünde-Maria
2025-11-30 01:06:39 +02:00
parent ee1528fe87
commit 106735a290
2 changed files with 89 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
settings_config:
debug: false
type: data
tabs:
- General
- Miscellaneous
keys:
example1.key:
tab: General
name: example1 setting key
description: example1 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: boolean
default: true
example2.key:
tab: General
name: example2 setting key
description: example2 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: number
default: 5
min: 0
max: 10
increment: 0.5
example3.key:
tab: Miscellaneous
name: example3 setting key
description: example3 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: list
default: male
values:
- male
- female
- prefer not to say
example4.key:
tab: Miscellaneous
name: example4 setting key
description: example4 description, Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...
type: text
default: text
max-length: 64
regex: [a-z]

View File

@@ -0,0 +1,49 @@
settings_set:
debug: false
type: task
definitions: player|key|value
script:
- define keys <script[settings_config].data_key[keys]>
- if !<[keys].contains[<[key]>]>:
- determine "Key not found: <[key]>"
- if <[value]> == null:
- determine "Value cannot be null"
- define data <[keys].get[<[key]>]>
- define type <[data].get[type]>
- choose <[type].to_lowercase>:
- case boolean:
- if <[value]> != true && <[value]> != false:
- determine "Value must be true or false"
- case number:
- define min <[data].get[min]>
- define max <[data].get[max]>
- if <[value]> < <[min]> || <[value]> > <[max]>:
- determine "Value must be between <[min]> and <[max]>"
- case list:
- define values <[data].get[values]>
- if !<[values].contains[<[value]>]>:
- determine "Value must be one of the following: <[values].formatted>"
- case text:
- define max_length <[data].get[max-length]>
- define regex <[data].get[regex]>
- if <[value].length> > <[max_length]>:
- determine "Value must be shorter than <[max_length]> characters"
- if !<[value].regex_matches[<[regex]>]>:
- determine "Value should match the regex <[regex]>"
- default:
- determine "Unknown type <[type]>"
- define settings <[player].flag[settings].if_null[<map[]>]>
- define settings <[settings].with[<[key]>].as[<[value]>]>
- flag <[player]> settings:<[settings]>
settings_get:
debug: false
type: procedure
definitions: player|key
script:
- define keys <script[settings_config].data_key[keys]>
- if !<[keys].contains[<[key]>]>:
- determine null
- define settings <[player].flag[settings].if_null[<map[]>]>
- define value <[settings].get[<[key]>].if_null[<[keys].get[<[key]>].get[default]>]>
- determine <[value]>