ELP Parser API

ProjectDiffer
in package

FinalYes

Compare two parsed eXeLearning projects semantically.

Table of Contents

Methods

diff()  : array<string, mixed>
Compare two parsed projects.
assetHashes()  : array<string, string>
Build resource path-to-hash map.
diffAssets()  : array{added: array, removed: array, modified: array}
Compare project resource files by package path and content hash.
diffItems()  : array{added: array, removed: array, changed: array}
Compare entity arrays by ID, falling back to stable positional keys.
diffMetadata()  : array<string, array{before: mixed, after: mixed}>
Compare core metadata fields.
indexItems()  : array<string, array<string, mixed>>
Index entity arrays by ID or positional fallback.
stripBlockComponents()  : array<int, array<string, mixed>>
Remove nested components from block-level comparisons.
stripNestedPages()  : array<int, array<string, mixed>>
Remove nested blocks/iDevices from page-level comparisons.

Methods

diff()

Compare two parsed projects.

public diff(ELPParser $left, ELPParser $right[, string $algorithm = 'sha256' ]) : array<string, mixed>
Parameters
$left : ELPParser

Left project.

$right : ELPParser

Right project.

$algorithm : string = 'sha256'

Hash algorithm for content/assets.

Return values
array<string, mixed>

assetHashes()

Build resource path-to-hash map.

private assetHashes(ELPParser $parser, string $algorithm) : array<string, string>
Parameters
$parser : ELPParser

Parsed project.

$algorithm : string

Hash algorithm.

Return values
array<string, string>

diffAssets()

Compare project resource files by package path and content hash.

private diffAssets(ELPParser $left, ELPParser $right, string $algorithm) : array{added: array, removed: array, modified: array}
Parameters
$left : ELPParser

Left project.

$right : ELPParser

Right project.

$algorithm : string

Hash algorithm.

Return values
array{added: array, removed: array, modified: array}

diffItems()

Compare entity arrays by ID, falling back to stable positional keys.

private diffItems(array<int, array<string, mixed>> $left, array<int, array<string, mixed>> $right, string $prefix) : array{added: array, removed: array, changed: array}
Parameters
$left : array<int, array<string, mixed>>

Left entities.

$right : array<int, array<string, mixed>>

Right entities.

$prefix : string

Fallback key prefix.

Return values
array{added: array, removed: array, changed: array}

diffMetadata()

Compare core metadata fields.

private diffMetadata(ELPParser $left, ELPParser $right) : array<string, array{before: mixed, after: mixed}>
Parameters
$left : ELPParser

Left project.

$right : ELPParser

Right project.

Return values
array<string, array{before: mixed, after: mixed}>

indexItems()

Index entity arrays by ID or positional fallback.

private indexItems(array<int, array<string, mixed>> $items, string $prefix) : array<string, array<string, mixed>>
Parameters
$items : array<int, array<string, mixed>>

Entities.

$prefix : string

Fallback key prefix.

Return values
array<string, array<string, mixed>>

stripBlockComponents()

Remove nested components from block-level comparisons.

private stripBlockComponents(array<int, array<string, mixed>> $blocks) : array<int, array<string, mixed>>
Parameters
$blocks : array<int, array<string, mixed>>

Blocks.

Return values
array<int, array<string, mixed>>

stripNestedPages()

Remove nested blocks/iDevices from page-level comparisons.

private stripNestedPages(array<int, array<string, mixed>> $pages) : array<int, array<string, mixed>>
Parameters
$pages : array<int, array<string, mixed>>

Pages.

Return values
array<int, array<string, mixed>>
On this page

Search results