From d666d1bcc55122e0ebcff386b6190d0c9d7ddb67 Mon Sep 17 00:00:00 2001 From: "Mr.Hope" Date: Tue, 30 Jan 2024 15:55:01 +0800 Subject: [PATCH] feat(helper): add getPageText (#39) --- tools/helper/src/node/page/index.ts | 1 + tools/helper/src/node/page/text.ts | 159 +++++ .../helper/tests/__fixtures__/src/markdown.md | 2 +- .../node/__snapshots__/excerpt.spec.ts.snap | 32 +- .../node/__snapshots__/text.spec.ts.snap | 567 ++++++++++++++++++ tools/helper/tests/node/excerpt.spec.ts | 2 +- tools/helper/tests/node/text.spec.ts | 73 +++ 7 files changed, 818 insertions(+), 18 deletions(-) create mode 100644 tools/helper/src/node/page/text.ts create mode 100644 tools/helper/tests/node/__snapshots__/text.spec.ts.snap create mode 100644 tools/helper/tests/node/text.spec.ts diff --git a/tools/helper/src/node/page/index.ts b/tools/helper/src/node/page/index.ts index e1abea05e5..6d0824987a 100644 --- a/tools/helper/src/node/page/index.ts +++ b/tools/helper/src/node/page/index.ts @@ -1 +1,2 @@ export * from './excerpt.js' +export * from './text.js' diff --git a/tools/helper/src/node/page/text.ts b/tools/helper/src/node/page/text.ts new file mode 100644 index 0000000000..e0031cf43c --- /dev/null +++ b/tools/helper/src/node/page/text.ts @@ -0,0 +1,159 @@ +// eslint-disable-next-line vue/prefer-import-from-vue +import { isHTMLTag } from '@vue/shared' +import type { AnyNode } from 'cheerio' +import { load } from 'cheerio' +import type { App, Page } from 'vuepress/core' +import {} from 'vuepress/shared' +import { isArray } from '../../shared/index.js' + +const MEDIA_WITH_ALT = ['img'] + +const REMOVED_TAGS = [ + // non content + 'title', + 'base', + 'meta', + 'template', + 'script', + 'style', + 'canvas', + 'slot', + + // not main content + 'nav', + 'aside', + 'footer', + + // deleted + 'del', + 's', + + // rich media + 'audio', + 'video', + 'canvas', + 'iframe', + 'map', + 'area', + 'track', + 'object', + + // input + 'input', + 'textarea', + 'select', + 'option', + 'optgroup', + 'datalist', +] + +export interface PageTextOptions { + /** + * Whether convert text to single line content + * + * 是否将文字转换成单行内容 + * + * @default false + */ + singleLine?: boolean + + /** + * Length of text + * + * @description Text length will be the minimal possible length reaching this value + * + * 文字的长度 + * + * @description 文字的长度会尽可能的接近这个值 + * + * @default 300 + */ + length?: number + + /** + * Tags to be removed + * + * @description Table and code blocks are removed by default. + * + * 需要移除的标签 + * + * @description 默认情况下表格和代码块会被移除 + * + * @default ['table', 'pre'] + */ + removedTags?: string[] +} + +interface NodeOptions { + base: string + removedTags: string[] +} + +const handleNode = ( + node: AnyNode, + { base, removedTags }: NodeOptions, +): string => { + if (node.type === 'tag') { + // toc should be dropped + if ( + [node.attribs.class, node.attribs.id].some((item) => + ['table-of-contents', 'toc'].includes(item), + ) + ) + return '' + + // return alt text + if (MEDIA_WITH_ALT.includes(node.tagName)) { + return node.attribs.alt || '' + } + + // html tags can be returned + if ( + !REMOVED_TAGS.includes(node.tagName) && + !removedTags.includes(node.tagName) && + isHTMLTag(node.tagName) + ) { + return handleNodes(node.children, { base, removedTags }) + } + + return '' + } + + if (node.type === 'text') return node.data + + return '' +} + +const handleNodes = ( + nodes: AnyNode[] | null, + { base, removedTags }: NodeOptions, +): string => + isArray(nodes) + ? nodes.map((node) => handleNode(node, { base, removedTags })).join('') + : '' + +const $ = load('') + +export const getPageText = ( + { options: { base } }: App, + { contentRendered }: Page, + { + length = 300, + singleLine, + removedTags = ['table', 'pre'], + }: PageTextOptions = {}, +): string => { + let result = '' + const rootNodes = $.parseHTML(contentRendered) || [] + + for (const node of rootNodes) { + const text = handleNode(node, { base, removedTags }) + + if (text) { + result += text + if (text.length >= length) break + } + } + + return singleLine ? result.replace(/\n/g, ' ').replace(/\s+/g, ' ') : result +} diff --git a/tools/helper/tests/__fixtures__/src/markdown.md b/tools/helper/tests/__fixtures__/src/markdown.md index 0e45ed47e3..6b0634aa88 100644 --- a/tools/helper/tests/__fixtures__/src/markdown.md +++ b/tools/helper/tests/__fixtures__/src/markdown.md @@ -102,7 +102,7 @@ Classic: | center | right | left | | :------------------------: | -----------------------: | :---------------------- | | For center align use `:-:` | For right align use `-:` | For left align use `:-` | -| b | aaaaaaaaa | aaaa | +| table text | aaaaaaaaa | aaaa | | c | aaaa | a | ## Codes diff --git a/tools/helper/tests/node/__snapshots__/excerpt.spec.ts.snap b/tools/helper/tests/node/__snapshots__/excerpt.spec.ts.snap index b052c26620..ae57cab2a9 100644 --- a/tools/helper/tests/node/__snapshots__/excerpt.spec.ts.snap +++ b/tools/helper/tests/node/__snapshots__/excerpt.spec.ts.snap @@ -1,16 +1,16 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`generate page excerpt correctly > default > generate excerpt for all pages > / 1`] = ` +exports[`getPageExcerpt > default > generate excerpt for all pages > / 1`] = ` "

Homepage Content

" `; -exports[`generate page excerpt correctly > default > generate excerpt for all pages > /component.html 1`] = ` +exports[`getPageExcerpt > default > generate excerpt for all pages > /component.html 1`] = ` "

A text with

" `; -exports[`generate page excerpt correctly > default > generate excerpt for all pages > /custom-separator.html 1`] = ` +exports[`getPageExcerpt > default > generate excerpt for all pages > /custom-separator.html 1`] = ` "

Here is article excerpt.

const a = 1;
 

END_OF_EXCERPT

@@ -23,12 +23,12 @@ exports[`generate page excerpt correctly > default > generate excerpt for all pa " `; -exports[`generate page excerpt correctly > default > generate excerpt for all pages > /long-content.html 1`] = ` +exports[`getPageExcerpt > default > generate excerpt for all pages > /long-content.html 1`] = ` "

Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo, rem. Recusandae itaque rem, non perspiciatis magnam molestiae, in ab quae, dolore illo neque possimus nisi inventore? Laudantium officia nihil iusto!

Quod delectus vero dicta perferendis quia sint incidunt vitae pariatur, nemo suscipit saepe veritatis laudantium deleniti aperiam! Explicabo dignissimos, corporis, odio voluptatum eius aut pariatur dicta inventore, amet optio modi!

" `; -exports[`generate page excerpt correctly > default > generate excerpt for all pages > /markdown.html 1`] = ` +exports[`getPageExcerpt > default > generate excerpt for all pages > /markdown.html 1`] = ` "

Headings

Heading 1

@@ -42,23 +42,23 @@ exports[`generate page excerpt correctly > default > generate excerpt for all pa

This sentence has bolditalic and delete style text.

" `; -exports[`generate page excerpt correctly > default > generate excerpt for all pages > /separator.html 1`] = ` +exports[`getPageExcerpt > default > generate excerpt for all pages > /separator.html 1`] = ` "

Here is article excerpt.

const a = 1;
 
" `; -exports[`generate page excerpt correctly > excerptLength > extract all content with Infinity > / 1`] = ` +exports[`getPageExcerpt > excerptLength > extract all content with Infinity > / 1`] = ` "

Homepage Content

" `; -exports[`generate page excerpt correctly > excerptLength > extract all content with Infinity > /component.html 1`] = ` +exports[`getPageExcerpt > excerptLength > extract all content with Infinity > /component.html 1`] = ` "

A text with

" `; -exports[`generate page excerpt correctly > excerptLength > extract all content with Infinity > /custom-separator.html 1`] = ` +exports[`getPageExcerpt > excerptLength > extract all content with Infinity > /custom-separator.html 1`] = ` "

Here is article excerpt.

const a = 1;
 

END_OF_EXCERPT

@@ -73,7 +73,7 @@ exports[`generate page excerpt correctly > excerptLength > extract all content w " `; -exports[`generate page excerpt correctly > excerptLength > extract all content with Infinity > /long-content.html 1`] = ` +exports[`getPageExcerpt > excerptLength > extract all content with Infinity > /long-content.html 1`] = ` "

Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo, rem. Recusandae itaque rem, non perspiciatis magnam molestiae, in ab quae, dolore illo neque possimus nisi inventore? Laudantium officia nihil iusto!

Quod delectus vero dicta perferendis quia sint incidunt vitae pariatur, nemo suscipit saepe veritatis laudantium deleniti aperiam! Explicabo dignissimos, corporis, odio voluptatum eius aut pariatur dicta inventore, amet optio modi!

Eligendi voluptatum animi aspernatur rerum hic quasi neque doloribus mollitia quaerat. Id blanditiis, nostrum autem sequi vero praesentium magnam totam in sit animi velit, veritatis hic natus? Quidem, distinctio provident!

@@ -128,7 +128,7 @@ exports[`generate page excerpt correctly > excerptLength > extract all content w " `; -exports[`generate page excerpt correctly > excerptLength > extract all content with Infinity > /markdown.html 1`] = ` +exports[`getPageExcerpt > excerptLength > extract all content with Infinity > /markdown.html 1`] = ` "

Headings

Heading 1

@@ -231,7 +231,7 @@ line break again For left align use :- -b +table text aaaaaaaaa aaaa @@ -257,25 +257,25 @@ console.log(foo(5)); " `; -exports[`generate page excerpt correctly > excerptLength > extract all content with Infinity > /separator.html 1`] = ` +exports[`getPageExcerpt > excerptLength > extract all content with Infinity > /separator.html 1`] = ` "

Here is article excerpt.

const a = 1;
 
" `; -exports[`generate page excerpt correctly > excerptLength > only generate when having marker with 0 > /separator.html 1`] = ` +exports[`getPageExcerpt > excerptLength > only generate when having marker with 0 > /separator.html 1`] = ` "

Here is article excerpt.

const a = 1;
 
" `; -exports[`generate page excerpt correctly > excerptSeparator > generate excerpt with custom marker > /custom-separator.html 1`] = ` +exports[`getPageExcerpt > excerptSeparator > generate excerpt with custom marker > /custom-separator.html 1`] = ` "

Here is article excerpt.

const a = 1;
 
" `; -exports[`generate page excerpt correctly > excerptSeparator > generate excerpt with default marker > /separator.html 1`] = ` +exports[`getPageExcerpt > excerptSeparator > generate excerpt with default marker > /separator.html 1`] = ` "

Here is article excerpt.

const a = 1;
 
" diff --git a/tools/helper/tests/node/__snapshots__/text.spec.ts.snap b/tools/helper/tests/node/__snapshots__/text.spec.ts.snap new file mode 100644 index 0000000000..aad297600e --- /dev/null +++ b/tools/helper/tests/node/__snapshots__/text.spec.ts.snap @@ -0,0 +1,567 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`getPageText > default > / 1`] = ` +"Homepage Content +" +`; + +exports[`getPageText > default > /component.html 1`] = ` +"A text with +" +`; + +exports[`getPageText > default > /custom-separator.html 1`] = ` +"Here is article excerpt. +END_OF_EXCERPT +Content +Here is main content of article. + +A +B +C + +" +`; + +exports[`getPageText > default > /long-content.html 1`] = ` +"Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo, rem. Recusandae itaque rem, non perspiciatis magnam molestiae, in ab quae, dolore illo neque possimus nisi inventore? Laudantium officia nihil iusto! +Quod delectus vero dicta perferendis quia sint incidunt vitae pariatur, nemo suscipit saepe veritatis laudantium deleniti aperiam! Explicabo dignissimos, corporis, odio voluptatum eius aut pariatur dicta inventore, amet optio modi! +Eligendi voluptatum animi aspernatur rerum hic quasi neque doloribus mollitia quaerat. Id blanditiis, nostrum autem sequi vero praesentium magnam totam in sit animi velit, veritatis hic natus? Quidem, distinctio provident! +Nemo distinctio numquam reprehenderit sed alias perspiciatis autem quasi qui culpa ducimus dolorum mollitia beatae aperiam quisquam necessitatibus neque voluptatum sapiente, quidem explicabo voluptate debitis laborum delectus. Hic, ipsam non? +Vitae saepe repellat, laboriosam ipsam numquam cumque, eaque perferendis quibusdam dolorem blanditiis, architecto velit molestiae. Earum ea cupiditate excepturi incidunt sequi ducimus ullam architecto, tempora, iure molestias in repellendus hic. +Vero ducimus minima vitae voluptas in magnam fuga ipsa a debitis alias porro non earum veniam laudantium ipsam perferendis itaque, voluptatum amet provident. Deleniti voluptatem sit numquam ducimus quam cupiditate! +Molestias cum, rerum perferendis at voluptatibus est assumenda. Soluta saepe corrupti sunt fugit laboriosam possimus labore nemo nisi veritatis neque minima qui, molestiae esse commodi sit iure voluptatem voluptatum quibusdam. +Asperiores fuga magnam explicabo sed quae laboriosam ullam aut harum laborum accusantium totam reprehenderit voluptatibus, vel facere, inventore soluta consectetur sint? Maxime nobis dicta a quos, voluptate quidem odit quo? +Eos magni ullam aperiam provident ab repellat sunt accusantium recusandae quisquam modi quasi quaerat et, officiis quis dolorem optio minima? Dicta aut dolorem eius, aliquid maiores labore! Officiis, tempore similique. +Ex quo in nulla molestias doloribus odio dolorem illum aperiam error iste! Facilis quae consequatur praesentium unde. Rerum, et, doloribus eveniet cum sequi autem illo est quibusdam laborum aperiam nostrum. +Eius ratione fuga dolorum aut totam molestias commodi ea sed odio possimus, fugiat perspiciatis perferendis omnis autem deserunt. Id veniam rem voluptatum non molestiae adipisci, impedit cupiditate eos exercitationem nisi. +Ab nam veniam corrupti aperiam cupiditate. Ex totam, cumque dignissimos dicta nemo veritatis facilis dolor minus consequatur et quo odio quibusdam consequuntur dolorum esse consectetur dolorem velit, perferendis deserunt perspiciatis! +Repellendus in labore sed nobis esse aut nam, neque incidunt asperiores natus fuga, reprehenderit porro ad, atque nemo dicta autem impedit iste totam quae minus? Ullam nesciunt iste voluptatum deserunt? +Corporis numquam itaque quibusdam eos quas tempore dolorem, impedit laboriosam sequi, possimus sint, voluptatum ab dolor unde! Harum illo, sed, adipisci iusto saepe provident, pariatur labore obcaecati dolorem velit nostrum. +Rerum minima eius hic, vel iure ipsa natus facilis necessitatibus dolores optio enim quod obcaecati neque doloribus sapiente atque repellendus. Amet eligendi libero illo? Earum aliquam molestiae tempora placeat delectus! +Dolores eum hic accusantium aliquam maxime deleniti non, voluptas aut cupiditate omnis veritatis dolorem, voluptatem nisi vero odio quidem sapiente animi! Nihil repudiandae, excepturi totam cupiditate blanditiis porro delectus quidem. +Iste ipsum qui, nostrum recusandae, maiores, at cum odio labore cupiditate numquam id animi iure? Quam sequi laborum vero magnam excepturi, mollitia ex nobis fuga sed, vel veniam molestiae hic? +Iste temporibus voluptate magni voluptates inventore deserunt magnam laboriosam rerum exercitationem maxime, minus sed accusamus sint perspiciatis quaerat, ipsa facilis ipsum? Commodi incidunt nam doloremque blanditiis neque minima beatae aliquam. +Veniam voluptate exercitationem voluptas blanditiis aliquam id non fugiat amet, esse iusto dolorem deserunt maxime libero, similique ducimus, reiciendis adipisci ad culpa! Unde corporis, magnam quo iusto blanditiis ex voluptatibus. +Ipsum quam accusamus atque itaque reiciendis obcaecati nemo quas architecto, suscipit, dolores a quasi illo at deserunt voluptas nesciunt. Odio sapiente dolores beatae et labore dicta aspernatur molestiae velit rerum? +Laborum vel vitae dignissimos enim amet quas eveniet aliquid earum numquam itaque possimus, est corrupti quidem quam natus nostrum neque repellat quis ratione corporis officiis minus expedita dicta voluptate! Quibusdam! +Qui minima provident dignissimos corrupti facilis modi saepe esse praesentium itaque molestiae aut, ea, earum, iure facere quis eaque alias! Voluptas in minima voluptate quos facilis perspiciatis expedita accusamus sequi! +Amet, sed qui eius delectus blanditiis possimus fugit et nulla doloribus, tempore beatae autem tenetur deserunt eveniet vero dolore sit ipsa minus magnam itaque aliquid labore, illo reprehenderit dolores! Sunt. +Commodi aliquam consectetur saepe quis laboriosam, debitis optio tempora eius sed error ad officiis. Cupiditate enim amet laborum quaerat eaque. Fugit ab ipsam similique tempore nesciunt accusantium explicabo repudiandae harum? +Autem atque laudantium mollitia voluptates eum corporis repudiandae debitis dicta cumque asperiores repellat accusamus sit esse, dolor, inventore libero minima tempora delectus eligendi quas sint! Odit eos ipsa accusamus ducimus. +Dicta natus facere, cum eveniet explicabo nobis, pariatur beatae quae ab temporibus maiores rem eaque. Quisquam itaque saepe sequi, voluptatem quibusdam, minima ea deleniti quos vel modi est. Modi, maxime? +Optio perspiciatis rerum iusto expedita esse magnam pariatur quo repellendus sint tenetur veniam illo alias quae ratione aliquid ab natus enim laboriosam veritatis qui possimus, quos dolorum officia quas? Quasi. +Consectetur, incidunt praesentium laborum consequatur magnam, accusantium reprehenderit sequi explicabo nam numquam iusto veniam ducimus temporibus molestiae ab nisi quis dolores quam unde repellat sunt, beatae quidem? Doloremque, vero minima? +Illo reiciendis veritatis rem adipisci dolores quasi dignissimos quisquam, eligendi sint facilis est perspiciatis velit totam in praesentium ipsum! Accusamus dignissimos minima fuga laudantium pariatur voluptate dolores veniam deserunt beatae? +Id, molestiae. Excepturi ad quaerat quam sit consequuntur dolores, a doloribus eaque et harum nulla illo alias beatae, temporibus non maiores quo! Numquam aliquid, enim quas possimus ab exercitationem accusamus. +Ab voluptates consequatur dolore aperiam, eum doloremque voluptatum dicta ipsum eos ea exercitationem. Soluta nobis sunt reiciendis consequuntur vero nesciunt suscipit quos maiores saepe, commodi doloremque, culpa rerum perferendis esse. +Quasi saepe sed repellendus. Fugiat voluptatem aspernatur nobis? Officiis necessitatibus veniam esse provident voluptatum alias quas consequuntur corporis aliquam doloribus eveniet autem, sit, quo dolorum voluptate vel porro quae quibusdam. +Aliquid illo maiores vel cumque eos iure explicabo quae molestiae exercitationem dolores quia voluptate, similique consequatur necessitatibus pariatur quas labore rerum consectetur eum totam dignissimos quaerat. Perferendis dicta facere saepe. +Nam molestias vel natus eaque, sunt itaque ratione maxime libero fuga fugit minus quidem velit assumenda, rem expedita impedit a in! Cumque perferendis est velit quo ullam fugit corrupti pariatur! +Eaque at cumque dolores culpa autem officiis architecto voluptas qui mollitia, nam repellat quis fuga consequuntur? Dolore optio nesciunt error perspiciatis. Praesentium nisi, fugiat adipisci suscipit reprehenderit ullam quia deleniti. +Iusto illo in voluptatum, reprehenderit atque hic inventore asperiores facere enim minima mollitia praesentium assumenda incidunt obcaecati. Delectus neque soluta, ullam nemo corrupti dicta sint explicabo nesciunt tempora, unde pariatur. +Suscipit, placeat, cum veniam recusandae ab dolor corporis laboriosam voluptate consequatur nihil deleniti quae soluta assumenda quam cumque aliquam, possimus expedita explicabo eligendi consequuntur accusantium enim! Maxime rem est ex! +Error ipsam dolorem temporibus, esse suscipit eveniet recusandae hic rem corporis excepturi laboriosam est nostrum? Illum distinctio laboriosam et, itaque temporibus maxime culpa aliquid iure ipsam? Commodi, aliquid quasi. Quod! +Ullam ratione tempora molestias unde, ut, dolor sint tenetur magni amet sunt, nihil corporis voluptatum fuga sapiente soluta maxime voluptas fugiat recusandae assumenda nobis quam maiores veniam cupiditate. Officia, sapiente. +Beatae alias repellendus nostrum sequi porro. Fugit cupiditate aperiam quos ratione dicta eligendi deserunt quisquam iste minima, unde natus dolorum vero. Consequatur similique quasi tenetur. Nisi illo vitae aperiam ipsam? +Praesentium, quidem accusamus doloribus exercitationem adipisci rem soluta asperiores quis corrupti pariatur? Incidunt architecto tempora similique repellat ratione voluptatibus magnam, odit harum maxime exercitationem reprehenderit repudiandae in facilis obcaecati velit. +Minus, rerum, inventore dolorem illo dolor tenetur molestiae sit quae sapiente officia, maxime voluptatum consequuntur ullam. Temporibus voluptates ipsa facere, optio odit saepe nihil repellendus ad reprehenderit expedita consequuntur nam! +Aut corrupti eligendi rem repudiandae cum similique officia ea illum beatae. Maiores, explicabo, voluptatum accusamus excepturi incidunt velit dolorem eligendi distinctio a nemo similique perspiciatis blanditiis dolores voluptates commodi porro? +Quis nulla minima corporis eligendi earum voluptas ipsam accusantium. Nesciunt corrupti numquam ex omnis fuga natus sint, delectus molestias eaque dolor ea porro autem velit, voluptate pariatur exercitationem modi explicabo. +Corporis vero quisquam id mollitia deleniti minus aut libero sint iure sapiente magni nemo laboriosam, voluptatem totam optio nostrum labore tenetur, a nesciunt! Quis impedit harum velit, minima quae maiores. +Cum sint, rem saepe quam similique sequi veniam nisi labore suscipit dolorem quos impedit alias dolore sit ad incidunt assumenda. Blanditiis sed perspiciatis reiciendis animi ea sunt, at perferendis iusto! +Qui voluptas quidem ipsa dolores exercitationem doloremque necessitatibus? Rem nihil deleniti eos, nobis doloremque a voluptatum dignissimos commodi cumque tempora facilis! Illo minima unde beatae dicta nobis ipsa, delectus dolore! +Illum quis laboriosam neque odio ad! Facere illo exercitationem quod in vel non magnam incidunt quibusdam culpa, minus pariatur id eaque dolorum, consequatur voluptas harum voluptatibus sunt odit iure atque. +Dolorum officiis fugit error laborum. Necessitatibus aliquam reprehenderit aspernatur. Beatae illo est reiciendis. Odit nobis pariatur provident, deleniti expedita magni maxime quaerat dolor omnis enim qui ducimus, fugit consectetur odio? +Beatae sunt, quia doloremque nulla animi aperiam facilis blanditiis, non laborum in delectus a ipsa esse ex odio maxime iure, magni excepturi pariatur vero veritatis. Officiis deserunt laboriosam consequuntur recusandae. +Content ends. +" +`; + +exports[`getPageText > default > /markdown.html 1`] = ` +"Content Example +Headings +Heading 1 +Heading 2 +Heading 3 +Heading 4 +Heading 5 +Heading 6 +Heading with markdown and html +Text +This sentence has bold、italic and style text. +Paragraph +This is a paragraph. +This is another paragraph. +Line Break +I would like to line break at +this point +::: tip +In codes above, two spaces are behind at. +::: +Blockquotes + +Blockquotes can also be nested... + +...by using greater-than signs right next to each other... + +...or with spaces between arrows. + + + +List +Unordered List + + +Create a list by starting a line with - + + +Make sub-lists by indenting 2 spaces: + + +Marker character change forces new list start: + + +Ac tristique libero volutpat at + + +Facilisis in pretium nisl aliquet + + +Nulla volutpat aliquam velit +link break +New paragraph + + + + + + +It’s easy! + + +Ordered List + +Lorem ipsum dolor sit amet +Consectetur adipiscing elit +line break +line break again +Integer molestie lorem at massa + +HR + +Link + + + + + +Anchor + +Image +Logo +logo +A inline image relative, image with absolute link and a image with full url. +Emoji +Classic: +😉 😢 😆 😋 +Tables + +Codes +Inline Code: inline code +Block code: +Syntax highlighting: + Comment + +" +`; + +exports[`getPageText > default > /separator.html 1`] = ` +"Here is article excerpt. + +Content +Here is main content of article. + +A +B +C + +" +`; + +exports[`getPageText > removedTags > / 1`] = ` +"Homepage Content +" +`; + +exports[`getPageText > removedTags > / 2`] = ` +"Homepage Content +" +`; + +exports[`getPageText > removedTags > /component.html 1`] = ` +"A text with +" +`; + +exports[`getPageText > removedTags > /component.html 2`] = ` +"A text with +" +`; + +exports[`getPageText > removedTags > /custom-separator.html 1`] = ` +"Here is article excerpt. +const a = 1; +END_OF_EXCERPT +Content +Here is main content of article. + +A +B +C + +const a = 1; +" +`; + +exports[`getPageText > removedTags > /custom-separator.html 2`] = ` +"Here is article excerpt. +END_OF_EXCERPT +Content +Here is main content of article. + +" +`; + +exports[`getPageText > removedTags > /long-content.html 1`] = ` +"Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo, rem. Recusandae itaque rem, non perspiciatis magnam molestiae, in ab quae, dolore illo neque possimus nisi inventore? Laudantium officia nihil iusto! +Quod delectus vero dicta perferendis quia sint incidunt vitae pariatur, nemo suscipit saepe veritatis laudantium deleniti aperiam! Explicabo dignissimos, corporis, odio voluptatum eius aut pariatur dicta inventore, amet optio modi! +Eligendi voluptatum animi aspernatur rerum hic quasi neque doloribus mollitia quaerat. Id blanditiis, nostrum autem sequi vero praesentium magnam totam in sit animi velit, veritatis hic natus? Quidem, distinctio provident! +Nemo distinctio numquam reprehenderit sed alias perspiciatis autem quasi qui culpa ducimus dolorum mollitia beatae aperiam quisquam necessitatibus neque voluptatum sapiente, quidem explicabo voluptate debitis laborum delectus. Hic, ipsam non? +Vitae saepe repellat, laboriosam ipsam numquam cumque, eaque perferendis quibusdam dolorem blanditiis, architecto velit molestiae. Earum ea cupiditate excepturi incidunt sequi ducimus ullam architecto, tempora, iure molestias in repellendus hic. +Vero ducimus minima vitae voluptas in magnam fuga ipsa a debitis alias porro non earum veniam laudantium ipsam perferendis itaque, voluptatum amet provident. Deleniti voluptatem sit numquam ducimus quam cupiditate! +Molestias cum, rerum perferendis at voluptatibus est assumenda. Soluta saepe corrupti sunt fugit laboriosam possimus labore nemo nisi veritatis neque minima qui, molestiae esse commodi sit iure voluptatem voluptatum quibusdam. +Asperiores fuga magnam explicabo sed quae laboriosam ullam aut harum laborum accusantium totam reprehenderit voluptatibus, vel facere, inventore soluta consectetur sint? Maxime nobis dicta a quos, voluptate quidem odit quo? +Eos magni ullam aperiam provident ab repellat sunt accusantium recusandae quisquam modi quasi quaerat et, officiis quis dolorem optio minima? Dicta aut dolorem eius, aliquid maiores labore! Officiis, tempore similique. +Ex quo in nulla molestias doloribus odio dolorem illum aperiam error iste! Facilis quae consequatur praesentium unde. Rerum, et, doloribus eveniet cum sequi autem illo est quibusdam laborum aperiam nostrum. +Eius ratione fuga dolorum aut totam molestias commodi ea sed odio possimus, fugiat perspiciatis perferendis omnis autem deserunt. Id veniam rem voluptatum non molestiae adipisci, impedit cupiditate eos exercitationem nisi. +Ab nam veniam corrupti aperiam cupiditate. Ex totam, cumque dignissimos dicta nemo veritatis facilis dolor minus consequatur et quo odio quibusdam consequuntur dolorum esse consectetur dolorem velit, perferendis deserunt perspiciatis! +Repellendus in labore sed nobis esse aut nam, neque incidunt asperiores natus fuga, reprehenderit porro ad, atque nemo dicta autem impedit iste totam quae minus? Ullam nesciunt iste voluptatum deserunt? +Corporis numquam itaque quibusdam eos quas tempore dolorem, impedit laboriosam sequi, possimus sint, voluptatum ab dolor unde! Harum illo, sed, adipisci iusto saepe provident, pariatur labore obcaecati dolorem velit nostrum. +Rerum minima eius hic, vel iure ipsa natus facilis necessitatibus dolores optio enim quod obcaecati neque doloribus sapiente atque repellendus. Amet eligendi libero illo? Earum aliquam molestiae tempora placeat delectus! +Dolores eum hic accusantium aliquam maxime deleniti non, voluptas aut cupiditate omnis veritatis dolorem, voluptatem nisi vero odio quidem sapiente animi! Nihil repudiandae, excepturi totam cupiditate blanditiis porro delectus quidem. +Iste ipsum qui, nostrum recusandae, maiores, at cum odio labore cupiditate numquam id animi iure? Quam sequi laborum vero magnam excepturi, mollitia ex nobis fuga sed, vel veniam molestiae hic? +Iste temporibus voluptate magni voluptates inventore deserunt magnam laboriosam rerum exercitationem maxime, minus sed accusamus sint perspiciatis quaerat, ipsa facilis ipsum? Commodi incidunt nam doloremque blanditiis neque minima beatae aliquam. +Veniam voluptate exercitationem voluptas blanditiis aliquam id non fugiat amet, esse iusto dolorem deserunt maxime libero, similique ducimus, reiciendis adipisci ad culpa! Unde corporis, magnam quo iusto blanditiis ex voluptatibus. +Ipsum quam accusamus atque itaque reiciendis obcaecati nemo quas architecto, suscipit, dolores a quasi illo at deserunt voluptas nesciunt. Odio sapiente dolores beatae et labore dicta aspernatur molestiae velit rerum? +Laborum vel vitae dignissimos enim amet quas eveniet aliquid earum numquam itaque possimus, est corrupti quidem quam natus nostrum neque repellat quis ratione corporis officiis minus expedita dicta voluptate! Quibusdam! +Qui minima provident dignissimos corrupti facilis modi saepe esse praesentium itaque molestiae aut, ea, earum, iure facere quis eaque alias! Voluptas in minima voluptate quos facilis perspiciatis expedita accusamus sequi! +Amet, sed qui eius delectus blanditiis possimus fugit et nulla doloribus, tempore beatae autem tenetur deserunt eveniet vero dolore sit ipsa minus magnam itaque aliquid labore, illo reprehenderit dolores! Sunt. +Commodi aliquam consectetur saepe quis laboriosam, debitis optio tempora eius sed error ad officiis. Cupiditate enim amet laborum quaerat eaque. Fugit ab ipsam similique tempore nesciunt accusantium explicabo repudiandae harum? +Autem atque laudantium mollitia voluptates eum corporis repudiandae debitis dicta cumque asperiores repellat accusamus sit esse, dolor, inventore libero minima tempora delectus eligendi quas sint! Odit eos ipsa accusamus ducimus. +Dicta natus facere, cum eveniet explicabo nobis, pariatur beatae quae ab temporibus maiores rem eaque. Quisquam itaque saepe sequi, voluptatem quibusdam, minima ea deleniti quos vel modi est. Modi, maxime? +Optio perspiciatis rerum iusto expedita esse magnam pariatur quo repellendus sint tenetur veniam illo alias quae ratione aliquid ab natus enim laboriosam veritatis qui possimus, quos dolorum officia quas? Quasi. +Consectetur, incidunt praesentium laborum consequatur magnam, accusantium reprehenderit sequi explicabo nam numquam iusto veniam ducimus temporibus molestiae ab nisi quis dolores quam unde repellat sunt, beatae quidem? Doloremque, vero minima? +Illo reiciendis veritatis rem adipisci dolores quasi dignissimos quisquam, eligendi sint facilis est perspiciatis velit totam in praesentium ipsum! Accusamus dignissimos minima fuga laudantium pariatur voluptate dolores veniam deserunt beatae? +Id, molestiae. Excepturi ad quaerat quam sit consequuntur dolores, a doloribus eaque et harum nulla illo alias beatae, temporibus non maiores quo! Numquam aliquid, enim quas possimus ab exercitationem accusamus. +Ab voluptates consequatur dolore aperiam, eum doloremque voluptatum dicta ipsum eos ea exercitationem. Soluta nobis sunt reiciendis consequuntur vero nesciunt suscipit quos maiores saepe, commodi doloremque, culpa rerum perferendis esse. +Quasi saepe sed repellendus. Fugiat voluptatem aspernatur nobis? Officiis necessitatibus veniam esse provident voluptatum alias quas consequuntur corporis aliquam doloribus eveniet autem, sit, quo dolorum voluptate vel porro quae quibusdam. +Aliquid illo maiores vel cumque eos iure explicabo quae molestiae exercitationem dolores quia voluptate, similique consequatur necessitatibus pariatur quas labore rerum consectetur eum totam dignissimos quaerat. Perferendis dicta facere saepe. +Nam molestias vel natus eaque, sunt itaque ratione maxime libero fuga fugit minus quidem velit assumenda, rem expedita impedit a in! Cumque perferendis est velit quo ullam fugit corrupti pariatur! +Eaque at cumque dolores culpa autem officiis architecto voluptas qui mollitia, nam repellat quis fuga consequuntur? Dolore optio nesciunt error perspiciatis. Praesentium nisi, fugiat adipisci suscipit reprehenderit ullam quia deleniti. +Iusto illo in voluptatum, reprehenderit atque hic inventore asperiores facere enim minima mollitia praesentium assumenda incidunt obcaecati. Delectus neque soluta, ullam nemo corrupti dicta sint explicabo nesciunt tempora, unde pariatur. +Suscipit, placeat, cum veniam recusandae ab dolor corporis laboriosam voluptate consequatur nihil deleniti quae soluta assumenda quam cumque aliquam, possimus expedita explicabo eligendi consequuntur accusantium enim! Maxime rem est ex! +Error ipsam dolorem temporibus, esse suscipit eveniet recusandae hic rem corporis excepturi laboriosam est nostrum? Illum distinctio laboriosam et, itaque temporibus maxime culpa aliquid iure ipsam? Commodi, aliquid quasi. Quod! +Ullam ratione tempora molestias unde, ut, dolor sint tenetur magni amet sunt, nihil corporis voluptatum fuga sapiente soluta maxime voluptas fugiat recusandae assumenda nobis quam maiores veniam cupiditate. Officia, sapiente. +Beatae alias repellendus nostrum sequi porro. Fugit cupiditate aperiam quos ratione dicta eligendi deserunt quisquam iste minima, unde natus dolorum vero. Consequatur similique quasi tenetur. Nisi illo vitae aperiam ipsam? +Praesentium, quidem accusamus doloribus exercitationem adipisci rem soluta asperiores quis corrupti pariatur? Incidunt architecto tempora similique repellat ratione voluptatibus magnam, odit harum maxime exercitationem reprehenderit repudiandae in facilis obcaecati velit. +Minus, rerum, inventore dolorem illo dolor tenetur molestiae sit quae sapiente officia, maxime voluptatum consequuntur ullam. Temporibus voluptates ipsa facere, optio odit saepe nihil repellendus ad reprehenderit expedita consequuntur nam! +Aut corrupti eligendi rem repudiandae cum similique officia ea illum beatae. Maiores, explicabo, voluptatum accusamus excepturi incidunt velit dolorem eligendi distinctio a nemo similique perspiciatis blanditiis dolores voluptates commodi porro? +Quis nulla minima corporis eligendi earum voluptas ipsam accusantium. Nesciunt corrupti numquam ex omnis fuga natus sint, delectus molestias eaque dolor ea porro autem velit, voluptate pariatur exercitationem modi explicabo. +Corporis vero quisquam id mollitia deleniti minus aut libero sint iure sapiente magni nemo laboriosam, voluptatem totam optio nostrum labore tenetur, a nesciunt! Quis impedit harum velit, minima quae maiores. +Cum sint, rem saepe quam similique sequi veniam nisi labore suscipit dolorem quos impedit alias dolore sit ad incidunt assumenda. Blanditiis sed perspiciatis reiciendis animi ea sunt, at perferendis iusto! +Qui voluptas quidem ipsa dolores exercitationem doloremque necessitatibus? Rem nihil deleniti eos, nobis doloremque a voluptatum dignissimos commodi cumque tempora facilis! Illo minima unde beatae dicta nobis ipsa, delectus dolore! +Illum quis laboriosam neque odio ad! Facere illo exercitationem quod in vel non magnam incidunt quibusdam culpa, minus pariatur id eaque dolorum, consequatur voluptas harum voluptatibus sunt odit iure atque. +Dolorum officiis fugit error laborum. Necessitatibus aliquam reprehenderit aspernatur. Beatae illo est reiciendis. Odit nobis pariatur provident, deleniti expedita magni maxime quaerat dolor omnis enim qui ducimus, fugit consectetur odio? +Beatae sunt, quia doloremque nulla animi aperiam facilis blanditiis, non laborum in delectus a ipsa esse ex odio maxime iure, magni excepturi pariatur vero veritatis. Officiis deserunt laboriosam consequuntur recusandae. +Content ends. +" +`; + +exports[`getPageText > removedTags > /long-content.html 2`] = ` +"Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo, rem. Recusandae itaque rem, non perspiciatis magnam molestiae, in ab quae, dolore illo neque possimus nisi inventore? Laudantium officia nihil iusto! +Quod delectus vero dicta perferendis quia sint incidunt vitae pariatur, nemo suscipit saepe veritatis laudantium deleniti aperiam! Explicabo dignissimos, corporis, odio voluptatum eius aut pariatur dicta inventore, amet optio modi! +Eligendi voluptatum animi aspernatur rerum hic quasi neque doloribus mollitia quaerat. Id blanditiis, nostrum autem sequi vero praesentium magnam totam in sit animi velit, veritatis hic natus? Quidem, distinctio provident! +Nemo distinctio numquam reprehenderit sed alias perspiciatis autem quasi qui culpa ducimus dolorum mollitia beatae aperiam quisquam necessitatibus neque voluptatum sapiente, quidem explicabo voluptate debitis laborum delectus. Hic, ipsam non? +Vitae saepe repellat, laboriosam ipsam numquam cumque, eaque perferendis quibusdam dolorem blanditiis, architecto velit molestiae. Earum ea cupiditate excepturi incidunt sequi ducimus ullam architecto, tempora, iure molestias in repellendus hic. +Vero ducimus minima vitae voluptas in magnam fuga ipsa a debitis alias porro non earum veniam laudantium ipsam perferendis itaque, voluptatum amet provident. Deleniti voluptatem sit numquam ducimus quam cupiditate! +Molestias cum, rerum perferendis at voluptatibus est assumenda. Soluta saepe corrupti sunt fugit laboriosam possimus labore nemo nisi veritatis neque minima qui, molestiae esse commodi sit iure voluptatem voluptatum quibusdam. +Asperiores fuga magnam explicabo sed quae laboriosam ullam aut harum laborum accusantium totam reprehenderit voluptatibus, vel facere, inventore soluta consectetur sint? Maxime nobis dicta a quos, voluptate quidem odit quo? +Eos magni ullam aperiam provident ab repellat sunt accusantium recusandae quisquam modi quasi quaerat et, officiis quis dolorem optio minima? Dicta aut dolorem eius, aliquid maiores labore! Officiis, tempore similique. +Ex quo in nulla molestias doloribus odio dolorem illum aperiam error iste! Facilis quae consequatur praesentium unde. Rerum, et, doloribus eveniet cum sequi autem illo est quibusdam laborum aperiam nostrum. +Eius ratione fuga dolorum aut totam molestias commodi ea sed odio possimus, fugiat perspiciatis perferendis omnis autem deserunt. Id veniam rem voluptatum non molestiae adipisci, impedit cupiditate eos exercitationem nisi. +Ab nam veniam corrupti aperiam cupiditate. Ex totam, cumque dignissimos dicta nemo veritatis facilis dolor minus consequatur et quo odio quibusdam consequuntur dolorum esse consectetur dolorem velit, perferendis deserunt perspiciatis! +Repellendus in labore sed nobis esse aut nam, neque incidunt asperiores natus fuga, reprehenderit porro ad, atque nemo dicta autem impedit iste totam quae minus? Ullam nesciunt iste voluptatum deserunt? +Corporis numquam itaque quibusdam eos quas tempore dolorem, impedit laboriosam sequi, possimus sint, voluptatum ab dolor unde! Harum illo, sed, adipisci iusto saepe provident, pariatur labore obcaecati dolorem velit nostrum. +Rerum minima eius hic, vel iure ipsa natus facilis necessitatibus dolores optio enim quod obcaecati neque doloribus sapiente atque repellendus. Amet eligendi libero illo? Earum aliquam molestiae tempora placeat delectus! +Dolores eum hic accusantium aliquam maxime deleniti non, voluptas aut cupiditate omnis veritatis dolorem, voluptatem nisi vero odio quidem sapiente animi! Nihil repudiandae, excepturi totam cupiditate blanditiis porro delectus quidem. +Iste ipsum qui, nostrum recusandae, maiores, at cum odio labore cupiditate numquam id animi iure? Quam sequi laborum vero magnam excepturi, mollitia ex nobis fuga sed, vel veniam molestiae hic? +Iste temporibus voluptate magni voluptates inventore deserunt magnam laboriosam rerum exercitationem maxime, minus sed accusamus sint perspiciatis quaerat, ipsa facilis ipsum? Commodi incidunt nam doloremque blanditiis neque minima beatae aliquam. +Veniam voluptate exercitationem voluptas blanditiis aliquam id non fugiat amet, esse iusto dolorem deserunt maxime libero, similique ducimus, reiciendis adipisci ad culpa! Unde corporis, magnam quo iusto blanditiis ex voluptatibus. +Ipsum quam accusamus atque itaque reiciendis obcaecati nemo quas architecto, suscipit, dolores a quasi illo at deserunt voluptas nesciunt. Odio sapiente dolores beatae et labore dicta aspernatur molestiae velit rerum? +Laborum vel vitae dignissimos enim amet quas eveniet aliquid earum numquam itaque possimus, est corrupti quidem quam natus nostrum neque repellat quis ratione corporis officiis minus expedita dicta voluptate! Quibusdam! +Qui minima provident dignissimos corrupti facilis modi saepe esse praesentium itaque molestiae aut, ea, earum, iure facere quis eaque alias! Voluptas in minima voluptate quos facilis perspiciatis expedita accusamus sequi! +Amet, sed qui eius delectus blanditiis possimus fugit et nulla doloribus, tempore beatae autem tenetur deserunt eveniet vero dolore sit ipsa minus magnam itaque aliquid labore, illo reprehenderit dolores! Sunt. +Commodi aliquam consectetur saepe quis laboriosam, debitis optio tempora eius sed error ad officiis. Cupiditate enim amet laborum quaerat eaque. Fugit ab ipsam similique tempore nesciunt accusantium explicabo repudiandae harum? +Autem atque laudantium mollitia voluptates eum corporis repudiandae debitis dicta cumque asperiores repellat accusamus sit esse, dolor, inventore libero minima tempora delectus eligendi quas sint! Odit eos ipsa accusamus ducimus. +Dicta natus facere, cum eveniet explicabo nobis, pariatur beatae quae ab temporibus maiores rem eaque. Quisquam itaque saepe sequi, voluptatem quibusdam, minima ea deleniti quos vel modi est. Modi, maxime? +Optio perspiciatis rerum iusto expedita esse magnam pariatur quo repellendus sint tenetur veniam illo alias quae ratione aliquid ab natus enim laboriosam veritatis qui possimus, quos dolorum officia quas? Quasi. +Consectetur, incidunt praesentium laborum consequatur magnam, accusantium reprehenderit sequi explicabo nam numquam iusto veniam ducimus temporibus molestiae ab nisi quis dolores quam unde repellat sunt, beatae quidem? Doloremque, vero minima? +Illo reiciendis veritatis rem adipisci dolores quasi dignissimos quisquam, eligendi sint facilis est perspiciatis velit totam in praesentium ipsum! Accusamus dignissimos minima fuga laudantium pariatur voluptate dolores veniam deserunt beatae? +Id, molestiae. Excepturi ad quaerat quam sit consequuntur dolores, a doloribus eaque et harum nulla illo alias beatae, temporibus non maiores quo! Numquam aliquid, enim quas possimus ab exercitationem accusamus. +Ab voluptates consequatur dolore aperiam, eum doloremque voluptatum dicta ipsum eos ea exercitationem. Soluta nobis sunt reiciendis consequuntur vero nesciunt suscipit quos maiores saepe, commodi doloremque, culpa rerum perferendis esse. +Quasi saepe sed repellendus. Fugiat voluptatem aspernatur nobis? Officiis necessitatibus veniam esse provident voluptatum alias quas consequuntur corporis aliquam doloribus eveniet autem, sit, quo dolorum voluptate vel porro quae quibusdam. +Aliquid illo maiores vel cumque eos iure explicabo quae molestiae exercitationem dolores quia voluptate, similique consequatur necessitatibus pariatur quas labore rerum consectetur eum totam dignissimos quaerat. Perferendis dicta facere saepe. +Nam molestias vel natus eaque, sunt itaque ratione maxime libero fuga fugit minus quidem velit assumenda, rem expedita impedit a in! Cumque perferendis est velit quo ullam fugit corrupti pariatur! +Eaque at cumque dolores culpa autem officiis architecto voluptas qui mollitia, nam repellat quis fuga consequuntur? Dolore optio nesciunt error perspiciatis. Praesentium nisi, fugiat adipisci suscipit reprehenderit ullam quia deleniti. +Iusto illo in voluptatum, reprehenderit atque hic inventore asperiores facere enim minima mollitia praesentium assumenda incidunt obcaecati. Delectus neque soluta, ullam nemo corrupti dicta sint explicabo nesciunt tempora, unde pariatur. +Suscipit, placeat, cum veniam recusandae ab dolor corporis laboriosam voluptate consequatur nihil deleniti quae soluta assumenda quam cumque aliquam, possimus expedita explicabo eligendi consequuntur accusantium enim! Maxime rem est ex! +Error ipsam dolorem temporibus, esse suscipit eveniet recusandae hic rem corporis excepturi laboriosam est nostrum? Illum distinctio laboriosam et, itaque temporibus maxime culpa aliquid iure ipsam? Commodi, aliquid quasi. Quod! +Ullam ratione tempora molestias unde, ut, dolor sint tenetur magni amet sunt, nihil corporis voluptatum fuga sapiente soluta maxime voluptas fugiat recusandae assumenda nobis quam maiores veniam cupiditate. Officia, sapiente. +Beatae alias repellendus nostrum sequi porro. Fugit cupiditate aperiam quos ratione dicta eligendi deserunt quisquam iste minima, unde natus dolorum vero. Consequatur similique quasi tenetur. Nisi illo vitae aperiam ipsam? +Praesentium, quidem accusamus doloribus exercitationem adipisci rem soluta asperiores quis corrupti pariatur? Incidunt architecto tempora similique repellat ratione voluptatibus magnam, odit harum maxime exercitationem reprehenderit repudiandae in facilis obcaecati velit. +Minus, rerum, inventore dolorem illo dolor tenetur molestiae sit quae sapiente officia, maxime voluptatum consequuntur ullam. Temporibus voluptates ipsa facere, optio odit saepe nihil repellendus ad reprehenderit expedita consequuntur nam! +Aut corrupti eligendi rem repudiandae cum similique officia ea illum beatae. Maiores, explicabo, voluptatum accusamus excepturi incidunt velit dolorem eligendi distinctio a nemo similique perspiciatis blanditiis dolores voluptates commodi porro? +Quis nulla minima corporis eligendi earum voluptas ipsam accusantium. Nesciunt corrupti numquam ex omnis fuga natus sint, delectus molestias eaque dolor ea porro autem velit, voluptate pariatur exercitationem modi explicabo. +Corporis vero quisquam id mollitia deleniti minus aut libero sint iure sapiente magni nemo laboriosam, voluptatem totam optio nostrum labore tenetur, a nesciunt! Quis impedit harum velit, minima quae maiores. +Cum sint, rem saepe quam similique sequi veniam nisi labore suscipit dolorem quos impedit alias dolore sit ad incidunt assumenda. Blanditiis sed perspiciatis reiciendis animi ea sunt, at perferendis iusto! +Qui voluptas quidem ipsa dolores exercitationem doloremque necessitatibus? Rem nihil deleniti eos, nobis doloremque a voluptatum dignissimos commodi cumque tempora facilis! Illo minima unde beatae dicta nobis ipsa, delectus dolore! +Illum quis laboriosam neque odio ad! Facere illo exercitationem quod in vel non magnam incidunt quibusdam culpa, minus pariatur id eaque dolorum, consequatur voluptas harum voluptatibus sunt odit iure atque. +Dolorum officiis fugit error laborum. Necessitatibus aliquam reprehenderit aspernatur. Beatae illo est reiciendis. Odit nobis pariatur provident, deleniti expedita magni maxime quaerat dolor omnis enim qui ducimus, fugit consectetur odio? +Beatae sunt, quia doloremque nulla animi aperiam facilis blanditiis, non laborum in delectus a ipsa esse ex odio maxime iure, magni excepturi pariatur vero veritatis. Officiis deserunt laboriosam consequuntur recusandae. +Content ends. +" +`; + +exports[`getPageText > removedTags > /markdown.html 1`] = ` +"Content Example +Headings +Heading 1 +Heading 2 +Heading 3 +Heading 4 +Heading 5 +Heading 6 +Heading with markdown and html +Text +This sentence has bold、italic and style text. +Paragraph +This is a paragraph. +This is another paragraph. +Line Break +I would like to line break at +this point +::: tip +In codes above, two spaces are behind at. +::: +Blockquotes + +Blockquotes can also be nested... + +...by using greater-than signs right next to each other... + +...or with spaces between arrows. + + + +List +Unordered List + + +Create a list by starting a line with - + + +Make sub-lists by indenting 2 spaces: + + +Marker character change forces new list start: + + +Ac tristique libero volutpat at + + +Facilisis in pretium nisl aliquet + + +Nulla volutpat aliquam velit +link break +New paragraph + + + + + + +It’s easy! + + +Ordered List + +Lorem ipsum dolor sit amet +Consectetur adipiscing elit +line break +line break again +Integer molestie lorem at massa + +HR + +Link + + + + + +Anchor + +Image +Logo +logo +A inline image relative, image with absolute link and a image with full url. +Emoji +Classic: +😉 😢 😆 😋 +Tables + + + +center +right +left + + + + +For center align use :-: +For right align use -: +For left align use :- + + +table text +aaaaaaaaa +aaaa + + +c +aaaa +a + + + +Codes +Inline Code: inline code +Block code: +Sample text here... +Syntax highlighting: +var foo = function (bar) { + return bar++; +}; + +console.log(foo(5)); + Comment + +" +`; + +exports[`getPageText > removedTags > /markdown.html 2`] = ` +"Content Example +Headings +Heading 1 +Heading 2 +Heading 3 +Heading 4 +Heading 5 +Heading 6 +Heading with markdown and html +Text +This sentence has bold、italic and style text. +Paragraph +This is a paragraph. +This is another paragraph. +Line Break +I would like to line break at +this point +::: tip +In codes above, two spaces are behind at. +::: +Blockquotes + +Blockquotes can also be nested... + +...by using greater-than signs right next to each other... + +...or with spaces between arrows. + + + +List +Unordered List + +Ordered List + +HR + +Link + +Image +Logo +logo +A inline image relative, image with absolute link and a image with full url. +Emoji +Classic: +😉 😢 😆 😋 +Tables + +Codes +Inline Code: inline code +Block code: +Syntax highlighting: + Comment + +" +`; + +exports[`getPageText > removedTags > /separator.html 1`] = ` +"Here is article excerpt. +const a = 1; + +Content +Here is main content of article. + +A +B +C + +const a = 1; +" +`; + +exports[`getPageText > removedTags > /separator.html 2`] = ` +"Here is article excerpt. + +Content +Here is main content of article. + +" +`; + +exports[`getPageText > singleLine > / 1`] = `"Homepage Content "`; + +exports[`getPageText > singleLine > /component.html 1`] = `"A text with "`; + +exports[`getPageText > singleLine > /custom-separator.html 1`] = `"Here is article excerpt. END_OF_EXCERPT Content Here is main content of article. A B C "`; + +exports[`getPageText > singleLine > /long-content.html 1`] = `"Lorem ipsum dolor sit amet consectetur adipisicing elit. Nemo, rem. Recusandae itaque rem, non perspiciatis magnam molestiae, in ab quae, dolore illo neque possimus nisi inventore? Laudantium officia nihil iusto! Quod delectus vero dicta perferendis quia sint incidunt vitae pariatur, nemo suscipit saepe veritatis laudantium deleniti aperiam! Explicabo dignissimos, corporis, odio voluptatum eius aut pariatur dicta inventore, amet optio modi! Eligendi voluptatum animi aspernatur rerum hic quasi neque doloribus mollitia quaerat. Id blanditiis, nostrum autem sequi vero praesentium magnam totam in sit animi velit, veritatis hic natus? Quidem, distinctio provident! Nemo distinctio numquam reprehenderit sed alias perspiciatis autem quasi qui culpa ducimus dolorum mollitia beatae aperiam quisquam necessitatibus neque voluptatum sapiente, quidem explicabo voluptate debitis laborum delectus. Hic, ipsam non? Vitae saepe repellat, laboriosam ipsam numquam cumque, eaque perferendis quibusdam dolorem blanditiis, architecto velit molestiae. Earum ea cupiditate excepturi incidunt sequi ducimus ullam architecto, tempora, iure molestias in repellendus hic. Vero ducimus minima vitae voluptas in magnam fuga ipsa a debitis alias porro non earum veniam laudantium ipsam perferendis itaque, voluptatum amet provident. Deleniti voluptatem sit numquam ducimus quam cupiditate! Molestias cum, rerum perferendis at voluptatibus est assumenda. Soluta saepe corrupti sunt fugit laboriosam possimus labore nemo nisi veritatis neque minima qui, molestiae esse commodi sit iure voluptatem voluptatum quibusdam. Asperiores fuga magnam explicabo sed quae laboriosam ullam aut harum laborum accusantium totam reprehenderit voluptatibus, vel facere, inventore soluta consectetur sint? Maxime nobis dicta a quos, voluptate quidem odit quo? Eos magni ullam aperiam provident ab repellat sunt accusantium recusandae quisquam modi quasi quaerat et, officiis quis dolorem optio minima? Dicta aut dolorem eius, aliquid maiores labore! Officiis, tempore similique. Ex quo in nulla molestias doloribus odio dolorem illum aperiam error iste! Facilis quae consequatur praesentium unde. Rerum, et, doloribus eveniet cum sequi autem illo est quibusdam laborum aperiam nostrum. Eius ratione fuga dolorum aut totam molestias commodi ea sed odio possimus, fugiat perspiciatis perferendis omnis autem deserunt. Id veniam rem voluptatum non molestiae adipisci, impedit cupiditate eos exercitationem nisi. Ab nam veniam corrupti aperiam cupiditate. Ex totam, cumque dignissimos dicta nemo veritatis facilis dolor minus consequatur et quo odio quibusdam consequuntur dolorum esse consectetur dolorem velit, perferendis deserunt perspiciatis! Repellendus in labore sed nobis esse aut nam, neque incidunt asperiores natus fuga, reprehenderit porro ad, atque nemo dicta autem impedit iste totam quae minus? Ullam nesciunt iste voluptatum deserunt? Corporis numquam itaque quibusdam eos quas tempore dolorem, impedit laboriosam sequi, possimus sint, voluptatum ab dolor unde! Harum illo, sed, adipisci iusto saepe provident, pariatur labore obcaecati dolorem velit nostrum. Rerum minima eius hic, vel iure ipsa natus facilis necessitatibus dolores optio enim quod obcaecati neque doloribus sapiente atque repellendus. Amet eligendi libero illo? Earum aliquam molestiae tempora placeat delectus! Dolores eum hic accusantium aliquam maxime deleniti non, voluptas aut cupiditate omnis veritatis dolorem, voluptatem nisi vero odio quidem sapiente animi! Nihil repudiandae, excepturi totam cupiditate blanditiis porro delectus quidem. Iste ipsum qui, nostrum recusandae, maiores, at cum odio labore cupiditate numquam id animi iure? Quam sequi laborum vero magnam excepturi, mollitia ex nobis fuga sed, vel veniam molestiae hic? Iste temporibus voluptate magni voluptates inventore deserunt magnam laboriosam rerum exercitationem maxime, minus sed accusamus sint perspiciatis quaerat, ipsa facilis ipsum? Commodi incidunt nam doloremque blanditiis neque minima beatae aliquam. Veniam voluptate exercitationem voluptas blanditiis aliquam id non fugiat amet, esse iusto dolorem deserunt maxime libero, similique ducimus, reiciendis adipisci ad culpa! Unde corporis, magnam quo iusto blanditiis ex voluptatibus. Ipsum quam accusamus atque itaque reiciendis obcaecati nemo quas architecto, suscipit, dolores a quasi illo at deserunt voluptas nesciunt. Odio sapiente dolores beatae et labore dicta aspernatur molestiae velit rerum? Laborum vel vitae dignissimos enim amet quas eveniet aliquid earum numquam itaque possimus, est corrupti quidem quam natus nostrum neque repellat quis ratione corporis officiis minus expedita dicta voluptate! Quibusdam! Qui minima provident dignissimos corrupti facilis modi saepe esse praesentium itaque molestiae aut, ea, earum, iure facere quis eaque alias! Voluptas in minima voluptate quos facilis perspiciatis expedita accusamus sequi! Amet, sed qui eius delectus blanditiis possimus fugit et nulla doloribus, tempore beatae autem tenetur deserunt eveniet vero dolore sit ipsa minus magnam itaque aliquid labore, illo reprehenderit dolores! Sunt. Commodi aliquam consectetur saepe quis laboriosam, debitis optio tempora eius sed error ad officiis. Cupiditate enim amet laborum quaerat eaque. Fugit ab ipsam similique tempore nesciunt accusantium explicabo repudiandae harum? Autem atque laudantium mollitia voluptates eum corporis repudiandae debitis dicta cumque asperiores repellat accusamus sit esse, dolor, inventore libero minima tempora delectus eligendi quas sint! Odit eos ipsa accusamus ducimus. Dicta natus facere, cum eveniet explicabo nobis, pariatur beatae quae ab temporibus maiores rem eaque. Quisquam itaque saepe sequi, voluptatem quibusdam, minima ea deleniti quos vel modi est. Modi, maxime? Optio perspiciatis rerum iusto expedita esse magnam pariatur quo repellendus sint tenetur veniam illo alias quae ratione aliquid ab natus enim laboriosam veritatis qui possimus, quos dolorum officia quas? Quasi. Consectetur, incidunt praesentium laborum consequatur magnam, accusantium reprehenderit sequi explicabo nam numquam iusto veniam ducimus temporibus molestiae ab nisi quis dolores quam unde repellat sunt, beatae quidem? Doloremque, vero minima? Illo reiciendis veritatis rem adipisci dolores quasi dignissimos quisquam, eligendi sint facilis est perspiciatis velit totam in praesentium ipsum! Accusamus dignissimos minima fuga laudantium pariatur voluptate dolores veniam deserunt beatae? Id, molestiae. Excepturi ad quaerat quam sit consequuntur dolores, a doloribus eaque et harum nulla illo alias beatae, temporibus non maiores quo! Numquam aliquid, enim quas possimus ab exercitationem accusamus. Ab voluptates consequatur dolore aperiam, eum doloremque voluptatum dicta ipsum eos ea exercitationem. Soluta nobis sunt reiciendis consequuntur vero nesciunt suscipit quos maiores saepe, commodi doloremque, culpa rerum perferendis esse. Quasi saepe sed repellendus. Fugiat voluptatem aspernatur nobis? Officiis necessitatibus veniam esse provident voluptatum alias quas consequuntur corporis aliquam doloribus eveniet autem, sit, quo dolorum voluptate vel porro quae quibusdam. Aliquid illo maiores vel cumque eos iure explicabo quae molestiae exercitationem dolores quia voluptate, similique consequatur necessitatibus pariatur quas labore rerum consectetur eum totam dignissimos quaerat. Perferendis dicta facere saepe. Nam molestias vel natus eaque, sunt itaque ratione maxime libero fuga fugit minus quidem velit assumenda, rem expedita impedit a in! Cumque perferendis est velit quo ullam fugit corrupti pariatur! Eaque at cumque dolores culpa autem officiis architecto voluptas qui mollitia, nam repellat quis fuga consequuntur? Dolore optio nesciunt error perspiciatis. Praesentium nisi, fugiat adipisci suscipit reprehenderit ullam quia deleniti. Iusto illo in voluptatum, reprehenderit atque hic inventore asperiores facere enim minima mollitia praesentium assumenda incidunt obcaecati. Delectus neque soluta, ullam nemo corrupti dicta sint explicabo nesciunt tempora, unde pariatur. Suscipit, placeat, cum veniam recusandae ab dolor corporis laboriosam voluptate consequatur nihil deleniti quae soluta assumenda quam cumque aliquam, possimus expedita explicabo eligendi consequuntur accusantium enim! Maxime rem est ex! Error ipsam dolorem temporibus, esse suscipit eveniet recusandae hic rem corporis excepturi laboriosam est nostrum? Illum distinctio laboriosam et, itaque temporibus maxime culpa aliquid iure ipsam? Commodi, aliquid quasi. Quod! Ullam ratione tempora molestias unde, ut, dolor sint tenetur magni amet sunt, nihil corporis voluptatum fuga sapiente soluta maxime voluptas fugiat recusandae assumenda nobis quam maiores veniam cupiditate. Officia, sapiente. Beatae alias repellendus nostrum sequi porro. Fugit cupiditate aperiam quos ratione dicta eligendi deserunt quisquam iste minima, unde natus dolorum vero. Consequatur similique quasi tenetur. Nisi illo vitae aperiam ipsam? Praesentium, quidem accusamus doloribus exercitationem adipisci rem soluta asperiores quis corrupti pariatur? Incidunt architecto tempora similique repellat ratione voluptatibus magnam, odit harum maxime exercitationem reprehenderit repudiandae in facilis obcaecati velit. Minus, rerum, inventore dolorem illo dolor tenetur molestiae sit quae sapiente officia, maxime voluptatum consequuntur ullam. Temporibus voluptates ipsa facere, optio odit saepe nihil repellendus ad reprehenderit expedita consequuntur nam! Aut corrupti eligendi rem repudiandae cum similique officia ea illum beatae. Maiores, explicabo, voluptatum accusamus excepturi incidunt velit dolorem eligendi distinctio a nemo similique perspiciatis blanditiis dolores voluptates commodi porro? Quis nulla minima corporis eligendi earum voluptas ipsam accusantium. Nesciunt corrupti numquam ex omnis fuga natus sint, delectus molestias eaque dolor ea porro autem velit, voluptate pariatur exercitationem modi explicabo. Corporis vero quisquam id mollitia deleniti minus aut libero sint iure sapiente magni nemo laboriosam, voluptatem totam optio nostrum labore tenetur, a nesciunt! Quis impedit harum velit, minima quae maiores. Cum sint, rem saepe quam similique sequi veniam nisi labore suscipit dolorem quos impedit alias dolore sit ad incidunt assumenda. Blanditiis sed perspiciatis reiciendis animi ea sunt, at perferendis iusto! Qui voluptas quidem ipsa dolores exercitationem doloremque necessitatibus? Rem nihil deleniti eos, nobis doloremque a voluptatum dignissimos commodi cumque tempora facilis! Illo minima unde beatae dicta nobis ipsa, delectus dolore! Illum quis laboriosam neque odio ad! Facere illo exercitationem quod in vel non magnam incidunt quibusdam culpa, minus pariatur id eaque dolorum, consequatur voluptas harum voluptatibus sunt odit iure atque. Dolorum officiis fugit error laborum. Necessitatibus aliquam reprehenderit aspernatur. Beatae illo est reiciendis. Odit nobis pariatur provident, deleniti expedita magni maxime quaerat dolor omnis enim qui ducimus, fugit consectetur odio? Beatae sunt, quia doloremque nulla animi aperiam facilis blanditiis, non laborum in delectus a ipsa esse ex odio maxime iure, magni excepturi pariatur vero veritatis. Officiis deserunt laboriosam consequuntur recusandae. Content ends. "`; + +exports[`getPageText > singleLine > /markdown.html 1`] = `"Content Example Headings Heading 1 Heading 2 Heading 3 Heading 4 Heading 5 Heading 6 Heading with markdown and html Text This sentence has bold、italic and style text. Paragraph This is a paragraph. This is another paragraph. Line Break I would like to line break at this point ::: tip In codes above, two spaces are behind at. ::: Blockquotes Blockquotes can also be nested... ...by using greater-than signs right next to each other... ...or with spaces between arrows. List Unordered List Create a list by starting a line with - Make sub-lists by indenting 2 spaces: Marker character change forces new list start: Ac tristique libero volutpat at Facilisis in pretium nisl aliquet Nulla volutpat aliquam velit link break New paragraph It’s easy! Ordered List Lorem ipsum dolor sit amet Consectetur adipiscing elit line break line break again Integer molestie lorem at massa HR Link Anchor Image Logo logo A inline image relative, image with absolute link and a image with full url. Emoji Classic: 😉 😢 😆 😋 Tables Codes Inline Code: inline code Block code: Syntax highlighting: Comment "`; + +exports[`getPageText > singleLine > /separator.html 1`] = `"Here is article excerpt. Content Here is main content of article. A B C "`; diff --git a/tools/helper/tests/node/excerpt.spec.ts b/tools/helper/tests/node/excerpt.spec.ts index 430e56f021..ebc68ea6ff 100644 --- a/tools/helper/tests/node/excerpt.spec.ts +++ b/tools/helper/tests/node/excerpt.spec.ts @@ -5,7 +5,7 @@ import { getPageExcerpt } from '../../src/node/page/excerpt.js' import type { PageExcerptOptions } from '../../src/node/page/excerpt.js' import { emptyTheme } from '../__fixtures__/theme/empty.js' -describe('generate page excerpt correctly', async () => { +describe('getPageExcerpt', async () => { const app = createBaseApp({ bundler: {} as any, source: path.resolve(__dirname, '../__fixtures__/src'), diff --git a/tools/helper/tests/node/text.spec.ts b/tools/helper/tests/node/text.spec.ts new file mode 100644 index 0000000000..abc28e452e --- /dev/null +++ b/tools/helper/tests/node/text.spec.ts @@ -0,0 +1,73 @@ +import { describe, expect, it } from 'vitest' +import { createBaseApp } from 'vuepress/core' +import { path } from 'vuepress/utils' +import { getPageText } from '../../src/node/page/text.js' +import type { PageTextOptions } from '../../src/node/page/text.js' +import { emptyTheme } from '../__fixtures__/theme/empty.js' + +describe('getPageText', async () => { + const app = createBaseApp({ + bundler: {} as any, + source: path.resolve(__dirname, '../__fixtures__/src'), + theme: emptyTheme, + }) + + await app.init() + + const getText = (options: PageTextOptions = {}) => + app.pages + .filter(({ path }) => path !== '/404.html') + .map((page) => ({ + path: page.path, + text: getPageText(app, page, options), + })) + + it('default', () => { + getText().forEach(({ text, path }) => { + expect(text.length).toBeGreaterThan(0) + expect(text).toMatchSnapshot(path) + + if (path === '/markdown.html') { + expect(text).not.toContain('console.log(foo(5));') + expect(text).not.toContain('table text') + } + }) + }) + + it('singleLine', () => { + getText({ singleLine: true }).forEach(({ text, path }) => { + expect(text.length).toBeGreaterThan(0) + + expect(text).not.toContain('\n') + expect(text).toMatchSnapshot(path) + }) + }) + + it('removedTags', () => { + getText({ removedTags: [] }).forEach(({ text, path }) => { + expect(text.length).toBeGreaterThan(0) + expect(text).toMatchSnapshot(path) + + if (path === '/markdown.html') { + expect(text).toContain('Create a list') + expect(text).toContain('Integer molestie lorem at massa') + expect(text).toContain('console.log(foo(5));') + expect(text).toContain('table text') + } + }) + + getText({ removedTags: ['table', 'pre', 'ol', 'ul', 'dl'] }).forEach( + ({ text, path }) => { + expect(text.length).toBeGreaterThan(0) + expect(text).toMatchSnapshot(path) + + if (path === '/markdown.html') { + expect(text).not.toContain('Create a list') + expect(text).not.toContain('Integer molestie lorem at massa') + expect(text).not.toContain('console.log(foo(5));') + expect(text).not.toContain('table text') + } + }, + ) + }) +})