Dodanie aplikacji sorl.thumbnail i filebrowser.
[redakcja.git] / apps / filebrowser / media / filebrowser / uploadify / com / adobe / fileformats / vcard / .svn / text-base / VCardParser.as.svn-base
diff --git a/apps/filebrowser/media/filebrowser/uploadify/com/adobe/fileformats/vcard/.svn/text-base/VCardParser.as.svn-base b/apps/filebrowser/media/filebrowser/uploadify/com/adobe/fileformats/vcard/.svn/text-base/VCardParser.as.svn-base
new file mode 100644 (file)
index 0000000..45c954a
--- /dev/null
@@ -0,0 +1,246 @@
+/*
+  Copyright (c) 2008, Adobe Systems Incorporated
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without 
+  modification, are permitted provided that the following conditions are
+  met:
+
+  * Redistributions of source code must retain the above copyright notice, 
+    this list of conditions and the following disclaimer.
+  
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the 
+    documentation and/or other materials provided with the distribution.
+  
+  * Neither the name of Adobe Systems Incorporated nor the names of its 
+    contributors may be used to endorse or promote products derived from 
+    this software without specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+  IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+package com.adobe.fileformats.vcard
+{
+       import mx.utils.Base64Decoder;
+       import mx.utils.StringUtil;
+       
+       public class VCardParser
+       {
+               public static function parse(vcardStr:String):Array
+               {
+                       var vcards:Array = new Array();
+                       var lines:Array = vcardStr.split(/\r\n/);
+                       var vcard:VCard;
+                       var type:String;
+                       var typeTmp:String;
+                       var line:String;
+
+                       for (var i:uint = 0; i < lines.length; ++i)
+                       {
+                               line = lines[i];
+                               if (line == "BEGIN:VCARD")
+                               {
+                                       vcard = new VCard();
+                               }
+                               else if (line == "END:VCARD")
+                               {
+                                       if (vcard != null)
+                                       {
+                                               vcards.push(vcard);
+                                       }
+                               }
+                               else if(line.search(/^ORG/i) != -1)
+                               {
+                                       var org:String = line.substring(4, line.length);
+                                       var orgArray:Array = org.split(";");
+                                       for each (var orgToken:String in orgArray)
+                                       {
+                                               if (StringUtil.trim(orgToken).length > 0)
+                                               {
+                                                       vcard.orgs.push(orgToken);
+                                               }
+                                       }
+                               }
+                               else if(line.search(/^TITLE/i) != -1)
+                               {
+                                       var title:String = line.substring(6, line.length);
+                                       vcard.title = title;
+                               }
+                               else if (line.search(/^FN:/i) != -1)
+                               {
+                                       var fullName:String = line.substring(3, line.length);
+                                       vcard.fullName = fullName;
+                               }
+                               else if (line.search(/^TEL/i) != -1)
+                               {
+                                       type = new String();
+                                       typeTmp = new String();
+                                       var phone:Phone = new Phone();
+                                       var number:String;
+                                       var phoneTokens:Array = line.split(";");
+                                       for each (var phoneToken:String in phoneTokens)
+                                       {
+                                               if (phoneToken.search(/^TYPE=/i) != -1)
+                                               {
+                                                       if (phoneToken.indexOf(":") != -1)
+                                                       {
+                                                               typeTmp = phoneToken.substring(5, phoneToken.indexOf(":"));
+                                                               number = phoneToken.substring(phoneToken.indexOf(":")+1, phoneToken.length);
+                                                       }
+                                                       else
+                                                       {                                                                       
+                                                               typeTmp = phoneToken.substring(5, phoneToken.length);
+                                                       }
+
+                                                       typeTmp = typeTmp.toLocaleLowerCase();
+
+                                                       if (typeTmp == "pref")
+                                                       {
+                                                               continue;
+                                                       }
+                                                       if (type.length != 0)
+                                                       {
+                                                               type += (" ");
+                                                       }
+                                                       type += typeTmp;
+                                               }
+                                       }
+                                       if (type.length > 0 && number != null)
+                                       {
+                                               phone.type = type;
+                                               phone.number = number;
+                                       }
+                                       vcard.phones.push(phone);
+                               }
+                               else if (line.search(/^EMAIL/i) != -1)
+                               {
+                                       type = new String();
+                                       typeTmp = new String();
+                                       var email:Email = new Email();
+                                       var emailAddress:String;
+                                       var emailTokens:Array = line.split(";");
+                                       for each (var emailToken:String in emailTokens)
+                                       {
+                                               if (emailToken.search(/^TYPE=/i) != -1)
+                                               {
+                                                       if (emailToken.indexOf(":") != -1)
+                                                       {
+                                                               typeTmp = emailToken.substring(5, emailToken.indexOf(":"));
+                                                               emailAddress = emailToken.substring(emailToken.indexOf(":")+1, emailToken.length);
+                                                       }
+                                                       else
+                                                       {                                                                       
+                                                               typeTmp = emailToken.substring(5, emailToken.length);
+                                                       }
+
+                                                       typeTmp = typeTmp.toLocaleLowerCase();
+
+                                                       if (typeTmp == "pref" || typeTmp == "internet")
+                                                       {
+                                                               continue;
+                                                       }
+                                                       if (type.length != 0)
+                                                       {
+                                                               type += (" ");
+                                                       }
+                                                       type += typeTmp;
+                                               }
+                                       }
+                                       if (type.length > 0 && emailAddress != null)
+                                       {
+                                               email.type = type;
+                                               email.address = emailAddress;
+                                       }
+                                       vcard.emails.push(email);
+                               }
+                               else if (line.indexOf("ADR;") != -1)
+                               {
+                                       var addressTokens:Array = line.split(";");
+                                       var address:Address = new Address();
+                                       for (var j:uint = 0; j < addressTokens.length; ++j)
+                                       {
+                                               var addressToken:String = addressTokens[j];
+                                               if (addressToken.search(/^home:+$/i) != -1) // For Outlook, which uses non-standard vCards.
+                                               {
+                                                       address.type = "home";
+                                               }
+                                               else if (addressToken.search(/^work:+$/i) != -1) // For Outlook, which uses non-standard vCards.
+                                               {
+                                                       address.type = "work";
+                                               }
+                                               if (addressToken.search(/^type=/i) != -1)  // The "type" parameter is the standard way (which Address Book uses)
+                                               {
+                                                       // First, remove the optional ":" character.
+                                                       addressToken = addressToken.replace(/:/,"");
+                                                       var addressType:String = addressToken.substring(5, addressToken.length).toLowerCase();
+                                                       if (addressType == "pref") // Not interested in which one is preferred.
+                                                       {
+                                                               continue;
+                                                       }
+                                                       else if (addressType.indexOf("home") != -1) // home
+                                                       {
+                                                               addressType = "home";
+                                                       }
+                                                       else if (addressType.indexOf("work") != -1) // work
+                                                       {
+                                                               addressType = "work";
+                                                       }
+                                                       else if (addressType.indexOf(",") != -1) // if the comma technique is used, just use the first one
+                                                       {
+                                                               var typeTokens:Array = addressType.split(",");
+                                                               for each (var typeToken:String in typeTokens)
+                                                               {
+                                                                       if (typeToken != "pref")
+                                                                       {
+                                                                               addressType = typeToken;
+                                                                               break;
+                                                                       }
+                                                               }
+                                                       }
+                                                       address.type = addressType;
+                                               }
+                                               else if (addressToken.search(/^\d/) != -1 && address.street == null)
+                                               {
+                                                       address.street = addressToken.replace(/\\n/, "");
+                                                       address.city = addressTokens[j+1];
+                                                       address.state = addressTokens[j+2];
+                                                       address.postalCode = addressTokens[j+3];
+                                               }
+                                       }
+                                       if (address.type != null && address.street != null)
+                                       {
+                                               vcard.addresses.push(address);
+                                       }
+
+                               }
+                               else if (line.search(/^PHOTO;BASE64/i) != -1)
+                               {
+                                       var imageStr:String = new String();
+                                       for (var k:uint = i+1; k < lines.length; ++k)
+                                       {
+                                               imageStr += lines[k];
+                                               //if (lines[k].search(/.+\=$/) != -1) // Very slow in Mac due to RegEx bug
+                                               if (lines[k].indexOf('=') != -1)
+                                               {
+                                                       var decoder:Base64Decoder = new Base64Decoder();
+                                                       decoder.decode(imageStr);
+                                                       vcard.image = decoder.flush();
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+                       return vcards;
+               }
+       }
+}
\ No newline at end of file