[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