Comment

Comment

Represents a comment between declarations or statements (rule and at-rules).

Comments inside selectors, at-rule parameters, or declaration values will be stored in the raws properties explained above.

Constructor

new Comment()

Source:

Extends

Members

parent :Container

Source:
Inherited From:

the node’s parent node.

Type:
Example
root.nodes[0].parent == root;

raws :object

Source:
Overrides:

Information to generate byte-to-byte equal node string as it was in the origin input.

Every parser saves its own properties, but the default CSS parser uses:

  • before: the space symbols before the node.
  • left: the space symbols between /* and the comment’s text.
  • right: the space symbols between the comment’s text.
Type:
  • object

source :source

Source:
Inherited From:

the input source of the node

The property is used in source map generation.

If you create a node manually (e.g., with postcss.decl()), that node will not have a source property and will be absent from the source map. For this reason, the plugin developer should consider cloning nodes to create new ones (in which case the new node’s source will reference the original, cloned node) or setting the source property manually.

// Bad
const prefixed = postcss.decl({
  prop: '-moz-' + decl.prop,
  value: decl.value
});

// Good
const prefixed = decl.clone({ prop: '-moz-' + decl.prop });
if ( atrule.name == 'add-link' ) {
  const rule = postcss.rule({ selector: 'a', source: atrule.source });
  atrule.parent.insertBefore(atrule, rule);
}
Type:
Example
decl.source.input.from //=> '/home/ai/a.sass'
decl.source.start      //=> { line: 10, column: 2 }
decl.source.end        //=> { line: 10, column: 12 }

text :string

Source:

the comment’s text

Type:
  • string

type :string

Source:
Overrides:

String representing the node’s type. Possible values are root, atrule, rule, decl, or comment.

Type:
  • string
Example
postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'

Methods

clone(overridesopt) → {Node}

Source:
Inherited From:

Returns a clone of the node.

The resulting cloned node and its (cloned) children will have a clean parent and code style properties.

Example
const cloned = decl.clone({ prop: '-moz-' + decl.prop });
cloned.raws.before  //=> undefined
cloned.parent       //=> undefined
cloned.toString()   //=> -moz-transform: scale(0)
Parameters:
Name Type Attributes Description
overrides object <optional>

new properties to override in the clone.

Returns:

clone of the node

Type
Node

cloneAfter(overridesopt) → {Node}

Source:
Inherited From:

Shortcut to clone the node and insert the resulting cloned node after the current node.

Parameters:
Name Type Attributes Description
overrides object <optional>

new properties to override in the clone.

Returns:
  • new node
Type
Node

cloneBefore(overridesopt) → {Node}

Source:
Inherited From:

Shortcut to clone the node and insert the resulting cloned node before the current node.

Example
decl.cloneBefore({ prop: '-moz-' + decl.prop });
Parameters:
Name Type Attributes Description
overrides object <optional>

new properties to override in the clone.

Returns:
  • new node
Type
Node

error(message, optsopt) → {CssSyntaxError}

Source:
Inherited From:

Returns a CssSyntaxError instance containing the original position of the node in the source, showing line and column numbers and also a small excerpt to facilitate debugging.

If present, an input source map will be used to get the original position of the source, even from a previous compilation step (e.g., from Sass compilation).

This method produces very useful error messages.

Example
if ( !variables[name] ) {
  throw decl.error('Unknown variable ' + name, { word: name });
  // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black
  //   color: $black
  // a
  //          ^
  //   background: white
}
Parameters:
Name Type Attributes Description
message string

error description

opts object <optional>

options

Properties
Name Type Description
plugin string

plugin name that created this error. PostCSS will set it automatically.

word string

a word inside a node’s string that should be highlighted as the source of the error

index number

an index inside a node’s string that should be highlighted as the source of the error

Returns:

error object to throw it

Type
CssSyntaxError

moveAfter(otherNode) → {Node}

Source:
Inherited From:

Removes the node from its current parent and inserts it into a new parent after otherNode.

This will also clean the node’s code style properties just as it would in Node#moveTo.

Parameters:
Name Type Description
otherNode Node

node that will be after current node

Returns:

current node to methods chain

Type
Node

moveBefore(otherNode) → {Node}

Source:
Inherited From:

Removes the node from its current parent and inserts it into a new parent before otherNode.

This will also clean the node’s code style properties just as it would in Node#moveTo.

Parameters:
Name Type Description
otherNode Node

node that will be before current node

Returns:

current node to methods chain

Type
Node

moveTo(newParent) → {Node}

Source:
Inherited From:

Removes the node from its current parent and inserts it at the end of newParent.

This will clean the before and after code Node#raws data from the node and replace them with the indentation style of newParent. It will also clean the between property if newParent is in another Root.

Example
atrule.moveTo(atrule.root());
Parameters:
Name Type Description
newParent Container

container node where the current node will be moved

Returns:

current node to methods chain

Type
Node

next() → {Node|undefined}

Source:
Inherited From:

Returns the next child of the node’s parent. Returns undefined if the current node is the last child.

Example
if ( comment.text === 'delete next' ) {
  const next = comment.next();
  if ( next ) {
    next.remove();
  }
}
Returns:

next node

Type
Node | undefined

prev() → {Node|undefined}

Source:
Inherited From:

Returns the previous child of the node’s parent. Returns undefined if the current node is the first child.

Example
const annotation = decl.prev();
if ( annotation.type == 'comment' ) {
 readAnnotation(annotation.text);
}
Returns:

previous node

Type
Node | undefined

raw(prop, defaultTypeopt) → {string}

Source:
Inherited From:

Returns a Node#raws value. If the node is missing the code style property (because the node was manually built or cloned), PostCSS will try to autodetect the code style property by looking at other nodes in the tree.

Example
const root = postcss.parse('a { background: white }');
root.nodes[0].append({ prop: 'color', value: 'black' });
root.nodes[0].nodes[1].raws.before   //=> undefined
root.nodes[0].nodes[1].raw('before') //=> ' '
Parameters:
Name Type Attributes Description
prop string

name of code style property

defaultType string <optional>

name of default value, it can be missed if the value is the same as prop

Returns:

code style value

Type
string

remove() → {Node}

Source:
Inherited From:

Removes the node from its parent and cleans the parent properties from the node and its children.

Example
if ( decl.prop.match(/^-webkit-/) ) {
  decl.remove();
}
Returns:

node to make calls chain

Type
Node

replaceWith(…nodes) → {Node}

Source:
Inherited From:

Inserts node(s) before the current node and removes the current node.

Example
if ( atrule.name == 'mixin' ) {
  atrule.replaceWith(mixinRules[atrule.params]);
}
Parameters:
Name Type Attributes Description
nodes Node <repeatable>

node(s) to replace current one

Returns:

current node to methods chain

Type
Node

root() → {Root}

Source:
Inherited From:

Finds the Root instance of the node’s tree.

Example
root.nodes[0].nodes[0].root() === root
Returns:

root parent

Type
Root

toString(stringifieropt) → {string}

Source:
Inherited From:

Returns a CSS string representing the node.

Example
postcss.rule({ selector: 'a' }).toString() //=> "a {}"
Parameters:
Name Type Attributes Description
stringifier stringifier | syntax <optional>

a syntax to use in string generation

Returns:

CSS string of this node

Type
string

warn(result, text, optsopt) → {Warning}

Source:
Inherited From:

This method is provided as a convenience wrapper for Result#warn.

Example
const plugin = postcss.plugin('postcss-deprecated', () => {
  return (root, result) => {
    root.walkDecls('bad', decl => {
      decl.warn(result, 'Deprecated property bad');
    });
  };
});
Parameters:
Name Type Attributes Description
result Result

the Result instance that will receive the warning

text string

warning message

opts object <optional>

options

Properties
Name Type Description
plugin string

plugin name that created this warning. PostCSS will set it automatically.

word string

a word inside a node’s string that should be highlighted as the source of the warning

index number

an index inside a node’s string that should be highlighted as the source of the warning

Returns:

created warning object

Type
Warning