[Kimchi-devel] [PATCH 1/3] Extend base classes to support form processing
Aline Manera
alinefm at linux.vnet.ibm.com
Tue Apr 1 18:47:13 UTC 2014
On 03/27/2014 11:59 PM, Adam King wrote:
> Add methods to the base Object and String classes to facilitate jQuery form
> handling.
>
> Signed-off-by: Adam King <rak at linux.vnet.ibm.com>
> ---
> ui/js/src/kimchi.object.js | 85 ++++++++++++++++++++++++++++++++++++++++++++++
> ui/js/src/kimchi.string.js | 45 ++++++++++++++++++++++++
> 2 files changed, 130 insertions(+)
> create mode 100644 ui/js/src/kimchi.object.js
> create mode 100644 ui/js/src/kimchi.string.js
>
> diff --git a/ui/js/src/kimchi.object.js b/ui/js/src/kimchi.object.js
> new file mode 100644
> index 0000000..6ef284a
> --- /dev/null
> +++ b/ui/js/src/kimchi.object.js
> @@ -0,0 +1,85 @@
> +/*
> + * Project Kimchi
> + *
> + * Copyright IBM, Corp. 2014
> + *
> + * Licensed 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.
> + */
> +
> +Object.defineProperty(Object.prototype, "getDeepValue", {
> + value: function(key) {
> + var result=undefined;
> + try {
> + if(!Array.isArray(key)) {
> + key=key.parseKey();
> + }
> + if(key.length!=0) {
> + var tmpName=key.shift();
> + if(this[tmpName]!=undefined) {
> + result=this[tmpName];
> + }
> + if(key.length!=0) {
> + result=result.getDeepValue(key);
> + }
> + }
> + }
> + catch (err) {
> + //do nothing
> + }
> + return(result);
> + }
> +});
> +
> +Object.defineProperty(Object.prototype, "setDeepValue", {
> + value: function(key, val) {
> + var keys;
> + if(Array.isArray(key)) {
> + keys=key;
> + }
> + else {
> + keys=key.parseKey();
> + }
> + if(keys.length!=0) {
> + var key=keys.shift();
> + if(keys.length==0) {
> + if(this[key]==undefined) {
> + this[key]=val;
> + }
> + else if(Array.isArray(this[key])){
> + this[key].push(val);
> + }
> + else {
> + var tmpArray=[]
> + tmpArray.push(this[key]);
> + tmpArray.push(val);
> + result[key]=tmpArray;
> + }
> + }
> + else {
> + if(this[key]==undefined) {
> + this[key]=new Object();
> + this[key].setDeepValue(keys,val);
> + }
> + else if(Array.isArray(this[key])){
> + var tmpO=new Object();
> + this[key].push(tmpO);
> + tmpO.setDeepValue(keys,val);
> + }
> + else {
> + this[key].setDeepValue(keys,val);
> + }
> + }
> + }
> + return(this);
> + }
> +});
> diff --git a/ui/js/src/kimchi.string.js b/ui/js/src/kimchi.string.js
> new file mode 100644
> index 0000000..252ae50
> --- /dev/null
> +++ b/ui/js/src/kimchi.string.js
> @@ -0,0 +1,45 @@
> +/*
> + * Project Kimchi
> + *
> + * Copyright IBM, Corp. 2014
> + *
> + * Licensed 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.
> + */
> +
> +Object.defineProperty(String.prototype, "parseKey", {
> + value: function(parsedKey) {
> + try {
> + if (!Array.isArray(parsedKey)) {
> + parsedKey=[];
> + }
> + }
> + catch (err) {
> + parsedKey=[];
> + }
> + var openBracket=this.indexOf("[");
Does not exist an eval() function in JS to confirm it is a array or not?
I think it would be safer than compare strings.
> + if (openBracket!=-1) {
> + var id=this.slice(0, openBracket);
> + parsedKey.push(id);
> + var closeBracket=this.lastIndexOf("]");
> + if (closeBracket==-1) {
> + closeBracket=this.length;
> + }
> + var tmpName=this.slice(openBracket+1,closeBracket);
> + tmpName.parseKey(parsedKey);
> + }
> + else {
> + parsedKey.push(this);
> + }
> + return(parsedKey);
> + }
> +});
More information about the Kimchi-devel
mailing list