1234567891011121314151617181920212223242526272829303132333435363738 |
- const {inspect} = require('util');
- /////////////////////////////////////////////////////////////
- // Returns {line, column} of an index within multi-line text.
- function getIndexPos(text, index) {
- let lineIdx = 0, colIdx = index, pos = 0;
- do {
- pos = text.indexOf('\n', pos);
- if (pos === -1 || index < pos + 1) {
- break;
- }
- lineIdx++;
- pos++;
- colIdx = index - pos;
- } while (pos < index);
- return {
- line: lineIdx + 1,
- column: colIdx + 1
- };
- }
- ///////////////////////////////////////////
- // Returns a space gap for console output.
- function messageGap(level) {
- return ' '.repeat(level * 4);
- }
- ////////////////////////////////////////////////////
- // Type inspection
- function addInspection(type, cb) {
- type[inspect.custom] = cb;
- }
- module.exports = {
- getIndexPos,
- messageGap,
- addInspection
- };
|