61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
/**
|
|
* @typedef {import('unist').Node} Node
|
|
* @typedef {import('unist').Point} Point
|
|
* @typedef {import('unist').Position} Position
|
|
*/
|
|
/**
|
|
* @typedef NodeLike
|
|
* @property {string} type
|
|
* @property {PositionLike | null | undefined} [position]
|
|
*
|
|
* @typedef PositionLike
|
|
* @property {PointLike | null | undefined} [start]
|
|
* @property {PointLike | null | undefined} [end]
|
|
*
|
|
* @typedef PointLike
|
|
* @property {number | null | undefined} [line]
|
|
* @property {number | null | undefined} [column]
|
|
* @property {number | null | undefined} [offset]
|
|
*/
|
|
/**
|
|
* Serialize the positional info of a point, position (start and end points),
|
|
* or node.
|
|
*
|
|
* @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]
|
|
* Node, position, or point.
|
|
* @returns {string}
|
|
* Pretty printed positional info of a node (`string`).
|
|
*
|
|
* In the format of a range `ls:cs-le:ce` (when given `node` or `position`)
|
|
* or a point `l:c` (when given `point`), where `l` stands for line, `c` for
|
|
* column, `s` for `start`, and `e` for end.
|
|
* An empty string (`''`) is returned if the given value is neither `node`,
|
|
* `position`, nor `point`.
|
|
*/
|
|
export function stringifyPosition(
|
|
value?:
|
|
| Node
|
|
| NodeLike
|
|
| Position
|
|
| PositionLike
|
|
| Point
|
|
| PointLike
|
|
| null
|
|
| undefined
|
|
): string
|
|
export type Node = import('unist').Node
|
|
export type Point = import('unist').Point
|
|
export type Position = import('unist').Position
|
|
export type NodeLike = {
|
|
type: string
|
|
position?: PositionLike | null | undefined
|
|
}
|
|
export type PositionLike = {
|
|
start?: PointLike | null | undefined
|
|
end?: PointLike | null | undefined
|
|
}
|
|
export type PointLike = {
|
|
line?: number | null | undefined
|
|
column?: number | null | undefined
|
|
offset?: number | null | undefined
|
|
}
|