Skip to content

Commit 3b5aa32

Browse files
committed
Refactor to move implementation to lib/
1 parent 9054f2d commit 3b5aa32

File tree

3 files changed

+78
-76
lines changed

3 files changed

+78
-76
lines changed

index.js

Lines changed: 1 addition & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1 @@
1-
/**
2-
* @typedef {import('unist').Point} Point
3-
* @typedef {import('unist').Node} Node
4-
* @typedef {import('unist').Position} Position
5-
*/
6-
7-
/**
8-
* @typedef NodeLike
9-
* @property {string} type
10-
* @property {PositionLike | null | undefined} [position]
11-
*
12-
* @typedef PositionLike
13-
* @property {PointLike | null | undefined} [start]
14-
* @property {PointLike | null | undefined} [end]
15-
*
16-
* @typedef PointLike
17-
* @property {number | null | undefined} [line]
18-
* @property {number | null | undefined} [column]
19-
* @property {number | null | undefined} [offset]
20-
*/
21-
22-
/**
23-
* Stringify one point, a position (start and end points), or a node’s
24-
* positional information.
25-
*
26-
* @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]
27-
* @returns {string}
28-
*/
29-
export function stringifyPosition(value) {
30-
// Nothing.
31-
if (!value || typeof value !== 'object') {
32-
return ''
33-
}
34-
35-
// Node.
36-
if ('position' in value || 'type' in value) {
37-
return position(value.position)
38-
}
39-
40-
// Position.
41-
if ('start' in value || 'end' in value) {
42-
return position(value)
43-
}
44-
45-
// Point.
46-
if ('line' in value || 'column' in value) {
47-
return point(value)
48-
}
49-
50-
// ?
51-
return ''
52-
}
53-
54-
/**
55-
* @param {Point | PointLike | null | undefined} point
56-
* @returns {string}
57-
*/
58-
function point(point) {
59-
return index(point && point.line) + ':' + index(point && point.column)
60-
}
61-
62-
/**
63-
* @param {Position | PositionLike | null | undefined} pos
64-
* @returns {string}
65-
*/
66-
function position(pos) {
67-
return point(pos && pos.start) + '-' + point(pos && pos.end)
68-
}
69-
70-
/**
71-
* @param {number | null | undefined} value
72-
* @returns {number}
73-
*/
74-
function index(value) {
75-
return value && typeof value === 'number' ? value : 1
76-
}
1+
export {stringifyPosition} from './lib/index.js'

lib/index.js

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/**
2+
* @typedef {import('unist').Point} Point
3+
* @typedef {import('unist').Node} Node
4+
* @typedef {import('unist').Position} Position
5+
*/
6+
7+
/**
8+
* @typedef NodeLike
9+
* @property {string} type
10+
* @property {PositionLike | null | undefined} [position]
11+
*
12+
* @typedef PositionLike
13+
* @property {PointLike | null | undefined} [start]
14+
* @property {PointLike | null | undefined} [end]
15+
*
16+
* @typedef PointLike
17+
* @property {number | null | undefined} [line]
18+
* @property {number | null | undefined} [column]
19+
* @property {number | null | undefined} [offset]
20+
*/
21+
22+
/**
23+
* Stringify one point, a position (start and end points), or a node’s
24+
* positional information.
25+
*
26+
* @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]
27+
* @returns {string}
28+
*/
29+
export function stringifyPosition(value) {
30+
// Nothing.
31+
if (!value || typeof value !== 'object') {
32+
return ''
33+
}
34+
35+
// Node.
36+
if ('position' in value || 'type' in value) {
37+
return position(value.position)
38+
}
39+
40+
// Position.
41+
if ('start' in value || 'end' in value) {
42+
return position(value)
43+
}
44+
45+
// Point.
46+
if ('line' in value || 'column' in value) {
47+
return point(value)
48+
}
49+
50+
// ?
51+
return ''
52+
}
53+
54+
/**
55+
* @param {Point | PointLike | null | undefined} point
56+
* @returns {string}
57+
*/
58+
function point(point) {
59+
return index(point && point.line) + ':' + index(point && point.column)
60+
}
61+
62+
/**
63+
* @param {Position | PositionLike | null | undefined} pos
64+
* @returns {string}
65+
*/
66+
function position(pos) {
67+
return point(pos && pos.start) + '-' + point(pos && pos.end)
68+
}
69+
70+
/**
71+
* @param {number | null | undefined} value
72+
* @returns {number}
73+
*/
74+
function index(value) {
75+
return value && typeof value === 'number' ? value : 1
76+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"main": "index.js",
3131
"types": "index.d.ts",
3232
"files": [
33+
"lib/",
3334
"index.d.ts",
3435
"index.js"
3536
],

0 commit comments

Comments
 (0)