home *** CD-ROM | disk | FTP | other *** search
- //-------------------------------------------------------------------------------------------
- // RSS utils module.
- //-------------------------------------------------------------------------------------------
-
- const Cc = Components.classes;
- const Ci = Components.interfaces;
-
- var EXPORTED_SYMBOLS = ["samfind_modrssutils"];
-
- var samfind_modrssutils =
- {
- _html_entities : null,
- _html_decimals : null,
-
- _init : function()
- {
- samfind_modrssutils._html_entities = new Array(' ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','&Aelig;','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ','"','&','<','>','œ','œ','Š','š','Ÿ','ˆ','˜',' ',' ',' ','','','','','–','—','‘','’','‚','“','”','„','†','‡','‰','‹','›','€','ƒ','Α','Β','Γ','Δ','Ε','Ζ','Η','Θ','Ι','Κ','Λ','Μ','Ν','Ξ','Ο','Π','Ρ','Σ','Τ','Υ','Φ','Χ','Ψ','Ω','α','β','γ','δ','ε','ζ','η','θ','ι','κ','λ','μ','ν','ξ','ο','π','ρ','ς','σ','τ','υ','φ','χ','ψ','ω','ϑ','ϒ','ϖ','•','…','′','″','‾','⁄','℘','ℑ','ℜ','™','ℵ','←','↑','→','↓','↔','↵','⇐','⇑','⇒','⇓','⇔','∀','∂','∃','∅','∇','∈','∉','∋','∏','∑','−','∗','√','∝','∞','∠','∧','∨','∩','∪','∫','∴','∼','≅','≈','≠','≡','≤','≥','⊂','⊃','⊄','⊆','⊇','⊕','⊗','⊥','⋅','⌈','⌉','⌊','⌋','〈','〉','◊','♠','♣','♥','♦');
- samfind_modrssutils._html_decimals = new Array(
- '160','161','162','163','164','165','166','167','168','169','170','171','172','173','174','175','176','177','178','179','180','181','182','183','184','185','186','187','188','189','190','191','192','193','194','195','196','197','198','199','200','201','202','203','204','205','206','207','208','209','210','211','212','213','214','215','216','217','218','219','220','221','222','223','224','225','226','227','228','229','230','231','232','233','234','235','236','237','238','239','240','241','242','243','244','245','246','247','248','249','250','251','252','253','254','255','34','38','60','62','338','339','352','353','376','710','732','8194','8195','8201','8204','8205','8206','8207','8211','8212','8216','8217','8218','8220','8221','8222','8224','8225','8240','8249','8250','8364','402','913','914','915','916','917','918','919','920','921','922','923','924','925','926','927','928','929','931','932','933','934','935','936','937','945','946','947','948','949','950','951','952','953','954','955','956','957','958','959','960','961','962','963','964','965','966','967','968','969','977','978','982','8226','8230','8242','8243','8254','8260','8472','8465','8476','8482','8501','8592','8593','8594','8595','8596','8629','8656','8657','8658','8659','8660','8704','8706','8707','8709','8711','8712','8713','8715','8719','8721','8722','8727','8730','8733','8734','8736','8743','8744','8745','8746','8747','8756','8764','8773','8776','8800','8801','8804','8805','8834','8835','8836','8838','8839','8853','8855','8869','8901','8968','8969','8970','8971','9001','9002','9674','9824','9827','9829','9830');
- },
-
- HTML2Unicode : function(aStr)
- {
- if (aStr.length == 0)
- {
- return;
- }
- var count = samfind_modrssutils._html_entities.length;
- var re;
- for (var i=0; i<count; ++i)
- {
- re = new RegExp(samfind_modrssutils._html_entities[i], 'g');
- aStr = aStr.replace(re, String.fromCharCode(samfind_modrssutils._html_decimals[i]));
- }
- return aStr;
- },
-
- HTML2Text : function(aStr)
- {
- var format_converter = Cc["@mozilla.org/widget/htmlformatconverter;1"].createInstance(Ci.nsIFormatConverter);
- var from_str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
- from_str.data = aStr;
- var toStr = { value: null };
- try
- {
- format_converter.convert("text/html", from_str, from_str.toString().length, "text/unicode", toStr, {});
- }
- catch (e)
- {
- return aStr;
- }
- if (toStr.value)
- {
- toStr = toStr.value.QueryInterface(Ci.nsISupportsString);
- return toStr.toString();
- }
- return aStr;
- },
-
- removeRubbish : function(aStr)
- {
- return aStr.replace(/[-_\*\+=]+/g, " ");
- },
-
- truncate : function(aStr, count)
- {
- var words = aStr.split(/[\s,]+/);
- var popped = false;
- while (words.length > count)
- {
- words.pop();
- popped = true;
- }
- return words.join(" ") + (popped ? "..." : "");
- }
- };
-
- /**
- * Constructor.
- */
- (function() { this._init(); }).apply(samfind_modrssutils);