Difference between revisions of "Vesper:scratchspace"

From CDOT Wiki
Jump to: navigation, search
(Welcome to Vesper's Scratchspace~)
m (Welcome to Vesper's Scratchspace~)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
==Welcome to Vesper's Scratchspace~==
 
==Welcome to Vesper's Scratchspace~==
  
Today's menu: [https://wiki.mozilla.org/Labs/Ubiquity Ubiquity] URL noun type (and a basic function that uses it)
+
'''Today's menu:''' [https://wiki.mozilla.org/Labs/Ubiquity Ubiquity] URL noun type (and a basic function that uses it)
  
 
The regex in the code more or less says this:
 
The regex in the code more or less says this:
Line 15: Line 15:
 
  universe://milky.way/earth/north-america/canada/ontario/
 
  universe://milky.way/earth/north-america/canada/ontario/
  
This is not valid, because I've never seen a period in strings after the domain name. (In this case, the period between the "d" and "e" makes it invalid.)
+
All of these choices were arbitrarily chosen by me. I'll be pursuing the community for a better description of what a URL should and should not be.
  
a://b.c/d.e
 
  
All of these choices were arbitrarily chosen by me. I'll be pursuing the community for a better description of what a URL should and should not be.
+
'''The code itself:'''
 
 
================================================================================================
 
 
   
 
   
 
  var noun_type_url = {
 
  var noun_type_url = {
Line 31: Line 28:
 
   
 
   
 
   
 
   
     if(/^[A-Za-z0-9]+:\/\/([A-Za-z0-9_-]+)(\.([A-Za-z0-9_-]+))+(\/([A-Za-z0-9_-~]+))+[/]?$/.test(text)){
+
     if(/^[A-Za-z0-9]+:\/\/([A-Za-z0-9_-]+)(\.([A-Za-z0-9_-]+))*(\/([A-Za-z0-9_-~#=]*))*(\/[A-Za-z0-9_]*\.[A-Za-z0-9_]+)?$/.test(text)){
 
       return [ CmdUtils.makeSugg(text) ];
 
       return [ CmdUtils.makeSugg(text) ];
 
     }
 
     }
Line 51: Line 48:
 
   }
 
   }
 
  })
 
  })
 +
 +
My apologies to those with screens that aren't 1280 pixels wide, but the regex doesn't like to be split into multiple lines.
 +
 +
 +
'''Known issues:'''
 +
 +
It can't handle the "?" in PHP querries. I assume there can only be one, and it must be after the filename (with the extension). Hashes (#) should probably be handled the same way, instead of the way I'm handling them now (as letters, allowed anywhere except in the domain).
 +
 +
http://foo.com/index.php?user=blarg
 +
 +
 +
'''Credits:'''
  
 
Syntax for the sample command was edited from the sample "echo" command in the [https://wiki.mozilla.org/Labs/Ubiquity/Ubiquity_0.1_Author_Tutorial tutorial].
 
Syntax for the sample command was edited from the sample "echo" command in the [https://wiki.mozilla.org/Labs/Ubiquity/Ubiquity_0.1_Author_Tutorial tutorial].

Latest revision as of 21:32, 11 September 2008

Welcome to Vesper's Scratchspace~

Today's menu: Ubiquity URL noun type (and a basic function that uses it)

The regex in the code more or less says this:

(some protocol name) :// (a string) [. (a string)] [/ (a string)] (maybe / if you want)

Items in square brackets can be repeated. So,

pasta://a.taste.from.little.italy

is a valid url, according to this model. And, so is this:

universe://milky.way/earth/north-america/canada/ontario/

All of these choices were arbitrarily chosen by me. I'll be pursuing the community for a better description of what a URL should and should not be.


The code itself:

var noun_type_url = {
  _name: "Valid URL",

  suggest: function( text, html ) {
    if (!text)
      return [ CmdUtils.makeSugg("http://") ];


    if(/^[A-Za-z0-9]+:\/\/([A-Za-z0-9_-]+)(\.([A-Za-z0-9_-]+))*(\/([A-Za-z0-9_-~#=]*))*(\/[A-Za-z0-9_]*\.[A-Za-z0-9_]+)?$/.test(text)){
      return [ CmdUtils.makeSugg(text) ];
    }

    return [ CmdUtils.makeSugg("http://" + text) ];
  }
};


CmdUtils.CreateCommand({
  name: "url",
  takes: {"your shout": noun_type_url},
  preview: function( pblock, theShout ) {
    pblock.innerHTML = "Will verify: " + theShout.text;
  },
  execute: function( theShout ) {
    var msg = theShout.text;
    displayMessage( msg );
  }
})

My apologies to those with screens that aren't 1280 pixels wide, but the regex doesn't like to be split into multiple lines.


Known issues:

It can't handle the "?" in PHP querries. I assume there can only be one, and it must be after the filename (with the extension). Hashes (#) should probably be handled the same way, instead of the way I'm handling them now (as letters, allowed anywhere except in the domain).

http://foo.com/index.php?user=blarg


Credits:

Syntax for the sample command was edited from the sample "echo" command in the tutorial.