What is mdurl?
The mdurl npm package is a utility for encoding and decoding URLs in a manner that is consistent with Markdown specifications. It is particularly useful when dealing with Markdown files that contain URLs which may need to be properly escaped to ensure they are interpreted correctly by Markdown parsers.
What are mdurl's main functionalities?
URL Encoding
Encodes a URL by escaping characters that are not allowed in Markdown URLs. This is useful for creating Markdown links that contain special characters.
var encode = require('mdurl/encode');
console.log(encode('https://example.com/foo bar'));
URL Decoding
Decodes a URL by unescaping percent-encoded characters. This is useful for reading and processing Markdown links that contain encoded characters.
var decode = require('mdurl/decode');
console.log(decode('https://example.com/foo%20bar'));
Other packages similar to mdurl
query-string
The query-string package provides methods for parsing and stringifying URL query strings. It is similar to mdurl in that it deals with URL manipulation, but it focuses specifically on the query string part of the URL.
url-parse
The url-parse package offers utilities for URL parsing and formatting. It provides more comprehensive URL manipulation capabilities compared to mdurl, including parsing of the entire URL structure, not just encoding and decoding.
mdurl
URL utilities for markdown-it parser.
API
.encode(str [, exclude, keepEncoded]) -> String
Percent-encode a string, avoiding double encoding. Don't touch /a-zA-Z0-9/
+
excluded chars + /%[a-fA-F0-9]{2}/
(if not disabled). Broken surrorates are
replaced with U+FFFD
.
Params:
- str - input string.
- exclude - optional,
;/?:@&=+$,-_.!~*'()#
. Additional chars to keep intact
(except /a-zA-Z0-9/
). - keepEncoded - optional,
true
. By default it skips already encoded sequences
(/%[a-fA-F0-9]{2}/
). If set to false
, %
will be encoded.
encode.defaultChars, encode.componentChars
You can use these constants as second argument to encode
function.
encode.defaultChars
is the same exclude set as in the standard encodeURI()
functionencode.componentChars
is the same exclude set as in the encodeURIComponent()
function
For example, encode('something', encode.componentChars, true)
is roughly the equivalent of
the encodeURIComponent()
function (except encode()
doesn't throw).
.decode(str [, exclude]) -> String
Decode percent-encoded string. Invalid percent-encoded sequences (e.g. %2G
)
are left as is. Invalid UTF-8 characters are replaced with U+FFFD
.
Params:
- str - input string.
- exclude - set of characters to leave encoded, optional,
;/?:@&=+$,#
.
decode.defaultChars, decode.componentChars
You can use these constants as second argument to decode
function.
decode.defaultChars
is the same exclude set as in the standard decodeURI()
functiondecode.componentChars
is the same exclude set as in the decodeURIComponent()
function
For example, decode('something', decode.defaultChars)
has the same behavior as
decodeURI('something')
on a correctly encoded input.
.parse(url, slashesDenoteHost) -> urlObs
Parse url string. Similar to node's url.parse, but without any
normalizations and query string parse.
- url - input url (string)
- slashesDenoteHost - if url starts with
//
, expect a hostname after it. Optional, false
.
Result (hash):
- protocol
- slashes
- auth
- port
- hostname
- hash
- search
- pathname
Difference with node's url
:
- No leading slash in paths, e.g. in
url.parse('http://foo?bar')
pathname is
``, not /
- Backslashes are not replaced with slashes, so
http:\\example.org\
is
treated like a relative path - Trailing colon is treated like a part of the path, i.e. in
http://example.org:foo
pathname is :foo
- Nothing is URL-encoded in the resulting object, (in joyent/node some chars
in auth and paths are encoded)
url.parse()
does not have parseQueryString
argument- Removed extraneous result properties:
host
, path
, query
, etc.,
which can be constructed using other parts of the url.
.format(urlObject)
Format an object previously obtained with .parse()
function. Similar to node's
url.format.
License
MIT