let ProcessText = module.exports = {} ProcessText.removeHtml = (string) => { if(string == undefined || string == null || string.length == 0){ return '' } return string .replace(/&[[#A-Za-z0-9]+A-Za-z0-9]+;/g,' ') //Rip out all HTML entities .replace(/<[^>]+>/g, ' ') //Rip out all HTML tags .replace(/\s+/g, ' ') //Remove all whitespace .trim() } ProcessText.getUrlsFromString = (string) => { const urlPattern = /(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[A-Z0-9+&@#/%=~_|$])/igm return string.match(urlPattern) } /* Pulls out title and subtext of note + Title is always first line + Empty lines are skipped + URLs are turned into links + All URLs are givent the target="_blank" property + Lists are given extra display characters + If note starts as a list, skip the title */ ProcessText.deduceNoteTitle = (inString) => { let title = '' //Title of note let sub = '' //sub text below note if(!inString || inString == null || inString.length == 0){ return {title, sub} } //Remove inline styles that may be added by editor inString = inString.replace(/style=".*?"/g,'') //Match full line and closing tag or just closing tag let lines = inString.match(/[<[a-zA-Z0-9]+>(.*?)<\/[a-zA-Z0-9]+>|<\/[a-zA-Z0-9>]+?>/g) if(lines == null){ lines = [inString] } //.match(/[^\r\n]+/g) //Match return or newline // console.log(lines) let finalLines = [] const startTags = ['