Commit Graph

55 Commits

Author SHA1 Message Date
Vytautas Šaltenis 0bf420d72a Fix a couple typos 2015-05-23 09:28:21 +03:00
Vytautas Šaltenis f4655604b3 Cleanup a random bunch of repetitive loops
Replace them with helper function calls.
2015-04-07 21:59:42 +03:00
Vytautas Šaltenis 36787eca3a Allow heading to end with \#
The problem was in a loop that skipped the optional closing hashes in a
heading like this:

    ### This is an H3 ###

Now it checks to see if a hash is escaped and if it is, treats it as a
rightmost character of the heading text, like this:

    ### This is an H3 #\##   ==>   ### This is an H3 ##

Fixes issue #146.
2015-04-07 21:58:29 +03:00
Tw d90024b17b Delete unnecessary copy of input when enable fenced code extension
Copy of input waste time and memory.

Signed-off-by: Tw <tw19881113@gmail.com>
2015-02-11 15:44:24 +08:00
Dmitri Shuralyov 54a323aafb Update import path of sanitized_anchor_name.
It has moved into a smaller standalone repo.
Closes #139.
2015-01-10 18:23:29 -08:00
Dmitri Shuralyov f4bb968b5f Minor cleanup.
Apply gofmt on html.go.
Apply goimports-compatible formatting on block.go (space between standard and third party imports).
Move Travis build status image in a more pleasing, common location.
Remove "Markdown pretty-printer output engine" from TODO steps; this is already done in markdownfmt.
Remove unneeded trailing whitespace in README.
2014-11-29 20:41:11 -08:00
Austin Ziegler 40f28ee022 Prevent generated header collisions, less naively.
> This is a rework of an earlier version of this code.

The automatic header ID generation code submitted in #125 has a subtle
bug where it will use the same ID for multiple headers with identical
text. In the case below, all the headers are rendered a `<h1
id="header">Header</h1>`.

  ```markdown
  # Header
  # Header
  # Header
  # Header
  ```

This change is a simple but robust approach that uses an incrementing
counter and pre-checking to prevent header collision. (The above would
be rendered as `header`, `header-1`, `header-2`, and `header-3`.) In
more complex cases, it will append a new counter suffix (`-1`), like so:

  ```markdown
  # Header
  # Header 1
  # Header
  # Header
  ```

This will generate `header`, `header-1`, `header-1-1`, and `header-1-2`.

This code has two additional changes over the prior version:

1.  Rather than reimplementing @shurcooL’s anchor sanitization code, I
    have imported it as from
    `github.com/shurcooL/go/github_flavored_markdown/sanitized_anchor_name`.

2.  The markdown block parser is now only interested in *generating* a
    sanitized anchor name, not with ensuring its uniqueness. That code
    has been moved to the HTML renderer. This means that if the HTML
    renderer is modified to identify all unique headers prior to
    rendering, the hackish nature of the collision detection can be
    eliminated.
