Skip to content

Commit

Permalink
refactor: refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
falsandtru committed Aug 18, 2018
1 parent b7b9bd4 commit ee56d7c
Show file tree
Hide file tree
Showing 7 changed files with 16 additions and 8 deletions.
4 changes: 4 additions & 0 deletions markdown.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,10 @@ export namespace MarkdownParser {
Source<'escsource'>,
Parser<Text, []> {
}
export interface AnyLineParser extends
Source<'anyline'>,
Parser<never, []> {
}
export interface EmptyLineParser extends
Source<'emptyline'>,
Parser<never, []> {
Expand Down
1 change: 1 addition & 0 deletions src/parser/block/blockquote.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ describe('Unit: parser/block/blockquote', () => {
assert.deepStrictEqual(inspect(parser('!> \\')), [['<blockquote></blockquote>'], '']);
assert.deepStrictEqual(inspect(parser('!> \\\n')), [['<blockquote></blockquote>'], '']);
assert.deepStrictEqual(inspect(parser('!> a')), [['<blockquote><p>a</p></blockquote>'], '']);
assert.deepStrictEqual(inspect(parser('!> a\n')), [['<blockquote><p>a</p></blockquote>'], '']);
assert.deepStrictEqual(inspect(parser('!> a\\\nb')), [['<blockquote><p>a<br>b</p></blockquote>'], '']);
assert.deepStrictEqual(inspect(parser('!> *a\nb*')), [['<blockquote><p><em>a<span class="linebreak"> <wbr></span>b</em></p></blockquote>'], '']);
assert.deepStrictEqual(inspect(parser('!> *a\n> b*')), [['<blockquote><p><em>a<span class="linebreak"> <wbr></span>b</em></p></blockquote>'], '']);
Expand Down
4 changes: 2 additions & 2 deletions src/parser/block/blockquote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ const mdquote: Parser<HTMLQuoteElement, any> = fmap(build(() =>
indent,
s => mdquote(unindent(s))),
rewrite(
some(line(rewrite(contentline, s => [[s], ''])), opener),
some(contentline, opener),
s => [[parse(unindent(s))], '']),
]))),
ns => [html('blockquote', ns)]);

const indent = block(surround(opener, some(line(rewrite(contentline, s => [[s], ''])), /^>(?:\s|$)/), ''), false);
const indent = block(surround(opener, some(contentline, /^>(?:\s|$)/), ''), false);

function unindent(source: string): string {
return source.replace(/^>(?:$|\s)|^>(?=>*(?:$|\s))/mg, '');
Expand Down
6 changes: 3 additions & 3 deletions src/parser/block/dlist.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { DListParser } from '../block';
import { union, inits, some, fmap, surround, verify, block, line, rewrite, trim, build } from '../../combinator';
import { blankline, contentline } from '../source/line';
import { anyline, contentline } from '../source/line';
import { inblock } from '../inblock';
import { indexer, defineIndex } from './indexer';
import { compress, hasMedia } from '../util';
Expand All @@ -25,13 +25,13 @@ const term: DListParser.TermParser = line(rewrite(contentline, verify(fmap<DList

const desc: DListParser.DescriptionParser = block(fmap<DListParser.DescriptionParser>(build(() =>
rewrite(
surround(/^:(?=\s|$)|/, some(line(union([blankline, contentline])), /^[~:](?:\s|$)/), '', false),
surround(/^:(?=\s|$)|/, some(anyline, /^[~:](?=\s|$)/), '', false),
surround(/^:(?=\s|$)|/, compress(trim(some(union([inblock])))), '', false))),
ns => [html('dd', ns)]
), false);

function fillTrailingDescription(es: HTMLElement[]): HTMLElement[] {
return es[es.length - 1].tagName.toLowerCase() === 'dt'
return es.length > 0 && es[es.length - 1].tagName.toLowerCase() === 'dt'
? concat(es, [html('dd')])
: es;
}
4 changes: 2 additions & 2 deletions src/parser/block/extension/figure.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ExtensionParser } from '../../block';
import { SubParsers } from '../../../combinator/parser';
import { union, sequence, inits, some, bind, match, surround, contract, block, line, rewrite, trim, eval } from '../../../combinator';
import { emptyline, contentline } from '../../source/line';
import { emptyline, blankline, contentline } from '../../source/line';
import { table } from '../table';
import { blockquote } from '../blockquote';
import { pretext, segment_ as seg_pre } from '../pretext';
Expand Down Expand Up @@ -34,7 +34,7 @@ export const segment: FigureParser = block(union([
]),
inits([
emptyline,
union([emptyline, some(contentline, closer(bracket))])
union([blankline, some(contentline, closer(bracket))])
]),
]),
]),
Expand Down
1 change: 1 addition & 0 deletions src/parser/source.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import SourceParser = MarkdownParser.SourceParser;
export import TextParser = SourceParser.TextParser;
export import EscapableSourceParser = SourceParser.EscapableSourceParser;
export import UnescapableSourceParser = SourceParser.UnescapableSourceParser;
export import AnyLineParser = SourceParser.AnyLineParser;
export import EmptyLineParser = SourceParser.EmptyLineParser;
export import BlankLineParser = SourceParser.BlankLineParser;
export import ContentLineParser = SourceParser.ContentLineParser;
Expand Down
4 changes: 3 additions & 1 deletion src/parser/source/line.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { Parser, eval, exec, line, firstline } from '../../combinator';
import { EmptyLineParser, BlankLineParser, ContentLineParser } from '../source';
import { AnyLineParser, EmptyLineParser, BlankLineParser, ContentLineParser } from '../source';

export const anyline: AnyLineParser = line(takeLine(_ => [[], '']), false);
export const emptyline: EmptyLineParser = line(takeLine(s => s.trim() === '' ? [[], ''] : undefined), false);

const invisible = /^(?:\\?[^\S\\]+)*\\?$/;
export const blankline: BlankLineParser = line(takeLine(s => s.search(invisible) === 0 ? [[], ''] : undefined), false);
export const contentline: ContentLineParser = line(takeLine(s => s.search(invisible) !== 0 ? [[], ''] : undefined), false);
Expand Down

0 comments on commit ee56d7c

Please sign in to comment.