MCPcopy Index your code
hub / github.com/TruthHun/BookStack / filterPasteWord

Function filterPasteWord

static/js/markdown.js:582–668  ·  view source on GitHub ↗
(str)

Source from the content-addressed store, hash-verified

580
581 //去除冗余属性和标签
582 function filterPasteWord(str) {
583 str = str.replace(/[\t\r]+/g, ' ').replace(/<!--[\s\S]*?-->/ig, "")
584 //转换图片
585 .replace(/<v:shape [^>]*>[\s\S]*?.<\/v:shape>/gi,
586 function (str) {
587 //opera能自己解析出image所这里直接返回空
588 if (!!window.opera && window.opera.version) {
589 return '';
590 }
591 try {
592 //有可能是bitmap占为图,无用,直接过滤掉,主要体现在粘贴excel表格中
593 if (/Bitmap/i.test(str)) {
594 return '';
595 }
596 var src = str.match(/src=\s*"([^"]*)"/i)[1];
597 return '<img src="' + src + '" />';
598 } catch (e) {
599 return '';
600 }
601 })
602
603 //针对wps添加的多余标签处理
604 .replace(/<\/?div[^>]*>/g, '')
605 .replace(/<\/?span[^>]*>/g, '')
606 .replace(/<\/?font[^>]*>/g, '')
607 .replace(/<\/?col[^>]*>/g, '')
608 .replace(/<\/?(span|div|o:p|v:.*?|input|label)[\s\S]*?>/g, '')
609 //去掉所有属性,需要保留单元格合并
610 //.replace(/<([a-zA-Z]+)\s*[^><]*>/g, "<$1>")
611 //去掉多余的属性
612 .replace(/v:\w+=(["']?)[^'"]+\1/g, '')
613 .replace(/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi, "").replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "<p><strong>$1</strong></p>")
614 //去掉多余的属性
615 .replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi, '')
616 //清除多余的font/span不能匹配&nbsp;有可能是空格
617 .replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi,
618 function (a, b, c) {
619 return c.replace(/[\t\r\n ]+/g, " ");
620 })
621 //去掉style属性
622 .replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, "$1")
623 // 去除不带引号的属性
624 .replace(/(border|cellspacing|MsoNormalTable|valign|width|center|&nbsp;|x:str|height|x:num|cellpadding)(=[^ \f\n\r\t\v>]*)?/g, "")
625 //保留code代码块的language
626 .replace(/class=[\"|'](.*?)[\"|'].*?/g, function (p, p1) {
627 if (/language-(\S+)/.test(p1)) {
628 return p;
629 } else {
630 return "";
631 }
632 })
633 // 去除多余空格
634 .replace(/(\S+)([ \t\r]+)/g, function (match, p1, p2) {
635 return p1 + ' ';
636 })
637 .replace(/(\s)(>|<)/g, function (match, p1, p2) {
638 return p2;
639 });

Callers 1

html2mdFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected