====== pears.GetTextFromHTML ====== Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. ===== Original SQL ===== COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."GetTextFromHTML" IS {create function GetTextFromHTML /* Application Maintained Function / Procedure - DO NOT EDIT*/ ( in htmlText long varchar ) returns long varchar begin declare plainText long varchar; declare tagStart integer; declare tagEnd integer; declare tagLength integer; declare tagType char(20); declare endOfTagName integer; set plainText = htmlText; if locate( plainText, '', 1 ) = 0 then return plainText; end if; set plainText = right(plainText, length(plainText) - charindex('', upper(plainText)) - 6); set plainText = replace(plainText, char(13), ''); set plainText = replace(plainText, char(10), ''); set plainText = replace(plainText, '', char(96)); set plainText = replace(plainText, '@', char(96)); while locate( plainText, '<', 1 ) > 0 loop set tagStart = charindex('<', plainText); set tagEnd = charindex('>', plainText); // make tag type always be in upper case, and compensate for the < things set tagType = substring(upper(plainText), tagStart+1, tagEnd-tagStart-1); set tagLength = tagEnd - tagStart; // check to see if there are spaces in the name (there are attributes). // if there are get rid of them set endOfTagName = charindex(' ', tagType); if endOfTagName > 0 then set tagType = substring(tagType, 1, endOfTagName); end if; case tagType when '/DIV' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/P' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/H1' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/H2' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/H3' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/H4' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/H5' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/H6' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/UL' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/OL' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when 'BR' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/TABLE' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when 'HR' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/ARTICLE' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/ASIDE' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/BLOCKQUOTE' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/FIGCAPTION' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/FIGURE' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/FOOTER' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/FORM' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/HEADER' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/MENU' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/NAV' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/PRE' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/SECION' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); when '/SUMMARY' then set plainText = stuff(plainText, tagStart, tagLength+1, char(13)+char(10)); else set plainText = stuff(plainText, tagStart, tagLength+1, NULL); end; end loop; set plainText = replace(plainText, ' ', '' ); set plainText = replace(plainText, '&', '&'); set plainText = replace(plainText, '>', '>') ; set plainText = replace(plainText, '<', '<'); set plainText = replace(plainText, '"', char(34)); set plainText = replace(plainText, ''', char(39)); set plainText = replace(plainText, '¢', char(163)); set plainText = replace(plainText, '£', char(163)); set plainText = replace(plainText, '€', char(128)); set plainText = replace(plainText, '¥', char(165)); set plainText = replace(plainText, '©', char(169)); set plainText = replace(plainText, '®', char(174)); if (isnull(plainText,'') = '') and (isnull(htmltext,'')<>'') then set plainText = 'Could not parse following HTML:' + char(13)+char(10) + htmlText; endif; return plainText; end }