aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandoc.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-05-25 12:37:20 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-05-25 12:37:20 +0000
commit5909cbca3fe375aeac1e2247b3f8edbaba32e56e (patch)
tree22379e2aa842475f26d517eadfe52749991a4340 /mandoc.c
parent2aefdbffeeeeda1b600266dae034d7133292ad46 (diff)
downloadmandoc-5909cbca3fe375aeac1e2247b3f8edbaba32e56e.tar.gz
mandoc-5909cbca3fe375aeac1e2247b3f8edbaba32e56e.tar.zst
mandoc-5909cbca3fe375aeac1e2247b3f8edbaba32e56e.zip
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.c30
1 files changed, 29 insertions, 1 deletions
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 <kristaps@kth.se>
*
@@ -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);
+}