1.0.1 • Published 8 years ago

cssobj-plugin-replace v1.0.1

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

cssobj-plugin-replace

Build Status

cssobj plugin to replace object key/value pair with new value (Object, Array, Function etc.)

Install

  • npm
npm i cssobj-plugin-replace

Then

var cssobj = require('cssobj')
var cssobj_plugin_replace = require('cssobj-plugin-replace')

cssobj(
  { p: {color: 'red'} },
  {
    plugins: [
      cssobj_plugin_replace({
        map:[
          // replace red with blue
          ['color', 'red', 'blue']
        ]
      })
    ]
  }
)

// result:
p { color: blue; }

Quick Start

Replace simple value:

Replace color red with blue

cssobj_plugin_replace({
  map:[
    ['color', 'red', 'blue']
  ]
})

// { p:{color:'red'} } => p {color: blue;}

Replace value with array:

cssobj_plugin_replace({
  map:[
    ['font', '123', [1, 2, 3]]
  ]
})

// { p:{font:123} } => p { font:1; font:2; font:3; }

Replace value with object:

cssobj_plugin_replace({
  map:[
    ['font', 'heading', {fontFamily: 'Arial', fontSize: '24px', fontWeight: 'bold'}]
  ]
})

// { p:{font:'heading'} } => p { font-family: Arial; font-size: 24px; font-weight: bold; }

Replace value with array of object:

cssobj_plugin_replace({
  map:[
    ['display', 'flex', [{display:'-webkit-flex'}, {display:'flex'}]]
  ]
})

// { p:{display:'flex'} } => p { display: -webkit-flex; display: flex; }

Replace any key/value:

Use null as placeholder for any key/value matched.

null as value to match any value

cssobj_plugin_replace({
  map:[
    ['display', null, [{display:'-webkit-flex'}, {display:'flex'}]]
  ]
})

// { p:{display:1} } => p { display: -webkit-flex; display: flex; }

null as key to match any key

cssobj_plugin_replace({
  map:[
    [null, 'red', [{display:'-webkit-flex'}, {display:'flex'}]]
  ]
})

// { p:{color:'red'} } => p { display: -webkit-flex; display: flex; }

Replace with function

newValue can be function to dynamic calc the replacement.

cssobj_plugin_replace({
  map:[
    [null, null, function(key, value){return value>0 ? {[key]: value+'px'} : {[key]:value} }]
  ]
})

// { p:{padding:1, margin:0} } => p { padding: 1px; margin:0; }

Requirement

cssobj version >= 0.5.2

License

MIT