diff --git a/package.json b/package.json index e5265af..738c8e9 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ }, "devDependencies": { "@types/chai": "^4.0.4", - "@types/marked": "^0.3.0", "@types/mocha": "^2.2.43", "@types/node": "^8.0.28", "@types/webpack": "^3.0.10", diff --git a/src/lexer/inline-lexer.ts b/src/lexer/inline-lexer.ts new file mode 100644 index 0000000..6d3d8d9 --- /dev/null +++ b/src/lexer/inline-lexer.ts @@ -0,0 +1,18 @@ +import * as marked from 'marked'; +import Lexer from './index'; + +export default class InlineLexer { + private lexer; + private inlineLexer; + + constructor(links: object, options?: LexerOptions) { + let $this = this; + $this.lexer = new Lexer(); + $this.inlineLexer = new marked.InlineLexer(links); + } + + output(source: string): string { + let $this = this; + return $this.inlineLexer.output($this.lexer.lex(source)); + } +}; diff --git a/src/parser/index.ts b/src/parser/index.ts index e0021a2..1023c41 100644 --- a/src/parser/index.ts +++ b/src/parser/index.ts @@ -1,11 +1,17 @@ +import * as marked from 'marked'; import {TokensList} from '../shared/token'; + export default class Parser { - constructor(src: TokensList, options?: ParserOptions) { + private parser; + constructor(src: TokensList, options?: ParserOptions) { + let $this = this; + $this.parser = new marked.Parser(); } - parse(src: TokensList, options?: ParserOptions): string { - return ''; + parse(tokens: TokensList, options?: ParserOptions): string { + let $this = this; + return $this.parser.parse(tokens); } } diff --git a/test/unit/specs/inline-lexer-code.spec.js b/test/unit/specs/inline-lexer-code.spec.js new file mode 100644 index 0000000..85f8a66 --- /dev/null +++ b/test/unit/specs/inline-lexer-code.spec.js @@ -0,0 +1,16 @@ +import _ from 'lodash'; + +import InlineLexer from '@/lexer/inline-lexer'; + +describe('inline-lexer:code', () => { + let inlineLexer; + + before(() => { + }); + + it('should compile inline code blocks', () => { + const mdString = `[This link](http://example.net/) has no title attribute.`; + + + }); +}); diff --git a/test/unit/specs/lexer-code.spec.js b/test/unit/specs/lexer-code.spec.js index 21b5839..781acc2 100644 --- a/test/unit/specs/lexer-code.spec.js +++ b/test/unit/specs/lexer-code.spec.js @@ -30,5 +30,14 @@ describe('lexer:code', () => { expect(_.head(tokens).type).to.eq('code'); }); - // TODO: add ```support``` + it('should be using broken-line block to setup code blocks',()=>{ + const mdString =`\`\`\`\ntell application "Foo"\n\t\tbeep\n\tend tell\n\`\`\`\n`; + + let lexer = new Lexer(); + let tokens = lexer.lex(mdString); + + expect(tokens.length).to.eq(1); + expect(_.head(tokens).type).to.eq('code'); + }); + }); diff --git a/test/unit/specs/marki.spec.js b/test/unit/specs/marki.spec.js deleted file mode 100644 index de899ff..0000000 --- a/test/unit/specs/marki.spec.js +++ /dev/null @@ -1,6 +0,0 @@ -describe('marki', () => { - it('marki e2e simple function', () => { - - }); - -}); diff --git a/test/unit/specs/parser.spec.js b/test/unit/specs/parser.spec.js index 6e66815..59867fd 100644 --- a/test/unit/specs/parser.spec.js +++ b/test/unit/specs/parser.spec.js @@ -1,5 +1,23 @@ +import _ from 'lodash'; +import Lexer from '@/lexer'; +import Parser from '@/parser'; + describe('parser', () => { + let lexer; + let parser; + + before(() => { + let $this = this; + lexer = new Lexer(); + parser = new Parser(); + }); + it('parser base function', () => { + let $this = this; + const mdString = `[This link](http://example.net/) has no title attribute.`; + + let tokens = lexer.lex(mdString); + let ret = parser.parse(tokens); });