12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*!
- * Stylus - Selector
- * Copyright (c) Automattic <developer.wordpress.com>
- * MIT Licensed
- */
- /**
- * Module dependencies.
- */
- var Block = require('./block')
- , Node = require('./node');
- /**
- * Initialize a new `Selector` with the given `segs`.
- *
- * @param {Array} segs
- * @api public
- */
- var Selector = module.exports = function Selector(segs){
- Node.call(this);
- this.inherits = true;
- this.segments = segs;
- this.optional = false;
- };
- /**
- * Inherit from `Node.prototype`.
- */
- Selector.prototype.__proto__ = Node.prototype;
- /**
- * Return the selector string.
- *
- * @return {String}
- * @api public
- */
- Selector.prototype.toString = function(){
- return this.segments.join('') + (this.optional ? ' !optional' : '');
- };
- /**
- * Check if this is placeholder selector.
- *
- * @return {Boolean}
- * @api public
- */
- Selector.prototype.__defineGetter__('isPlaceholder', function(){
- return this.val && ~this.val.substr(0, 2).indexOf('$');
- });
- /**
- * Return a clone of this node.
- *
- * @return {Node}
- * @api public
- */
- Selector.prototype.clone = function(parent){
- var clone = new Selector;
- clone.lineno = this.lineno;
- clone.column = this.column;
- clone.filename = this.filename;
- clone.inherits = this.inherits;
- clone.val = this.val;
- clone.segments = this.segments.map(function(node){ return node.clone(parent, clone); });
- clone.optional = this.optional;
- return clone;
- };
- /**
- * Return a JSON representation of this node.
- *
- * @return {Object}
- * @api public
- */
- Selector.prototype.toJSON = function(){
- return {
- __type: 'Selector',
- inherits: this.inherits,
- segments: this.segments,
- optional: this.optional,
- val: this.val,
- lineno: this.lineno,
- column: this.column,
- filename: this.filename
- };
- };
|