Safe Haskell | None |
---|---|
Language | Haskell98 |
This is the hyphentation module for Hakyll static site generator which can be used to produce nicer text columns aligned to both left and right side, just like in printed papers. To archive this, it injects invisible soft hyphenation character (U+00AD) into each word at every allowed position. This character means that the position it occured in is eligible for line break. All modern browsers will interpret these characters correctly: they'll be shown only in case when line break actually occured, otherwise leaving them invisible.
Here is simple usage pattern for producing hyphenated texts, for example, English and Russian:
import Hakyll.Contrib.Hyphenation (hyphenateHtml, english_US, russian) match "posts/*" $ do route $ setExtension "html" compile $ pandocCompiler >>= hyphenateHtml english_US >>= hyphenateHtml russian >>= loadAndApplyTemplate "..." ctx >>= relativizeUrls
Of course, this approach has its downsides you must be aware of, so use it with caution. Some of these downsides:
- generated HTML code will slightly increase in size;
- soft hyphens will remain in text copied and pasted;
- the text may be displayed in a wrong way in some rare situations (for example, in old Unicode-unaware browsers).
Taking these into account, you may better prefer to try CSS3 “hypens” property instead, or not to use text hyphenation at all.
- module Text.Hyphenation.Language
- hyphen :: String
- hyphenateText :: Hyphenator -> String -> String
- hyphenateHtmlText :: Hyphenator -> String -> String
- hyphenateHtml :: Hyphenator -> Item String -> Compiler (Item String)
Documentation
module Text.Hyphenation.Language
Soft-hyphen character. This character indicates positions where word line can be safely broken and normally displayed only if word break occured otherwise being invisible.
hyphenateText :: Hyphenator -> String -> String Source
Hyphenate every word of text.
This function takes a hyphenator (usually a language definition from package
hyphenation, for example
english_US
) and input string, then returns a new string with soft-hyphens
inserted into each word. It does not preserve whitespaces and instead merges
any number of consequent whitespaces into a single whitespace.
hyphenateHtmlText :: Hyphenator -> String -> String Source
Hyphenate every word of HTML-formatted text. This function takes a hyphenator and input HTML-formatted string, then returns a new HTML-formatted string with soft-hyphens inserted into each word. It does not try to hyphenate tag names or attributes, or comments, or any other special markup, instead only text content is affected. It does not also preserve original HTML code formatting.
hyphenateHtml :: Hyphenator -> Item String -> Compiler (Item String) Source
Hyphenate HTML body of Hakyll item.
This is the convenience function for using in Hakyll rules as a part of
compilers chain. Takes a hyphenator, then hyphenates item's body and returns
a new item with updated body wrapped into Compiler
monad.