diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2016-12-03 15:36:42 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2016-12-03 15:36:42 -0800 |
commit | 3503c0e7679d5802068fc2ab2420b575a8ae2fc7 (patch) | |
tree | d1cfdd3ca2f2fb9761466a61e77d82d8f6b76002 /platform/darwin/scripts/generate-style-code.js | |
parent | 84038832e45c2445b43b39ccb2f9e29c8646dac0 (diff) | |
parent | 9eb7f88b2c292d322a104c4580c3ef29958b628b (diff) | |
download | qtlocation-mapboxgl-3503c0e7679d5802068fc2ab2420b575a8ae2fc7.tar.gz |
Merge branch 'release-ios-v3.4.0' into 1ec5-release-ios-v3.4.0-beta.4-master
Diffstat (limited to 'platform/darwin/scripts/generate-style-code.js')
-rw-r--r-- | platform/darwin/scripts/generate-style-code.js | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/platform/darwin/scripts/generate-style-code.js b/platform/darwin/scripts/generate-style-code.js index c4652e4e9b..6b54b5219b 100644 --- a/platform/darwin/scripts/generate-style-code.js +++ b/platform/darwin/scripts/generate-style-code.js @@ -4,13 +4,23 @@ const fs = require('fs'); const ejs = require('ejs'); const _ = require('lodash'); const colorParser = require('csscolorparser'); -const spec = _.merge(require('mapbox-gl-style-spec').latest, require('./style-spec-overrides-v8.json')); require('../../../scripts/style-code'); +const cocoaConventions = require('./style-spec-cocoa-conventions-v8.json'); +let spec = _.merge(require('mapbox-gl-style-spec').latest, require('./style-spec-overrides-v8.json')); const prefix = 'MGL'; const suffix = 'StyleLayer'; +// Rename properties and keep `original` for use with setters and getters +_.forOwn(cocoaConventions, function (properties, kind) { + _.forOwn(properties, function (newName, oldName) { + spec[kind][newName] = spec[kind][oldName]; + spec[kind][newName].original = oldName; + delete spec[kind][oldName]; + }) +}); + global.objCName = function (property) { return camelizeWithLeadingLowercase(property.name); } @@ -202,6 +212,10 @@ global.propertyDefault = function (property, layerType) { return 'an `MGLStyleValue` object containing ' + describeValue(property.default, property, layerType); }; +global.originalPropertyName = function (property) { + return property.original || property.name; +} + global.propertyType = function (property) { switch (property.type) { case 'boolean': @@ -291,6 +305,8 @@ global.mbglType = function(property) { const layerH = ejs.compile(fs.readFileSync('platform/darwin/src/MGLStyleLayer.h.ejs', 'utf8'), { strict: true }); const layerM = ejs.compile(fs.readFileSync('platform/darwin/src/MGLStyleLayer.mm.ejs', 'utf8'), { strict: true}); const testLayers = ejs.compile(fs.readFileSync('platform/darwin/src/MGLRuntimeStylingTests.m.ejs', 'utf8'), { strict: true}); +const categoryH = ejs.compile(fs.readFileSync('platform/darwin/src/NSValue+MGLStyleEnumAttributeAdditions.h.ejs', 'utf8'), { strict: true}); +const categoryM = ejs.compile(fs.readFileSync('platform/darwin/src/NSValue+MGLStyleEnumAttributeAdditions.mm.ejs', 'utf8'), { strict: true}); const layers = Object.keys(spec.layer.type.values).map((type) => { const layoutProperties = Object.keys(spec[`layout_${type}`]).reduce((memo, name) => { @@ -309,8 +325,8 @@ const layers = Object.keys(spec.layer.type.values).map((type) => { return { type: type, - layoutProperties: layoutProperties, - paintProperties: paintProperties, + layoutProperties: _.sortBy(layoutProperties, ['name']), + paintProperties: _.sortBy(paintProperties, ['name']), layoutPropertiesByName: spec[`layout_${type}`], paintPropertiesByName: spec[`paint_${type}`], }; @@ -335,8 +351,28 @@ ${macosComment}${decl} }); } +var allLayoutProperties = []; +var allPaintProperties = []; +var allTypes = []; + for (var layer of layers) { + allLayoutProperties.push(layer.layoutProperties); + allPaintProperties.push(layer.paintProperties); + allTypes.push(layer.type); + const containsEnumerationProperties = _.filter(layer.layoutProperties, function(property){ return property["type"] === "enum"; }).length || _.filter(layer.paintProperties, function(property){ return property["type"] === "enum"; }).length; + layer.containsEnumerationProperties = containsEnumerationProperties; + writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.h`, duplicatePlatformDecls(layerH(layer))); writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.mm`, layerM(layer)); writeIfModified(`platform/darwin/test/${prefix}${camelize(layer.type)}${suffix}Tests.m`, testLayers(layer)); } + +fs.writeFileSync(`platform/darwin/src/NSValue+MGLStyleEnumAttributeAdditions.h`, categoryH({ + layoutProperties: _.flatten(allLayoutProperties), + paintProperties: _.flatten(allPaintProperties), + types: allTypes +})); +fs.writeFileSync(`platform/darwin/src/NSValue+MGLStyleEnumAttributeAdditions.mm`, categoryM({ + layoutProperties: _.flatten(allLayoutProperties), + paintProperties: _.flatten(allPaintProperties) +})); |