diff options
author | Jonas Smedegaard <dr@jones.dk> | 2014-12-31 21:27:23 +0100 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2014-12-31 21:27:23 +0100 |
commit | cfec7bb4177089aeb1b810ee1e6c4bc36091ae39 (patch) | |
tree | 42610430e63a7bbbcd4c56255daed4167ff35ae8 | |
parent | f0ef82f0624c580b4dd652ac2ef89915756bdc0a (diff) |
Rephrase hyphen and quote notes. Refine hyphen/break/range detection. Add list detection.
-rwxr-xr-x | pandoc-todo | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/pandoc-todo b/pandoc-todo index bc0590f..8317048 100755 --- a/pandoc-todo +++ b/pandoc-todo @@ -21,6 +21,8 @@ my $doublequote_chars = qr/[\x{00AB}\x{00BB}\x{201C}-\x{201F}\x{300C}-\x{300F}\x my $singlequote_chars = qr/[\x{0060}\x{2018}\x{2019}\x{201A}\x{201B}\x{2039}\x{203A}\x{FF07}]/; my $odd_singlequote_chars = qr/[\x{2019}]/; +my $inline_count; + pandoc_filter( \&todo, ); @@ -44,16 +46,26 @@ sub mark_inside { sub todo { my $self = shift; + $inline_count = 0 if ( $self->is_block ); return unless ( $self->name eq 'Str' ); given ($self->content) { + $inline_count++; when (/^(-)$/) { - return mark_inside( '', $1, '', 'double dash?' ) }; + return mark_inside( '', $1, '', 'maybe break' ) }; + when (/^(---+)(.+?)$/) { + return mark_inside( '', $1, $2, 'maybe break' ) }; + when (/^(.+?)(--+)(.+?)$/) { + return mark_inside( $1, $2, $3, 'maybe range' ) }; when ( /^(.*?)($hyphen_chars(?:.*$hyphen_chars)?)(.*?)$/ ) { - return mark_inside( $1, $2, $3, 'bad dash/hyphen' ) }; + return mark_inside( $1, $2, $3, 'fancy hyphen' ) }; when ( /^(.*?)($doublequote_chars(?:.*$doublequote_chars)?)(.*?)$/ ) { - return mark_inside( $1, $2, $3, 'bad quote' ) }; + return mark_inside( $1, $2, $3, 'fancy quote' ) }; when ( /^(.*?)($singlequote_chars(?:.*$singlequote_chars)?)(.*?)$/ ) { - return mark_inside( $1, $2, $3, 'Bad quote/apostrophe' ) }; + return mark_inside( $1, $2, $3, 'fancy quote' ) }; + when ( $inline_count == 1 and /^(\(?\d+\)|\d+\.)$/ ) { + return mark_inside( '', $1, '', 'maybe list' ) }; + when ( $inline_count == 1 and /^(\(?[ivxc]+\)|\d+\.[\d.]+)$/ ) { + return mark_inside( '', $1, '', 'maybe fancy list' ) }; default { return }; } }; |