CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
parser.js105 linesDownload Raw Back to postcss-js
1let postcss = require('postcss')2 3let IMPORTANT = /\s*!important\s*$/i4 5let UNITLESS = {6  'box-flex': true,7  'box-flex-group': true,8  'column-count': true,9  'flex': true,10  'flex-grow': true,11  'flex-positive': true,12  'flex-shrink': true,13  'flex-negative': true,14  'font-weight': true,15  'line-clamp': true,16  'line-height': true,17  'opacity': true,18  'order': true,19  'orphans': true,20  'tab-size': true,21  'widows': true,22  'z-index': true,23  'zoom': true,24  'fill-opacity': true,25  'stroke-dashoffset': true,26  'stroke-opacity': true,27  'stroke-width': true28}29 30function dashify(str) {31  return str32    .replace(/([A-Z])/g, '-$1')33    .replace(/^ms-/, '-ms-')34    .toLowerCase()35}36 37function decl(parent, name, value) {38  if (value === false || value === null) return39 40  if (!name.startsWith('--')) {41    name = dashify(name)42  }43 44  if (typeof value === 'number') {45    if (value === 0 || UNITLESS[name]) {46      value = value.toString()47    } else {48      value += 'px'49    }50  }51 52  if (name === 'css-float') name = 'float'53 54  if (IMPORTANT.test(value)) {55    value = value.replace(IMPORTANT, '')56    parent.push(postcss.decl({ prop: name, value, important: true }))57  } else {58    parent.push(postcss.decl({ prop: name, value }))59  }60}61 62function atRule(parent, parts, value) {63  let node = postcss.atRule({ name: parts[1], params: parts[3] || '' })64  if (typeof value === 'object') {65    node.nodes = []66    parse(value, node)67  }68  parent.push(node)69}70 71function parse(obj, parent) {72  let name, node, value73  for (name in obj) {74    value = obj[name]75    if (value === null || typeof value === 'undefined') {76      continue77    } else if (name[0] === '@') {78      let parts = name.match(/@(\S+)(\s+([\W\w]*)\s*)?/)79      if (Array.isArray(value)) {80        for (let i of value) {81          atRule(parent, parts, i)82        }83      } else {84        atRule(parent, parts, value)85      }86    } else if (Array.isArray(value)) {87      for (let i of value) {88        decl(parent, name, i)89      }90    } else if (typeof value === 'object') {91      node = postcss.rule({ selector: name })92      parse(value, node)93      parent.push(node)94    } else {95      decl(parent, name, value)96    }97  }98}99 100module.exports = function (obj) {101  let root = postcss.root()102  parse(obj, root)103  return root104}105 
basant307/AI_Governance_Project · CoolFace