PHP and Javascript implementations of a simple markdown parser
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. class UtilsTests extends BaseTest {
  2. test_stripIndent() {
  3. this.assertEqual('', MDUtils.stripIndent(''));
  4. this.assertEqual('', MDUtils.stripIndent(' '));
  5. this.assertEqual('foo', MDUtils.stripIndent('foo'));
  6. this.assertEqual('foo', MDUtils.stripIndent(' foo'));
  7. this.assertEqual('foo', MDUtils.stripIndent(' foo'));
  8. this.assertEqual('foo', MDUtils.stripIndent(' foo'));
  9. this.assertEqual('foo', MDUtils.stripIndent(' foo'));
  10. this.assertEqual(' foo', MDUtils.stripIndent(' foo'));
  11. this.assertEqual('foo', MDUtils.stripIndent('\tfoo'));
  12. this.assertEqual("\tfoo", MDUtils.stripIndent('\t\tfoo'));
  13. this.assertEqual('foo', MDUtils.stripIndent('\t\tfoo', 2));
  14. this.assertEqual('foo', MDUtils.stripIndent(' foo', 2));
  15. }
  16. test_countIndents() {
  17. this.assertEqual(0, MDUtils.countIndents(''));
  18. this.assertEqual(1, MDUtils.countIndents(' '));
  19. this.assertEqual(1, MDUtils.countIndents(' '));
  20. this.assertEqual(0, MDUtils.countIndents('foo'));
  21. this.assertEqual(0, MDUtils.countIndents('foo'));
  22. this.assertEqual(1, MDUtils.countIndents(' foo'));
  23. this.assertEqual(1, MDUtils.countIndents(' foo'));
  24. this.assertEqual(1, MDUtils.countIndents(' foo'));
  25. this.assertEqual(1, MDUtils.countIndents(' foo'));
  26. this.assertEqual(2, MDUtils.countIndents(' foo'));
  27. this.assertEqual(1, MDUtils.countIndents('\tfoo'));
  28. this.assertEqual(2, MDUtils.countIndents('\t\tfoo'));
  29. this.assertEqual(0, MDUtils.countIndents('', true));
  30. this.assertEqual(0, MDUtils.countIndents(' ', true));
  31. this.assertEqual(1, MDUtils.countIndents(' ', true));
  32. this.assertEqual(0, MDUtils.countIndents('foo', true));
  33. this.assertEqual(0, MDUtils.countIndents(' foo', true));
  34. this.assertEqual(0, MDUtils.countIndents(' foo', true));
  35. this.assertEqual(0, MDUtils.countIndents(' foo', true));
  36. this.assertEqual(1, MDUtils.countIndents(' foo', true));
  37. this.assertEqual(1, MDUtils.countIndents(' foo', true));
  38. this.assertEqual(1, MDUtils.countIndents('\tfoo', true));
  39. this.assertEqual(2, MDUtils.countIndents('\t\tfoo', true));
  40. }
  41. test_tokenizeLabel() {
  42. // Escapes are preserved
  43. this.assertEqual([ '[foo]', 'foo' ], MDToken.tokenizeLabel('[foo] bar'));
  44. this.assertEqual([ '[foo\\[]', 'foo\\[' ], MDToken.tokenizeLabel('[foo\\[] bar'));
  45. this.assertEqual([ '[foo\\]]', 'foo\\]' ], MDToken.tokenizeLabel('[foo\\]] bar'));
  46. this.assertEqual([ '[foo[]]', 'foo[]' ], MDToken.tokenizeLabel('[foo[]] bar'));
  47. this.assertEqual([ '[foo\\(]', 'foo\\(' ], MDToken.tokenizeLabel('[foo\\(] bar'));
  48. this.assertEqual([ '[foo\\)]', 'foo\\)' ], MDToken.tokenizeLabel('[foo\\)] bar'));
  49. this.assertEqual([ '[foo()]', 'foo()' ], MDToken.tokenizeLabel('[foo()] bar'));
  50. this.assertEqual(null, MDToken.tokenizeLabel('foo bar'));
  51. this.assertEqual(null, MDToken.tokenizeLabel('[foo\\] bar'));
  52. this.assertEqual(null, MDToken.tokenizeLabel('[foo bar'));
  53. this.assertEqual(null, MDToken.tokenizeLabel('[foo[] bar'));
  54. }
  55. test_tokenizeURL() {
  56. this.assertEqual([ '(page.html)', 'page.html', null ], MDToken.tokenizeURL('(page.html) foo'));
  57. this.assertEqual([ '(page.html "link title")', 'page.html', 'link title' ], MDToken.tokenizeURL('(page.html "link title") foo'));
  58. this.assertEqual([ '(https://example.com/path/page.html?query=foo&bar=baz#fragment)', 'https://example.com/path/page.html?query=foo&bar=baz#fragment', null ], MDToken.tokenizeURL('(https://example.com/path/page.html?query=foo&bar=baz#fragment) foo'));
  59. this.assertEqual(null, MDToken.tokenizeURL('page.html foo'));
  60. this.assertEqual(null, MDToken.tokenizeURL('(page.html foo'));
  61. this.assertEqual(null, MDToken.tokenizeURL('page.html) foo'));
  62. this.assertEqual(null, MDToken.tokenizeURL('(page.html "title) foo'));
  63. this.assertEqual(null, MDToken.tokenizeURL('(page .html) foo'));
  64. this.assertEqual(null, MDToken.tokenizeURL('(user@example.com) foo'));
  65. this.assertEqual(null, MDToken.tokenizeURL('(user@example.com "title") foo'));
  66. }
  67. test_tokenizeEmail() {
  68. this.assertEqual([ '(user@example.com)', 'user@example.com', null ], MDToken.tokenizeEmail('(user@example.com)'));
  69. this.assertEqual([ '(user@example.com "link title")', 'user@example.com', 'link title' ], MDToken.tokenizeEmail('(user@example.com "link title")'));
  70. this.assertEqual(null, MDToken.tokenizeEmail('(https://example.com) foo'));
  71. this.assertEqual(null, MDToken.tokenizeEmail('(https://example.com "link title") foo'));
  72. this.assertEqual(null, MDToken.tokenizeEmail('(user@example.com "link title) foo'));
  73. this.assertEqual(null, MDToken.tokenizeEmail('(user@example.com foo'));
  74. this.assertEqual(null, MDToken.tokenizeEmail('user@example.com) foo'));
  75. }
  76. }