Browse Source

Updated `SelectorManager.get` method, now it can receive an array of selectors to get

pull/1730/head
Artur Arseniev 8 years ago
parent
commit
ad0efce891
  1. 1
      src/css_composer/index.js
  2. 36
      src/selector_manager/index.js
  3. 2
      test/specs/css_composer/index.js
  4. 20
      test/specs/selector_manager/index.js

1
src/css_composer/index.js

@ -393,7 +393,6 @@ module.exports = () => {
const selector = sm.add(node.selectors); const selector = sm.add(node.selectors);
const rule = this.add(selector, node.state); const rule = this.add(selector, node.state);
rule.setStyle(style, opts); rule.setStyle(style, opts);
throw rule.toCSS();
return rule; return rule;
}, },

36
src/selector_manager/index.js

@ -150,6 +150,17 @@ module.exports = config => {
return selector; return selector;
}, },
getSelector(name, type = Selector.TYPE_CLASS) {
if (isId(name)) {
name = name.substr(1);
type = Selector.TYPE_ID;
} else if (isClass(name)) {
name = name.substr(1);
}
return selectors.where({ name, type })[0];
},
/** /**
* Add a new selector to collection if it's not already exists. Class type is a default one * Add a new selector to collection if it's not already exists. Class type is a default one
* @param {String|Array} name Selector/s name * @param {String|Array} name Selector/s name
@ -205,18 +216,27 @@ module.exports = config => {
/** /**
* Get the selector by its name * Get the selector by its name
* @param {String} name Selector name * @param {String|Array} name Selector name
* @param {String} tyoe Selector type * @param {String} tyoe Selector type
* @return {Model|null} * @return {Model|Array}
* @example * @example
* var selector = selectorManager.get('selectorName'); * const selector = selectorManager.get('selectorName');
* // or get an array
* const selectors = selectorManager.get(['class1', 'class2']);
* */ * */
get(name, type = Selector.TYPE_CLASS) { get(name, type) {
if (isId(name)) { if (isArray(name)) {
name = name.substr(1); const result = [];
type = Selector.TYPE_ID; const selectors = name
.map(item => this.getSelector(item))
.filter(item => item);
selectors.forEach(
item => result.indexOf(item) < 0 && result.push(item)
);
return result;
} else {
return this.getSelector(name, type);
} }
return selectors.where({ name, type })[0];
}, },
/** /**

2
test/specs/css_composer/index.js

@ -210,7 +210,7 @@ describe('Css Composer', () => {
test('Create a simple class-based rule with setRule', () => { test('Create a simple class-based rule with setRule', () => {
const selector = '.test'; const selector = '.test';
obj.setRule(selector, { color: 'red' }); const result = obj.setRule(selector, { color: 'red' });
expect(obj.getAll().length).toEqual(1); expect(obj.getAll().length).toEqual(1);
const rule = obj.getRule(selector); const rule = obj.getRule(selector);
expect(rule.selectorsToString()).toEqual(selector); expect(rule.selectorsToString()).toEqual(selector);

20
test/specs/selector_manager/index.js

@ -7,7 +7,7 @@ var e2e = require('./e2e/ClassManager');
var Editor = require('editor/model/Editor'); var Editor = require('editor/model/Editor');
describe('SelectorManager', () => { describe('SelectorManager', () => {
describe('Main', () => { describe.only('Main', () => {
var obj; var obj;
let em; let em;
@ -80,7 +80,7 @@ describe('SelectorManager', () => {
}); });
test('Add multiple selectors', () => { test('Add multiple selectors', () => {
const result = obj.add([ const cls = [
'.test1', '.test1',
'test1', 'test1',
'.test2', '.test2',
@ -89,8 +89,14 @@ describe('SelectorManager', () => {
'test3', 'test3',
'test3', 'test3',
'#test3' '#test3'
]); ];
const result = obj.add(cls);
expect(Array.isArray(result)).toEqual(true); expect(Array.isArray(result)).toEqual(true);
const concat = obj
.getAll()
.map(item => item.getFullName())
.join('');
expect(concat).toEqual('.test1.test2#test3.test3');
expect(obj.getAll().length).toEqual(4); expect(obj.getAll().length).toEqual(4);
expect( expect(
obj obj
@ -116,6 +122,14 @@ describe('SelectorManager', () => {
.at(3) .at(3)
.getFullName() .getFullName()
).toEqual('.test3'); ).toEqual('.test3');
expect(obj.get(cls).length).toEqual(4);
expect(
obj
.get(cls)
.map(item => item.getFullName())
.join('')
).toEqual(concat);
}); });
test('Get selector', () => { test('Get selector', () => {

Loading…
Cancel
Save