can someone help please ?
I m really a newbie in writing plugins

On Dec 2, 1:49 pm, bucheron <[EMAIL PROTECTED]> wrote:
> Hi everyone,
>
> I would like to do some manipulation on Jquery 
> Parser:http://projects.allmarkedup.com/jquery_url_parser/
>
> but as I have always used it as regular I don't know how to modify
> this plugin.
> My purpose is to add a function that will add or set a new parameter:
>
> below is the code of the current plugin:
>
> In advance thanks
> [code]
> /*
> ===========================================================================
>  *
>  * JQuery URL Parser
>  * Version 1.0
>  * Parses URLs and provides easy access to information within them.
>  *
>  * Author: Mark Perkins
>  * Author email: [EMAIL PROTECTED]
>  *
>  * For full documentation and more go 
> tohttp://projects.allmarkedup.com/jquery_url_parser/
>  *
>  *
> ---------------------------------------------------------------------------
>  *
>  * CREDITS:
>  *
>  * Parser based on the Regex-based URI parser by Stephen Levithian.
>  * For more information (including a detailed explaination of the
> differences
>  * between the 'loose' and 'strict' pasing modes) 
> visithttp://blog.stevenlevithan.com/archives/parseuri
>  *
>  *
> ---------------------------------------------------------------------------
>  *
>  * LICENCE:
>  *
>  * Released under a MIT Licence. See licence.txt that should have been
> supplied with this file,
>  * or visithttp://projects.allmarkedup.com/jquery_url_parser/licence.txt
>  *
>  *
> ---------------------------------------------------------------------------
>  *
>  * EXAMPLES OF USE:
>  *
>  * Get the domain name (host) from the current page URL
>  * jQuery.url.attr("host")
>  *
>  * Get the query string value for 'item' for the current page
>  * jQuery.url.param("item") // null if it doesn't exist
>  *
>  * Get the second segment of the URI of the current page
>  * jQuery.url.segment(2) // null if it doesn't exist
>  *
>  * Get the protocol of a manually passed in URL
>  * jQuery.url.setUrl("http://allmarkedup.com/";).attr("protocol") //
> returns 'http'
>  *
>  */
>
> jQuery.url = function()
> {
>         var segments = {};
>
>         var parsed = {};
>
>         /**
>     * Options object. Only the URI and strictMode values can be
> changed via the setters below.
>     */
>         var options = {
>
>                 url : window.location, // default URI is the page in which the
> script is running
>
>                 strictMode: false, // 'loose' parsing by default
>
>                 key:
> ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
>  //
> keys available to query
>
>                 q: {
>                         name: "queryKey",
>                         parser: /(?:^|&)([^&=]*)=?([^&]*)/g
>                 },
>
>                 parser: {
>                         strict: 
> /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:
> \/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#
> (.*))?)/, // more intuitive, fails on relative paths and deviates from
> specs
>                         loose:  
> /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]
> *):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#
> \/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ //less
> intuitive, more accurate to the specs
>                 }
>
>         };
>
>     /**
>      * Deals with the parsing of the URI according to the regex above.
>          * Written by Steven Levithan - see credits at top.
>      */
>         var parseUri = function()
>         {
>                 str = decodeURI( options.url );
>
>                 var m = options.parser[ options.strictMode ? "strict" :
> "loose" ].exec( str );
>                 var uri = {};
>                 var i = 14;
>
>                 while ( i-- ) {
>                         uri[ options.key[i] ] = m[i] || "";
>                 }
>
>                 uri[ options.q.name ] = {};
>                 uri[ options.key[12] ].replace( options.q.parser, function ( 
> $0, $1,
> $2 ) {
>                         if ($1) {
>                                 uri[options.q.name][$1] = $2;
>                         }
>                 });
>
>                 return uri;
>         };
>
>     /**
>      * Returns the value of the passed in key from the parsed URI.
>          *
>          * @param string key The key whose value is required
>      */
>         var key = function( key )
>         {
>                 if ( ! parsed.length )
>                 {
>                         setUp(); // if the URI has not been parsed yet then 
> do this
> first...
>                 }
>                 if ( key == "base" )
>                 {
>                         if ( parsed.port !== null && parsed.port !== "" )
>                         {
>                                 return 
> parsed.protocol+"://"+parsed.host+":"+parsed.port+"/";
>                         }
>                         else
>                         {
>                                 return parsed.protocol+"://"+parsed.host+"/";
>                         }
>                 }
>
>                 return ( parsed[key] === "" ) ? null : parsed[key];
>         };
>
>         /**
>      * Returns the value of the required query string parameter.
>          *
>          * @param string item The parameter whose value is required
>      */
>         var param = function( item )
>         {
>                 if ( ! parsed.length )
>                 {
>                         setUp(); // if the URI has not been parsed yet then 
> do this
> first...
>                 }
>                 return ( parsed.queryKey[item] === null ) ? null : 
> parsed.queryKey
> [item];
>         };
>
>     /**
>      * 'Constructor' (not really!) function.
>      *  Called whenever the URI changes to kick off re-parsing of the
> URI and splitting it up into segments.
>      */
>         var setUp = function()
>         {
>                 parsed = parseUri();
>
>                 getSegments();
>         };
>
>     /**
>      * Splits up the body of the URI into segments (i.e. sections
> delimited by '/')
>      */
>         var getSegments = function()
>         {
>                 var p = parsed.path;
>                 segments = []; // clear out segments array
>                 segments = parsed.path.length == 1 ? {} : ( p.charAt( 
> p.length - 1 )
> == "/" ? p.substring( 1, p.length - 1 ) : path = p.substring
> ( 1 ) ).split("/");
>         };
>
>         return {
>
>             /**
>              * Sets the parsing mode - either strict or loose. Set to loose
> by default.
>              *
>              * @param string mode The mode to set the parser to. Anything
> apart from a value of 'strict' will set it to loose!
>              */
>                 setMode : function( mode )
>                 {
>                         strictMode = mode == "strict" ? true : false;
>                         return this;
>                 },
>
>                 /**
>              * Sets URI to parse if you don't want to to parse the current
> page's URI.
>                  * Calling the function with no value for newUri resets it to 
> the
> current page's URI.
>              *
>              * @param string newUri The URI to parse.
>              */
>                 setUrl : function( newUri )
>                 {
>                         options.url = newUri === undefined ? window.location 
> : newUri;
>                         setUp();
>                         return this;
>                 },
>
>                 /**
>              * Returns the value of the specified URI segment. Segments are
> numbered from 1 to the number of segments.
>                  * For example the URIhttp://test.com/about/company/segment(1)
> would return 'about'.
>                  *
>                  * If no integer is passed into the function it returns the 
> number
> of segments in the URI.
>              *
>              * @param int pos The position of the segment to return. Can be
> empty.
>              */
>                 segment : function( pos )
>                 {
>                         if ( ! parsed.length )
>                         {
>                                 setUp(); // if the URI has not been parsed 
> yet then do this
> first...
>                         }
>                         if ( pos === undefined )
>                         {
>                                 return segments.length;
>                         }
>                         return ( segments[pos] === "" || segments[pos] === 
> undefined ) ?
> null : segments[pos];
>                 },
>
>                 attr : key, // provides public access to private 'key' 
> function -
> see above
>
>                 param : param // provides public access to private 'param' 
> function
> - see above
>
>         };
>
> }();
>
> [/code]

Reply via email to