Some fixes in the rewrite of the maprendering

This commit is contained in:
Pieter Vander Vennet 2022-03-08 01:05:54 +01:00
parent 9f3a23843c
commit 67c8d08f3e
9 changed files with 117 additions and 19 deletions

View file

@ -2,7 +2,7 @@ import {Utils} from "../Utils";
export default class Constants {
public static vNumber = "0.16.4";
public static vNumber = "0.17.0-alpha";
public static ImgurApiKey = '7070e7167f0a25a'
public static readonly mapillary_client_token_v4 = "MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85"

View file

@ -113,7 +113,9 @@ export class OnEveryConcat<X, T> extends DesugaringStep<T> {
}
const r = step.convertAll((<X[]>values), context + "." + key)
const vals: X[][] = r.result
json[key] = [].concat(...vals)
return {
...r,
result: json,

View file

@ -279,25 +279,27 @@ class ExpandRewrite<T> extends Conversion<T | RewritableConfigJson<T>, T[]> {
* Every 'keyToRewrite' will be replaced with 'target' recursively. This substitution will happen in place in the object 'tr' */
public static RewriteParts<T>(keyToRewrite: string, target: string | any, tr: T): T {
const isTranslation = typeof target !== "string"
function replaceRecursive(transl: string | any) {
if(transl === keyToRewrite){
return target
}
if (typeof transl === "string") {
// This is a simple string - we do a simple replace
return transl.replace(keyToRewrite, target)
}
if (transl.map !== undefined) {
if (Array.isArray(transl)) {
// This is a list of items
return transl.map(o => replaceRecursive(o))
}
if (Translations.isProbablyATranslation(transl) && isTranslation) {
return Translations.T(transl).Fuse(new Translation(target), keyToRewrite).translations
}
transl = {...transl}
for (const key in transl) {
transl[key] = replaceRecursive(transl[key])
if(typeof transl === "object"){
transl = {...transl}
for (const key in transl) {
transl[key] = replaceRecursive(transl[key])
}
return transl
}
return transl
}
@ -318,10 +320,19 @@ class ExpandRewrite<T> extends Conversion<T | RewritableConfigJson<T>, T[]> {
}
const rewrite = <RewritableConfigJson<T>>json;
let toRewrite: T = rewrite.renderings
const keysToRewrite = rewrite.rewrite
const keysToRewrite = rewrite.rewrite
const ts : T[] = []
for (let i = 0; i < keysToRewrite.sourceString.length; i++){
const guard = keysToRewrite.sourceString[i];
for (let j = i + 1; j < keysToRewrite.sourceString.length; j++) {
const toRewrite = keysToRewrite.sourceString[j]
if(toRewrite.indexOf(guard) >= 0){
throw `${context} Error in rewrite: sourcestring[${i}] is a substring of sourcestring[${j}]: ${guard} will be substituted away before ${toRewrite} is reached.`
}
}
}
for (let i = 0; i < keysToRewrite.into[0].length; i++){
let t = Utils.Clone(rewrite.renderings)
for (let i1 = 0; i1 < keysToRewrite.sourceString.length; i1++){
@ -338,6 +349,22 @@ class ExpandRewrite<T> extends Conversion<T | RewritableConfigJson<T>, T[]> {
}
class ExpandRewriteWithFlatten<T> extends Conversion<T | RewritableConfigJson<T | T[]>, T[]> {
private _rewrite = new ExpandRewrite<T>()
constructor() {
super("Applies a rewrite, the result is flattened if it is an array", [], "ExpandRewriteWithFlatten");
}
convert(json: RewritableConfigJson<T[] | T> | T, context: string): { result: T[]; errors?: string[]; warnings?: string[]; information?: string[] } {
return undefined;
}
}
export class PrepareLayer extends Fuse<LayerConfigJson> {
constructor(state: DesugaringContext) {
super(

View file

@ -179,7 +179,7 @@ export interface LayerConfigJson {
/**
* Visualisation of the items on the map
*/
mapRendering: null | (PointRenderingConfigJson | LineRenderingConfigJson | RewritableConfigJson<LineRenderingConfigJson | PointRenderingConfigJson>)[]
mapRendering: null | (PointRenderingConfigJson | LineRenderingConfigJson | RewritableConfigJson<LineRenderingConfigJson | PointRenderingConfigJson | LineRenderingConfigJson[] | PointRenderingConfigJson[]>)[]
/**
* If set, this layer will pass all the features it receives onto the next layer.