Optional word-breaks are hard to enter in Neos CMS. This package provides a Fusion wrapper for phpSyllable
composer require carbon/hyphen
Just use the Carbon.Hyphen:Text
Fusion object as a processor or wrapper on the Fusion value that should be hyphenated.
superlongValue = 'supercalifragilisticexpialidocious'
superlongValue.@process.hyphenate = Carbon.Hyphen:Text {
locale = 'en-gb'
}
Similar to text elements you can use Carbon.Hyphen:Html
for HTML elements.
someFusionHtml.@process.hyphenate = Carbon.Hyphen:Html
You can easily activate hyphenation for all Neos CMS text- and headline nodetypes with following Fusion code:
prototype(Foo.Bar:Content.Text) {
renderer.@process.hyphenate = Carbon.Hyphen:Html
}
prototype(Foo.Bar:Content.Headline) {
title.@process.hyphenate = Carbon.Hyphen:Text
}
or directly on a specific parameter:
prototype(Foo.Bar:Component) {
headline = Neos.Neos:Editable {
property = 'headline'
block = false
}
renderer = afx`
<h2>
<Carbon.Hyphen:Text>{props.headline}</Carbon.Hyphen:Text>
</h2>
`
}
locale (string) : Reference to the language in which the given string will be hyphenated
(Have a look at syllable languages for a reference of available languages)
threshold (integer, default = 0
) : Minimum amount characters a word needs to have, before it is being hyphenated.
Probably you've got a language defined that is not available in syllable. For example, en
is not available, but en-gb
is. Because of that, you can map your language preset to another syllable language: Per default following settings are set in Settings.Carbon.yaml:
Carbon:
Hyphen:
# Throw exception if no hyphen definition is found
throwException: true
mapping:
en: en-gb
de-de: de
de-at: de
This implementation was heavily inspired by packagefactory/hyphenate.