preset.setTags = function()

in modules/presets/preset.js [235:280]


    preset.setTags = function(tags, geometry, skipFieldDefaults) {
        var addTags = preset.addTags;
        var k;

        tags = Object.assign({}, tags);   // shallow copy

        for (k in addTags) {
            if (addTags[k] === '*') {
                tags[k] = 'yes';
            } else {
                tags[k] = addTags[k];
            }
        }

        // Add area=yes if necessary.
        // This is necessary if the geometry is already an area (e.g. user drew an area) AND any of:
        // 1. chosen preset could be either an area or a line (`barrier=city_wall`)
        // 2. chosen preset doesn't have a key in osmAreaKeys (`railway=station`)
        if (!addTags.hasOwnProperty('area')) {
            delete tags.area;
            if (geometry === 'area') {
                var needsAreaTag = true;
                if (preset.geometry.indexOf('line') === -1) {
                    for (k in addTags) {
                        if (k in osmAreaKeys) {
                            needsAreaTag = false;
                            break;
                        }
                    }
                }
                if (needsAreaTag) {
                    tags.area = 'yes';
                }
            }
        }
        if (geometry && !skipFieldDefaults) {
            for (var f in preset.fields) {
                var field = preset.fields[f];
                if (field.matchGeometry(geometry) && field.key && !tags[field.key] && field.default) {
                    tags[field.key] = field.default;
                }
            }
        }

        return tags;
    };