Skip to content

comparator

createComparator

Signature

javascript
createComparator(parse)

Description

Factory function that creates a comparator object from a custom parse function. The returned comparator exposes isEqual, isEqualFile, isEqualFiles, and compare, all delegating to json after parsing the input strings. Used internally to build the yaml and xml modules.

Parameters

NameTypeRequiredDescription
parsefunctionyesA function that takes a string (and optionally options) and returns a plain object

Returns

TypeDescription
objectA comparator object with isEqual, isEqualFile, isEqualFiles, and compare methods

Examples

javascript
import { createComparator } from './comparator.js'
import TOML from '@ltd/j-toml'

// Create a custom comparator for TOML
export const toml = createComparator((str) => TOML.parse(str))

toml.isEqual('[db]\nport = 5432', '[db]\nport = 5432')  // true
toml.isEqual('[db]\nport = 5432', '[db]\nport = 3306')  // false
toml.isEqualFile('[db]\nport = 5432', './fixtures/expected.toml')  // true or false
toml.isEqualFiles('./fixtures/actual.toml', './fixtures/expected.toml')  // true or false
toml.compare('[db]\nport = 5432', '[db]\nport = 3306')
// { isEqual: false, differences: { missing: [], extra: [], updated: [{ path: 'db.port', oldValue: 5432, newValue: 3306 }] } }