diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2010-05-25 12:37:20 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2010-05-25 12:37:20 +0000 |
commit | bd60b6e6dde1b45c862a7cb7092e5a6985629c1f (patch) | |
tree | 1b4eb8fbcedf0b30869618fd4adb0e76fcc58f91 /mandoc.c | |
parent | 67f57cab47c6371e6a42d8d6952b35485c7b0b85 (diff) | |
download | mandoc-bd60b6e6dde1b45c862a7cb7092e5a6985629c1f.tar.gz |
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).
Diffstat (limited to 'mandoc.c')
-rw-r--r-- | mandoc.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -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); +} |