Zum Hauptinhalt springen

ObjectHelper

Diese Helferklasse ermöglicht die Erstellung von Objekten und das Rendern von handlebar-ähnlichen Strings.

ObjectHelper Members

assign Object

Mit der Methode assign werden die Werte aller Eigenschaften mehrerer Objekte zu einem neuen Objekt zusammengefasst.

Verhalten
  • Gleichnamige Eigenschaften werden immer mit dem letzten Eintrag überschrieben.
  • Gleichnamige Arrays werden aneinandergehängt.
ObjectHelper.assign<T>(init: T, ...sources: any[]): T

Parameter:

  • init: Das erste Objekt, das zur Initialisierung der Werte verwendet werden soll.
  • sources: Weitere Quell-Objekte, aus denen die Eigenschaften zusammengefügt werden sollen.
context.enableModules();
const { ObjectHelper } = require("ou.sp.ObjectHelper");

context.returnValue = JSON.stringify(
ObjectHelper.assign(
{
prop1: {
deep: {
myProp: false,
array: [1, 2, 3],
},
},
},
{
prop1: {
deep: {
myProp: true,
otherProp: false,
array: [4, 5, 6],
},
},
}
)
);
// returnValue ==
// {
// "prop1": {
// "deep": {
// "myProp": true,
// "otherProp": false,
// "array": [1, 2, 3, 4, 5, 6]
// }
// }
// }

assignFromJSON Object

Die assignFromJSON-Methode nimm ein JSON-String, parsed diesen und kopiert die Werte aller Eigenschaften aus dem Zielobjekt und den Quell-Objekten in ein neues Objekt.

ObjectHelper.assignFromJSON<T>(init: T, json: string): T
  • static

Parameter:

  • init: Object: Das erste Objekt, das zur Initialisierung der Werte verwendet werden soll.
  • json: string: Ein JSON-String, aus dem die Eigenschaften kopiert werden sollen.

Beispiel:

context.enableModules();
const { ObjectHelper } = require("ou.sp.ObjectHelper");

context.returnValue = JSON.stringify(
ObjectHelper.assignFromJson(
{
prop1: {
deep: {
myProp: true,
array: [1, 2, 3],
},
},
},
'{ "prop1": { "deep": { "otherProp": false, "array": [4, 5, 6] } } }'
)
);
// returnValue ==
// {
// "prop1": {
// "deep": {
// "myProp": true,
// "otherProp": false,
// "array": [1, 2, 3, 4, 5, 6]
// }
// }
// }

functionToString string

Konvertiert eine Funktion in ein String.

ObjectHelper.functionToString(func: Function): string
  • static

Parameter:

  • func: Funktion: Die gewünschte Funktion
context.enableModules();
const { ObjectHelper } = require("ou.sp.ObjectHelper");

function mySuperCoolFunction() {
// jep, does nothing...
}

const myFunctionAsString = ObjectHelper.functionToString(mySuperCoolFunction);
// myFunctionAsString ==
// "function mySuperCoolFunction() {\r\n
// // jep, does nothing...\r\n
// }"

renderTemplateString string

Kompiliert ein semantic templates String (Mustache templates) anhand des angegeben Daten-Objekts.

ObjectHelper.renderTemplateString(template: string, data: Object): string
  • static

Parameter:

  • template: string: Ein semantic template string mit Platzhalter, z.B. "Hello my name is {{name}}"
  • data: Object: Ein Objekt mit Eigenschaften, welches die Platzhalter ersetzen kann. z.B. { name: "Chuck Norris" }
context.enableModules();
const { ObjectHelper } = require("ou.sp.ObjectHelper");

const template = "Hello my name is {{name}}"
const data = {
name: "Chuck Norris"
}

const myFunctionAsString = ObjectHelper.renderTemplateString(template, data);
// Hello my name is Chuck Norris

renderTemplateStringCustom string

Kompiliert ein semantic templates String (Mustache templates) anhand des angegeben Daten-Objekts.

ObjectHelper.renderTemplateStringCustom(template: string, replace: (key:string) => string): string
  • static

Parameter:

  • template: string: Ein semantic template string mit Platzhalter, z.B. "Hello my name is {{name}}"
  • replace: (key:string) => string: Eine Callback Funktion, welche den Platzhalter als string übergibt und ein string als Rückgabewert erwartet.
context.enableModules();
const { ObjectHelper } = require("ou.sp.ObjectHelper");

/** @type {ptpInvoice} */
const docFile = context.file // beinhaltet Feld netAmount1 und vatRate1
const template = "Netto {{netAmount1}}€ mit {{vatRate1}}% Steuer."

const myFunctionAsString = ObjectHelper.renderTemplateStringCustom(template, (placeholder) => {
return docFile.getFieldAutoText(placeholder)
});
// Netto 100,00€ mit 19,00% Steuer