mirror of
https://github.com/RGBCube/ManageTTD
synced 2025-07-28 09:27:45 +00:00
Chore: Start rewriting
This commit is contained in:
parent
38dfbe836e
commit
4abbc79f16
2 changed files with 63 additions and 1 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -5,7 +5,9 @@
|
||||||
|
|
||||||
!src/
|
!src/
|
||||||
!src/config/
|
!src/config/
|
||||||
!src/config/mapping
|
|
||||||
|
!src2/
|
||||||
|
!src2/config/
|
||||||
|
|
||||||
!.editorconfig
|
!.editorconfig
|
||||||
!openttd.cfg
|
!openttd.cfg
|
||||||
|
|
60
src2/config/mapping.v
Normal file
60
src2/config/mapping.v
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
module config
|
||||||
|
|
||||||
|
pub type Mapping = map[string]map[string]Map
|
||||||
|
|
||||||
|
// TODO: &Mapping
|
||||||
|
pub fn (mpng Mapping) unmap(mapped map[string]map[string]string) !map[string]map[string]string {
|
||||||
|
mut unmapped := map[string]map[string]string{}
|
||||||
|
|
||||||
|
for mapped_section, mapped_fields in mapped {
|
||||||
|
if mapped_section !in mpng {
|
||||||
|
return error('Unknown section: ${mapped_section}')
|
||||||
|
}
|
||||||
|
|
||||||
|
for mapped_field, mapped_value in mapped_fields {
|
||||||
|
if mapped_field !in mpng[mapped_section] {
|
||||||
|
return error('Unknown field: ${mapped_section}.${mapped_field}')
|
||||||
|
}
|
||||||
|
|
||||||
|
mapped_field_mapping := mpng[mapped_section][mapped_field]
|
||||||
|
|
||||||
|
unmapped[mapped_field_mapping.section()][mapped_field_mapping.field()] = mapped_field_mapping.transform(mapped_value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return unmapped
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum ValueType {
|
||||||
|
string
|
||||||
|
integer
|
||||||
|
boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
// Maps one ManageTTD -> OpenTTD config field.
|
||||||
|
[noinit]
|
||||||
|
pub struct Map {
|
||||||
|
equivalent [2]string [required]
|
||||||
|
transformer ?fn (string) string
|
||||||
|
pub:
|
||||||
|
@type ValueType = .string
|
||||||
|
documentation string [required]
|
||||||
|
}
|
||||||
|
|
||||||
|
[inline]
|
||||||
|
pub fn (m &Map) section() string {
|
||||||
|
return m.equivalent[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
[inline]
|
||||||
|
pub fn (m &Map) field() string {
|
||||||
|
return m.equivalent[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (m &Map) transform(s string) string {
|
||||||
|
return if transform_fn := m.transformer {
|
||||||
|
transform_fn(s)
|
||||||
|
} else {
|
||||||
|
s
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue