Tapa muokata dokumentin lohkoja JSRunnerissa
Monesti tulee tarve muokata dokumentin sisältöä ja pluginien markupia ohjelmallisesti.
Syntaksi JSRunnerin markupille
blocks:
# Täydellinen esimerkki, alla oletusarvoja
- ref: "1#B231bza=" # Viite lohkoon (ainoa pakollinen arvo, muut valinnaiset)
format: raw # Missä muodossa luetaan (raw = raaka teksti, markup = Markup JS objektina)
modify: true # Saako muokata lohkon sisältö
delete: false # Saako poistaa lohko
add: false # Saako lisätä lohkoja viitatun lohkon ympärille
# Viite pluginiin
- ref: 1.some_plugin
format: markup
# Viite lohkoon sen ID:n perusteella
- ref: 1#some_id
add: true
# Viite kaikkiin dokumentin lohkoihin
- ref: 1
add: true
# Lyhenne: jos käytetään vain oletusarvoja, voi jättää `ref:` pois
- 1.k1
Rajapinta JSRunneriin
GTools
-luokkaan lisätään seuraavat funktiot
type BlockId = string;
type TextBlock = string;
type MarkupBlock = Record<string, unknown>;
type Block = TextBlock | MarkupBlock;
// Kaikki lohkot ja pyydetyt dokumentit.
// Vapaasti muokattavissa, mutta alla olevat funktiot helpottavat käsittelyä.
blocks: Map<number, [BlockId, Block][]>;
// Palauttaa kaikki dokumentin lohkot
function getBlocks(docId: number): Map<BlockId, Block>;
// Palauttaa tietyn lohkon
function getBlock(docId: number, block: BlockId): Block;
// Muokkaa lohkon
function editBlock(docId: number, blockId: BlockId, newBlock: Block): void;
// Poistaa lohkon
function deleteBlock(docId: number, blockId: BlockId): void;
// Lisää lohkon annetun lohkon ylä/alapuolelle
function addBlock(docId: number, blockId: BlockId, block: Block, direction: -1 | 1 = 1): void;
Huomioita ja erikoistapauksia
- Oikeudet: JSRunnerin suorittajalla tulee olla ainakin edit oikeus dokumenttiin
- JSRunnerissa olevat
modify
,edit
,add
varmistavat vielä, että esim. vahingossa ei poisteta tiettyjä lohkoja- Voisiko siinä tapauksessa olla vielä vipu, jolla sallitaan muokkaus, vaikka JSRunnerin suorittajalla ei olisi edit-oikeutta dokumenttiin? => vaara muokata toisten käyttäjien dokumentteja, pitää olla joku JSRunner "omistajan" tarkistus (ks. kommentti)
Edited by Denis Zhidkikh