From 5909cbca3fe375aeac1e2247b3f8edbaba32e56e Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Tue, 25 May 2010 12:37:20 +0000 Subject: Modified version of Ingo Schwarze's patch for hyphen-breaking. Breakable hyphens are cued in the back-ends (with ASCII_HYPH) and acted upon in term.c or ignored in html.c. Also cleaned up XML decl printing (no need for extra vars). --- mandoc.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'mandoc.c') diff --git a/mandoc.c b/mandoc.c index 3ade0787..f1ac7c9a 100644 --- a/mandoc.c +++ b/mandoc.c @@ -1,4 +1,4 @@ -/* $Id: mandoc.c,v 1.15 2010/05/15 07:01:51 kristaps Exp $ */ +/* $Id: mandoc.c,v 1.16 2010/05/25 12:37:20 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -340,3 +340,31 @@ mandoc_eos(const char *p, size_t sz) return(0); } + + +int +mandoc_hyph(const char *start, const char *c) +{ + + /* + * Choose whether to break at a hyphenated character. We only + * do this if it's free-standing within a word. + */ + + /* Skip first/last character of buffer. */ + if (c == start || '\0' == *(c + 1)) + return(0); + /* Skip first/last character of word. */ + if ('\t' == *(c + 1) || '\t' == *(c - 1)) + return(0); + if (' ' == *(c + 1) || ' ' == *(c - 1)) + return(0); + /* Skip double invocations. */ + if ('-' == *(c + 1) || '-' == *(c - 1)) + return(0); + /* Skip escapes. */ + if ('\\' == *(c - 1)) + return(0); + + return(1); +} -- cgit v1.2.3