1
0
mirror of https://github.com/thangisme/notes.git synced 2024-11-01 03:27:29 -04:00
notes/node_modules/stylelint/lib/utils/isStandardSyntaxUrl.js
Patrick Marsceill b7b0d0d7bf
Initial commit
2017-03-09 13:16:08 -05:00

46 lines
1.3 KiB
JavaScript

/* @flow */
"use strict"
const hasLessInterpolation = require("../utils/hasLessInterpolation")
const hasPsvInterpolation = require("../utils/hasPsvInterpolation")
const hasScssInterpolation = require("../utils/hasScssInterpolation")
/**
* Check whether a URL is standard
*/
module.exports = function (url/*: string*/)/*: boolean*/ {
if (url.length === 0) {
return true
}
// Sass interpolation works anywhere
if (hasScssInterpolation(url) || hasPsvInterpolation(url)) {
return false
}
// Inside `'` and `"` work only LESS interpolation
if (url[0] === "'" && url[url.length - 1] === "'" || url[0] === "\"" && url[url.length - 1] === "\"") {
if (hasLessInterpolation(url)) {
return false
}
return true
}
// Less variable works only at the beginning
// Check is less variable, allow use '@url/some/path'
// https://github.com/less/less.js/blob/3.x/lib/less/parser/parser.js#L547
if (url[0] === "@" && /^@@?[\w-]+$/.test(url)) {
return false
}
// In url without quotes scss variable can be everywhere
// But in this case it is allowed to use only specific characters
// Also forbidden "/" at the end of url
if (url.indexOf("$") !== -1 && /^[\$\sA-Za-z0-9+-/*_'"\/]+$/.test(url) && url[url.length - 1] !== "/") {
return false
}
return true
}