Repository: incubator-weex Updated Branches: refs/heads/master 3c5b1241f -> da1f70e57 (forced update)
- [jsfm] remove directive filter in attributes - [jsfm] remove test cases of directive filter close #899 Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/da1f70e5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/da1f70e5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/da1f70e5 Branch: refs/heads/master Commit: da1f70e57112d76fe6a5164df2c691e6e9d873a4 Parents: 0535ac6 Author: Hanks <zhanghan...@gmail.com> Authored: Wed Nov 22 19:06:02 2017 +0800 Committer: acton393 <zhangxing610...@gmail.com> Committed: Thu Nov 23 21:32:54 2017 +0800 ---------------------------------------------------------------------- html5/runtime/vdom/Element.js | 5 +- html5/runtime/vdom/directive.js | 69 ----------------- html5/test/unit/runtime/vdom/directive.js | 101 ------------------------- 3 files changed, 2 insertions(+), 173 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/da1f70e5/html5/runtime/vdom/Element.js ---------------------------------------------------------------------- diff --git a/html5/runtime/vdom/Element.js b/html5/runtime/vdom/Element.js index 01e3045..712b925 100644 --- a/html5/runtime/vdom/Element.js +++ b/html5/runtime/vdom/Element.js @@ -30,7 +30,6 @@ import { } from './operation' import { uniqueId } from '../utils' import { getWeexElement, setElement } from './WeexElement' -import { filterDirective } from './directive' const DEFAULT_TAG_NAME = 'div' const BUBBLE_EVENTS = [ @@ -289,7 +288,7 @@ export default class Element extends Node { const taskCenter = getTaskCenter(this.docId) if (!silent && taskCenter) { const result = {} - result[key] = filterDirective(value) + result[key] = value taskCenter.send( 'dom', { action: 'updateAttrs' }, @@ -471,7 +470,7 @@ export default class Element extends Node { const result = { ref: this.ref.toString(), type: this.type, - attr: filterDirective(this.attr), + attr: this.attr, style: this.toStyle() } const event = [] http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/da1f70e5/html5/runtime/vdom/directive.js ---------------------------------------------------------------------- diff --git a/html5/runtime/vdom/directive.js b/html5/runtime/vdom/directive.js deleted file mode 100644 index 4d82fde..0000000 --- a/html5/runtime/vdom/directive.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { typof } from '../utils' - -// match the binding delimiter -const delimiterRE = /\[\[((?:.|\n)+?)\]\]/g - -export function generateBinding (text) { - if (typof(text) === 'String') { - return { '@binding': text } - } - return text -} - -export function parseString (string) { - const tokens = [] - let lastIndex = delimiterRE.lastIndex = 0 - let match, index - while ((match = delimiterRE.exec(string))) { - index = match.index - if (index > lastIndex) { - tokens.push(string.slice(lastIndex, index)) - } - const binding = generateBinding(match[1].trim()) - tokens.push(binding) - lastIndex = index + match[0].length - } - if (lastIndex < string.length) { - tokens.push(string.slice(lastIndex)) - } - if (tokens.length === 1) { - return tokens[0] - } - return tokens -} - -export function filterDirective (value) { - if (typof(value) === 'String' && delimiterRE.test(value)) { - return parseString(value) - } - if (typof(value) === 'Object') { - const realData = {} - for (const key in value) { - realData[key] = filterDirective(value[key]) - } - return realData - } - if (typof(value) === 'Array') { - return value.map(filterDirective) - } - return value -} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/da1f70e5/html5/test/unit/runtime/vdom/directive.js ---------------------------------------------------------------------- diff --git a/html5/test/unit/runtime/vdom/directive.js b/html5/test/unit/runtime/vdom/directive.js deleted file mode 100644 index cafb33d..0000000 --- a/html5/test/unit/runtime/vdom/directive.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { expect } from 'chai' -import { filterDirective } from '../../../../runtime/vdom/directive' - -describe('filterDirective', () => { - it('other type', () => { - expect(filterDirective(0)).to.be.equal(0) - expect(filterDirective(53)).to.be.equal(53) - expect(filterDirective(null)).to.be.equal(null) - const reg = /\w+/i - expect(filterDirective(reg)).to.be.equal(reg) - }) - - it('normal string', () => { - expect(filterDirective('')).to.be.equal('') - expect(filterDirective('-1')).to.be.equal('-1') - expect(filterDirective('abc')).to.be.equal('abc') - expect(filterDirective(' a bc d')).to.be.equal(' a bc d') - expect(filterDirective(' a {{ bc }}')).to.be.equal(' a {{ bc }}') - }) - - it('binding', () => { - expect(filterDirective('[[abc]]')).to.deep.equal({ '@binding': 'abc' }) - expect(filterDirective('[[ xyz ]]')).to.deep.equal({ '@binding': 'xyz' }) - expect(filterDirective('[[ x y z ]]')).to.deep.equal({ '@binding': 'x y z' }) - }) - - it('binding and normal string', () => { - expect(filterDirective('xyz[[abc]]ttt')).to.deep.equal(['xyz', { '@binding': 'abc' }, 'ttt']) - expect(filterDirective(' x [[ w ]] t ')).to.deep.equal([' x ', { '@binding': 'w' }, ' t ']) - expect(filterDirective('[[ wn]][xx{uur}]')).to.deep.equal([{ '@binding': 'wn' }, '[xx{uur}]']) - }) - - it('multi-binding', () => { - expect(filterDirective('[[abc]][[wpc]]')).to.deep.equal([{ '@binding': 'abc' }, { '@binding': 'wpc' }]) - expect(filterDirective('abcd[[ xyz ]]ef[[w]]gh')).to.deep.equal([ - 'abcd', - { '@binding': 'xyz' }, - 'ef', - { '@binding': 'w' }, - 'gh' - ]) - expect(filterDirective(' a [[ b ]] [[c]] d [[e]][[f]]g')).to.deep.equal([ - ' a ', - { '@binding': 'b' }, - ' ', - { '@binding': 'c' }, - ' d ', - { '@binding': 'e' }, - { '@binding': 'f' }, - 'g' - ]) - }) - - it('parse object', () => { - expect(filterDirective({ key: '[[x]]' })).to.deep.equal({ key: { '@binding': 'x' }}) - expect(filterDirective({ a: '[[A]]', b: '[[B]]' })).to.deep.equal({ - a: { '@binding': 'A' }, - b: { '@binding': 'B' } - }) - expect(filterDirective({ - a: '[[A]]', - x: 'X', - y: { - b: ' - [[B]] - ', - z: { - c: ['[[C]] + [[C]]', 'cc'], - w: 24 - } - } - })).to.deep.equal({ - a: { '@binding': 'A' }, - x: 'X', - y: { - b: [' - ', { '@binding': 'B' }, ' - '], - z: { - c: [[{ '@binding': 'C' }, ' + ', { '@binding': 'C' }], 'cc'], - w: 24 - } - } - }) - }) -})