| 'use strict' |
| |
| var count = require('ccount') |
| |
| module.exports = enclose |
| |
| var leftParenthesis = '(' |
| var rightParenthesis = ')' |
| var lessThan = '<' |
| var greaterThan = '>' |
| |
| var expression = /\s/ |
| |
| // Wrap `url` in angle brackets when needed, or when |
| // forced. |
| // In links, images, and definitions, the URL part needs |
| // to be enclosed when it: |
| // |
| // - has a length of `0` |
| // - contains white-space |
| // - has more or less opening than closing parentheses |
| function enclose(uri, always) { |
| if ( |
| always || |
| uri.length === 0 || |
| expression.test(uri) || |
| count(uri, leftParenthesis) !== count(uri, rightParenthesis) |
| ) { |
| return lessThan + uri + greaterThan |
| } |
| |
| return uri |
| } |