You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OK. I know why it happens and it looks like I need to change that…
To fix the issue add a space after the name and hyphenate "Otto " instead of "Otto".
The background is, that the lib was originally intended to hyphenate a complete text at every possible position using the "SimpleFilter" (like "Sau-er-stoff") or to hyphenate a single word using the "NonDefaultFilter" and return all possible options containing one hyphen like ["Sau-erstoff", "Sauer-stoff"]. You want to combine those two and that fails. By adding a space the hyphenator sees this as a complete text and returns the appropriately hyphenated stuff.
I agree that this should be changed. It's rather confusing that the Hyphenator::hyphenate() method sometimes returns an array with hyphenation options instead of a hyphenated string.
Note that this only occurs when you don't use the default filter config, because it adds two filters (one being a basically a no-op (CustomMarkupFilter), that acts only as a prevention for the array return case, I think).
If you just use the SimpleFilter, like @daberlin, and try to hyphenate a single word, you'll always get an array with a single item that matches your input as a result. This is because it's initialized in the constructor (of Token) like this and never changed (because the SimpleFilter only calls Token::setFilteredContent() with the hyphenated string, which is ignored by Hyphenator::hyphenate() in this case.
So to get the hyphenation options for a single word you must use the NonStandardFilter only, which will call Token::setHyphenatedContent() and sets the array with the options.
Expected: "Ot^to"
Actual: "Otto"
use \Org\Heigl\Hyphenator as Hy;
$hy = new Hy\Hyphenator();
$op = new Hy\Options();
$op->setHyphen('^')
->setDefaultLocale('de_DE')
->setRightMin(2)
->setLeftMin(2)
->setWordMin(4)
->setFilters('Simple')
->setTokenizers('Punctuation','Whitespace')
;
$hy->setOptions($op);
var_dump($hy->hyphenate('Otto'));
The text was updated successfully, but these errors were encountered: