ideditor / schema-builder

🏗🏷 Create tagging schemas for iD
ISC License
13 stars 16 forks source link

Allow crossreferencing of labels between fields and presets #162

Open Dimitar5555 opened 4 months ago

Dimitar5555 commented 4 months ago

Simply having {preset/....} or {field/....} should allow to use the respective label. If there the keywords (preset/field) aren't present, the script should default to the translations of the current item.

Such change would require changes in two places and could be taken out in a separate function.

https://github.com/ideditor/schema-builder/blob/main/lib/build.js#L529-L531

https://github.com/ideditor/schema-builder/blob/main/lib/build.js#L566-L568

function fetchLabel(label, type, tstrings) {
    label = label.slice(1, -1);
    let separated = label.split('/');
    let labelType = separated.shift();
    let searchIn = tstrings[type];
    let labelAccessName  = type=='preset'?'name':'label';
    if(['preset', 'field'].indexOf(labelType) != -1) {
        searchIn = tstring[labelType];
        labelAccessName  = labelType=='preset'?'name':'label';
    }
    return searchIn[label][labelAccessName];
}

P.S. It might be a good idea for presets to have label instead of name, at least for consistency.