| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  | function html2notecase(contents, note) { | 
					
						
							|  |  |  |     contents = contents.replace(/<br \/>/g, '\n'); | 
					
						
							|  |  |  |     contents = contents.replace(/<br>/g, '\n'); | 
					
						
							|  |  |  |     contents = contents.replace(/<\/p>/g, '\n'); | 
					
						
							|  |  |  |     contents = contents.replace(/<p>/g, ''); | 
					
						
							| 
									
										
										
										
											2017-08-13 21:42:10 -04:00
										 |  |  |     contents = contents.replace(/ /g, ' '); | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     let index = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     note.formatting = []; | 
					
						
							|  |  |  |     note.links = []; | 
					
						
							|  |  |  |     note.images = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     while (index < contents.length) { | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |         let curContent = contents.substr(index); | 
					
						
							| 
									
										
										
										
											2017-08-13 22:35:04 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |         if (contents[index] === '<') { | 
					
						
							|  |  |  |             let found = false; | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |             let endOfTag = curContent.indexOf('>'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |             if (endOfTag === -1) { | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |                 console.log("Can't find the end of the tag"); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             let curTag = curContent.substr(0, endOfTag + 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             //console.log(contents);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             for (tagId in tags) { | 
					
						
							|  |  |  |                 let tag = tags[tagId]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |                 if (contents.substr(index, tag.length) === tag) { | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |                     found = true; | 
					
						
							|  |  |  |                     // if (tagMap.get(index) == undefined) {
 | 
					
						
							|  |  |  |                     //   tagMap.get(index) = [];
 | 
					
						
							|  |  |  |                     // }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     // tagMap.get(index).push(key);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     note.formatting.push({ | 
					
						
							|  |  |  |                         note_id: note.detail.note_id, | 
					
						
							|  |  |  |                         note_offset: index, | 
					
						
							|  |  |  |                         fmt_tag: tagId, | 
					
						
							|  |  |  |                         fmt_color: '', | 
					
						
							|  |  |  |                         fmt_font: '', | 
					
						
							|  |  |  |                         fmt_value: 100 | 
					
						
							|  |  |  |                     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     contents = contents.substr(0, index) + contents.substr(index + tag.length); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |             if (curTag.substr(0, 4) === "<img") { | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |                 //console.log("Found img tag");
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 let dataImagePos = curTag.indexOf('data:image/'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |                 if (dataImagePos !== -1) { | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |                     let imageType = curTag.substr(dataImagePos + 11, 3); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     //console.log("image type: " + imageType);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     let dataStart = curTag.substr(dataImagePos + 22); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     let endOfDataPos = dataStart.indexOf('"'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |                     if (endOfDataPos !== -1) { | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |                         //console.log("Found the end of image data");
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         let imageData = dataStart.substr(0, endOfDataPos); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         note.images.push({ | 
					
						
							|  |  |  |                             note_id: note.detail.note_id, | 
					
						
							|  |  |  |                             note_offset: index, | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |                             is_png: imageType === "png", | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |                             image_data: imageData | 
					
						
							|  |  |  |                         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         contents = contents.substr(0, index) + contents.substr(index + curTag.length); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         //console.log("Parsed image: " + imageData.substr(0, 100));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                         found = true; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-13 22:35:04 -04:00
										 |  |  |             let match = /^<a[^>]+?href="([^"]+?)"[^>]+?>([^<]+?)<\/a>/.exec(curContent); | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |             if (match !== null) { | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |                 note.links.push({ | 
					
						
							|  |  |  |                     note_id: note.detail.note_id, | 
					
						
							|  |  |  |                     note_offset: index, | 
					
						
							|  |  |  |                     target_url: match[1], | 
					
						
							|  |  |  |                     lnk_text: match[2] | 
					
						
							|  |  |  |                 }); | 
					
						
							|  |  |  |                  | 
					
						
							|  |  |  |                 //console.log("Found link with text: " + match[2] + ", targetting: " + match[1]);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 contents = contents.substr(0, index) + match[2] + contents.substr(index + match[0].length); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 found = true; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // let imageRegex = /<img[^>]+src="data:image\/(jpg|png);base64,([^>\"]+)"[^>]+>/;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // console.log("Testing for image: " + curTag.substr(0, 100));
 | 
					
						
							|  |  |  |             // console.log("End of image: " + curTag.substr(curTag.length - 100));
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // let match = imageRegex.exec(curTag);
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // if (match != null) {
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-13 22:35:04 -04:00
										 |  |  |             if (!found) { | 
					
						
							|  |  |  |                 contents = contents.substr(0, index) + contents.substr(index + endOfTag + 1); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else { | 
					
						
							| 
									
										
										
										
											2017-08-21 21:31:23 -04:00
										 |  |  |             let linkMatch = /^((https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i.exec(curContent); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (linkMatch !== null) { | 
					
						
							|  |  |  |                 note.links.push({ | 
					
						
							|  |  |  |                     note_id: note.detail.note_id, | 
					
						
							|  |  |  |                     note_offset: index, | 
					
						
							|  |  |  |                     target_url: linkMatch[1], | 
					
						
							|  |  |  |                     lnk_text: linkMatch[1] | 
					
						
							|  |  |  |                 }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 found = true; | 
					
						
							|  |  |  |                 index += linkMatch[1].length; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             else { | 
					
						
							|  |  |  |                 index++; | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2017-06-11 16:04:07 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     note.detail.note_text = contents; | 
					
						
							|  |  |  | } |