Skip to content

Commit

Permalink
Small fixes and improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
sergeche committed Jan 1, 2014
1 parent 7c91087 commit abf74e7
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 9 deletions.
7 changes: 5 additions & 2 deletions lib/assets/range.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ define(function(require, exports, module) {
},

/**
* Shifts indexes position with passed <code>delat</code>
* Shifts indexes position with passed <code>delta</code>
* @param {Number} delta
* @returns {Range} range itself
*/
Expand Down Expand Up @@ -221,9 +221,12 @@ define(function(require, exports, module) {
return new Range(start, len);
};

module = module || {};
module.exports.create = module.exports;

module.exports.isRange = function(val) {
return val instanceof Range;
};

/**
* <code>Range</code> object factory, the same as <code>this.create()</code>
* but last argument represents end of range, not length
Expand Down
45 changes: 38 additions & 7 deletions lib/editTree/css.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,24 +214,53 @@ define(function(require, exports, module) {
* @param {Number} offset Offset of properties subset from original source
*/
function consumeProperties(node, source, offset) {
var list = extractPropertiesFromSource(source, offset);

_.each(list, function(property) {
node._children.push(new CSSEditElement(node,
editTree.createToken(property.name.start, property.nameText),
editTree.createToken(property.value.start, property.valueText),
editTree.createToken(property.end.start, property.endText)
));
});
}

/**
* Parses given CSS source and returns list of ranges of located CSS properties.
* Normally, CSS source must contain properties only, it must be,
* for example, a content of CSS selector or text between nested
* CSS sections
* @param {String} source CSS source
* @param {Number} offset Offset of properties subset from original source.
* Used to provide proper ranges of locates items
*/
function extractPropertiesFromSource(source, offset) {
offset = offset || 0;
source = source.replace(reSpaceEnd, '');
var out = [];

if (!source) {
return;
return out;
}

var tokens = cssParser.parse(source);
var it = tokenIterator.create(tokens);
var property;

while ((property = consumeSingleProperty(it, source))) {
node._children.push(new CSSEditElement(node,
editTree.createToken(property.name.start + offset, property.name.substring(source)),
editTree.createToken(property.value.start + offset, property.value.substring(source)),
editTree.createToken(property.end.start + offset, property.end.substring(source))
));
out.push({
nameText: property.name.substring(source),
name: property.name.shift(offset),

valueText: property.value.substring(source),
value: property.value.shift(offset),

endText: property.end.substring(source),
end: property.end.shift(offset)
});
}

return out;
}

/**
Expand Down Expand Up @@ -575,6 +604,8 @@ define(function(require, exports, module) {
* @param {String} str
* @returns {Array}
*/
findParts: findParts
findParts: findParts,

extractPropertiesFromSource: extractPropertiesFromSource
};
});

0 comments on commit abf74e7

Please sign in to comment.