2014-11-23 20:35:43 -05:00
Austin Ziegler a5e88a3350 Add a flag to turn on header ID generation.
- Fixes #51, #101, and #102.
- Uses the [code][gfm] mentioned by @shurcooL from his Github
  Flavored Markdown parser extension in a [comment on #102][comment].
  Since this was mentioned, I assumed that @shurcooL would be OK with
  this being included under the licence provided by blackfriday (there
  is no licence comment on his code).
- I’ve added it behind another flag, EXTENSION_AUTO_HEADER_IDS, that
  would need to be turned on for it to work. It works with both prefix
  and underline headers.

[gfm]: 3bec0366a8/github_flavored_markdown/main.go (L90-L102)
[comment]: https://github.com/russross/blackfriday/issues/102#issuecomment-51272260
2014-10-27 16:54:23 -04:00
Brian Goff 539b27a624 Add titleblock support 2014-08-04 14:08:22 -04:00
Vytautas Šaltenis c5ece173ad Merge pull request #59 from johnsto/master
Header ID specifiers
2014-04-11 21:31:27 +03:00
Mathias Leppich cb288d6b5d Revert "add an infinity-loop detection to block-level parsing"
This reverts commit 0c62e28e90.
2014-04-08 11:51:17 +02:00
Dave Johnston 924064f3f7 Also support header IDs in ## headers ## 2014-04-06 10:30:40 +01:00
Dave Johnston 7ad5f9c119 Correctly emit trailing header ID brace 2014-04-05 20:59:03 +01:00
Dave Johnston 2dff0864f0 Add header ID support and tests: # Header {#myid} 2014-04-05 20:42:58 +01:00
Mathias Leppich cd3fa08cb1 fix issue #45: 'Fenced Code Blocks without a blank line before'
Add missing newline between paragraph and fenced code block within `firstPass()`.
2014-03-30 22:40:43 +02:00
Mathias Leppich 0c62e28e90 add an infinity-loop detection to block-level parsing 2014-03-30 22:40:43 +02:00
David Kitchen 6e6572e913 Added th to table headers so that styling with things like Twitter Bootstrap and typeset.css work as expected. Cells in headers should always be TH unless they are advisory cells within headers in which case TD is acceptable (but being Markdown a user with such needs could just enter HTML for this) 2013-10-16 11:36:33 +01:00
athom 8751c35d1a add EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK flag to make it closer to GFM(Github flavor Markdown) 2013-07-30 10:32:11 +08:00
moshee 8346559a1a Referenced footnotes appear to be functional. Inline still unimplemented. 2013-06-26 16:09:27 +00:00
moshee 7bdb82c53a new tests pass but old tests now fail... 2013-06-26 15:57:51 +00:00
moshee be082a1ef2 First attempt at supporting Pandoc-style footnotes. The existing tests have not broken but the new functionality does not work yet. 2013-06-25 01:18:47 +00:00
Russ Ross b97990f1bb permit backslash-escaped vertical bars in tables 2011-09-13 16:23:24 -06:00
Russ Ross 583b3c5e1d fixed bug with blank line handling within list items 2011-09-09 12:30:45 -06:00
Russ Ross b8bc812a67 table unit tests and fix for a crash uncovered by them 2011-07-25 11:39:02 -06:00
Russ Ross c99557ec28 bug in tables when a row has too few columns 2011-07-25 10:23:31 -06:00
Russ Ross bb8ee591d1 doc improvements, commenting 2011-07-07 11:56:45 -06:00
Russ Ross 2b87b0e786 simplify naming of parsing functions 2011-07-05 14:22:21 -06:00
Russ Ross fb435fe2e3 finished removing redundant end-of-buffer checks in block parsing; code cleanup 2011-07-04 18:56:29 -06:00
Russ Ross bd60e3691b removing more redundant checks, additional cleanup of block parsing 2011-07-01 14:13:26 -06:00
Russ Ross 689f6cb79b more consistent spacing of block-level elements 2011-07-01 11:19:42 -06:00
Russ Ross d4353d99fa remove redundant tests for tab characters in parsing 2011-07-01 10:03:03 -06:00
Russ Ross 7544368fce removing redundant end-of-buffer checks in block parsing 2011-06-29 20:15:58 -06:00
Russ Ross ae9562f685 move whitespace stripping to parser, not renderers 2011-06-29 15:38:35 -06:00
Russ Ross 3c6f18afc7 Renderer is now an interface 2011-06-29 11:13:17 -06:00
Russ Ross f0cd9a420e render -> Parser, made parsing functions methods of *Parser 2011-06-28 18:58:53 -06:00
Russ Ross 55cde00c8a camel case 2011-06-28 16:02:12 -06:00
Russ Ross fde2c60665 version number, few more options for command-line tool 2011-06-28 11:30:10 -06:00
Russ Ross 2a18706ca4 options to supress tab expansion or to expand tabs to 8 spaces instead of 4 2011-06-28 10:58:10 -06:00
Russ Ross 2f839dc39a fenced code: ending marker must match beginning marker, tests for fenced code blocks 2011-06-28 10:30:25 -06:00
Russ Ross f8f70572a4 simplified BSD license 2011-06-27 20:11:32 -06:00
Russ Ross 00cb90e934 horizontal rule and list testing 2011-06-27 16:06:32 -06:00
Russ Ross 9a0217f7aa fixed minor bugs uncovered by more testing 2011-06-27 14:35:11 -06:00
Russ Ross 47c4852520 unit tests for underlined headers, improved whitespace handling for the same 2011-06-27 11:42:38 -06:00
Russ Ross 3af64a90ad fixed headers nested in lists, added prefix header unit tests 2011-06-27 10:13:13 -06:00
Russ Ross e22e43bf76 eliminate a buffering level for paragraphs 2011-06-26 17:21:11 -06:00
Russ Ross 812e8d0185 refactoring paragraph rendering 2011-06-25 15:18:34 -06:00
Russ Ross eff64c563f reduce copying for lists 2011-06-25 15:02:46 -06:00
Russ Ross cf97fbd897 experiment: render headers directly to output buffer to avoid a copy; minor speed boost 2011-06-25 08:20:08 -06:00
Russ Ross 921ac7d0be comments, minor cleanups 2011-05-31 16:28:07 -06:00
Russ Ross b6e6530815 rewrote the stinking pile of code that was blockParagraph 2011-05-31 16:07:15 -06:00