|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581 |
- const { default: getParser } = require('../../lib/parser/index.cjs');
-
- test('fenced description', () => {
- const parsed = getParser({ spacing: 'preserve' })(`
- /**
- * @example "" \`\`\`ts
- @transient()
- class Foo { }
- \`\`\`
- */`);
-
- const source = [
- {
- number: 1,
- source: ' /**',
- tokens: {
- start: ' ',
- delimiter: '/**',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 2,
- source: ' * @example "" ```ts',
- tokens: {
- start: ' ',
- delimiter: '*',
- postDelimiter: ' ',
- tag: '@example',
- postTag: ' ',
- name: '""',
- postName: ' ',
- type: '',
- postType: '',
- description: '```ts',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 3,
- source: '@transient()',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '@transient()',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 4,
- source: 'class Foo { }',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: 'class Foo { }',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 5,
- source: '```',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '```',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 6,
- source: ' */',
- tokens: {
- start: ' ',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '',
- end: '*/',
- lineEnd: '',
- },
- },
- ];
-
- expect(parsed).toEqual([
- {
- description: '',
- tags: [
- {
- tag: 'example',
- name: '',
- type: '',
- optional: false,
- description: '```ts\n@transient()\nclass Foo { }\n```',
- problems: [],
- source: source.slice(1),
- },
- ],
- source,
- problems: [],
- },
- ]);
- });
-
- test('fenced one-liner', () => {
- const parsed = getParser({ spacing: 'preserve' })(
- '/** @example "" ```ts @transient() class Foo { } ```*/'
- );
-
- const source = [
- {
- number: 0,
- source: '/** @example "" ```ts @transient() class Foo { } ```*/',
- tokens: {
- start: '',
- delimiter: '/**',
- postDelimiter: ' ',
- tag: '@example',
- postTag: ' ',
- name: '""',
- postName: ' ',
- type: '',
- postType: '',
- description: '```ts @transient() class Foo { } ```',
- end: '*/',
- lineEnd: '',
- },
- },
- ];
-
- expect(parsed).toEqual([
- {
- description: '',
- tags: [
- {
- tag: 'example',
- name: '',
- type: '',
- optional: false,
- description: '```ts @transient() class Foo { } ```',
- problems: [],
- source,
- },
- ],
- source,
- problems: [],
- },
- ]);
- });
-
- test('multiple fences', () => {
- const parsed = getParser({ spacing: 'preserve' })(`
- /**
- * @example "" \`\`\`ts
- @one
- \`\`\`
- text
- \`\`\`
- @two
- \`\`\`
- */`);
-
- const source = [
- {
- number: 1,
- source: ' /**',
- tokens: {
- start: ' ',
- delimiter: '/**',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 2,
- source: ' * @example "" ```ts',
- tokens: {
- start: ' ',
- delimiter: '*',
- postDelimiter: ' ',
- tag: '@example',
- postTag: ' ',
- name: '""',
- postName: ' ',
- type: '',
- postType: '',
- description: '```ts',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 3,
- source: '@one',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '@one',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 4,
- source: '```',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '```',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 5,
- source: 'text',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: 'text',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 6,
- source: '```',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '```',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 7,
- source: '@two',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '@two',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 8,
- source: '```',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '```',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 9,
- source: ' */',
- tokens: {
- start: ' ',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '',
- end: '*/',
- lineEnd: '',
- },
- },
- ];
-
- expect(parsed).toEqual([
- {
- description: '',
- tags: [
- {
- tag: 'example',
- name: '',
- type: '',
- optional: false,
- description: '```ts\n@one\n```\ntext\n```\n@two\n```',
- source: source.slice(1),
- problems: [],
- },
- ],
- source,
- problems: [],
- },
- ]);
- });
-
- test('custom fences', () => {
- const parsed = getParser({ spacing: 'preserve', fence: '###' })(`
- /**
- * @example "" ###ts
- @one
- ###
- text
- ###
- @two
- ###
- */`);
-
- const source = [
- {
- number: 1,
- source: ' /**',
- tokens: {
- start: ' ',
- delimiter: '/**',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 2,
- source: ' * @example "" ###ts',
- tokens: {
- start: ' ',
- delimiter: '*',
- postDelimiter: ' ',
- tag: '@example',
- postTag: ' ',
- name: '""',
- postName: ' ',
- type: '',
- postType: '',
- description: '###ts',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 3,
- source: '@one',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '@one',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 4,
- source: '###',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '###',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 5,
- source: 'text',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: 'text',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 6,
- source: '###',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '###',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 7,
- source: '@two',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '@two',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 8,
- source: '###',
- tokens: {
- start: '',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '###',
- end: '',
- lineEnd: '',
- },
- },
- {
- number: 9,
- source: ' */',
- tokens: {
- start: ' ',
- delimiter: '',
- postDelimiter: '',
- tag: '',
- postTag: '',
- name: '',
- postName: '',
- type: '',
- postType: '',
- description: '',
- end: '*/',
- lineEnd: '',
- },
- },
- ];
-
- expect(parsed).toEqual([
- {
- description: '',
- tags: [
- {
- tag: 'example',
- name: '',
- type: '',
- optional: false,
- description: '###ts\n@one\n###\ntext\n###\n@two\n###',
- source: source.slice(1),
- problems: [],
- },
- ],
- source,
- problems: [],
- },
- ]);
- });
|