/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml */ dojo.provide("dojo.cal.textDirectory"); dojo.require("dojo.string"); dojo.cal.textDirectory.Property = function(/*String*/line){ // summary: parses a single line from an iCalendar text/directory file // and creates an object with four named values; name, group, params // and value. name, group and value are strings containing the original // tokens unaltered and values is an array containing name/value pairs // or a single name token packed into arrays. // split into name/value pair var left = dojo.string.trim(line.substring(0, line.indexOf(':'))); var right = dojo.string.trim(line.substr(line.indexOf(':') + 1)); // separate name and paramters var parameters = dojo.string.splitEscaped(left,';'); this.name = parameters[0]; parameters.splice(0, 1); // parse paramters this.params = []; var arr; for(var i = 0; i < parameters.length; i++){ arr = parameters[i].split("="); var key = dojo.string.trim(arr[0].toUpperCase()); if(arr.length == 1){ this.params.push([key]); continue; } var values = dojo.string.splitEscaped(arr[1],','); for(var j = 0; j < values.length; j++){ if(dojo.string.trim(values[j]) != ''){ this.params.push([key, dojo.string.trim(values[j])]); } } } // separate group if(this.name.indexOf('.') > 0){ arr = this.name.split('.'); this.group = arr[0]; this.name = arr[1]; } // don't do any parsing, leave to implementation this.value = right; } dojo.cal.textDirectory.tokenise = function(/*String*/text){ // summary: parses text into an array of properties. // normlize to one property per line and parse var nText = dojo.string.normalizeNewlines(text,"\n"). replace(/\n[ \t]/g, ''). replace(/\x00/g, ''); var lines = nText.split("\n"); var properties = []; for(var i = 0; i < lines.length; i++){ if(dojo.string.trim(lines[i]) == ''){ continue; } var prop = new dojo.cal.textDirectory.Property(lines[i]); properties.push(prop); } return properties; // Array }