static function analyze_name_args($args, $ret = null) { $ret = $ret ?: new NameInfo(); $delta = 0; foreach ($args as $i => $v) { if (is_string($v) || is_bool($v)) { if ($i + $delta < 4) { $k = self::$argkeys[$i + $delta]; if (@$ret->{$k} === null) { $ret->{$k} = $v; } } } else { if (is_array($v) && isset($v[0])) { for ($j = 0; $j < 3 && $j < count($v); ++$j) { $k = self::$argkeys[$j]; if (@$ret->{$k} === null) { $ret->{$k} = $v[$j]; } } } else { if (is_array($v)) { foreach ($v as $k => $x) { if (@($mk = self::$mapkeys[$k]) && @$ret->{$mk} === null) { $ret->{$mk} = $x; } } $delta = 3; } else { if (is_object($v)) { foreach (self::$mapkeys as $k => $mk) { if (@$ret->{$mk} === null && @$v->{$k} !== null && (@self::$boolkeys[$mk] ? is_bool($v->{$k}) : is_string($v->{$k}))) { $ret->{$mk} = $v->{$k}; } } } } } } } foreach (self::$defaults as $k => $v) { if (@$ret->{$k} === null) { $ret->{$k} = $v; } } if ($ret->name && $ret->firstName === "" && $ret->lastName === "") { list($ret->firstName, $ret->lastName) = self::split_name($ret->name); } if ($ret->withMiddle && $ret->middleName) { $m = trim($ret->middleName); if ($m) { $ret->firstName = (isset($ret->firstName) ? $ret->firstName : "") . " " . $m; } } if ($ret->lastFirst && ($m = self::analyze_von($ret->lastName))) { $ret->firstName = trim($ret->firstName . " " . $m[0]); $ret->lastName = $m[1]; } if ($ret->lastName === "" || $ret->firstName === "") { $ret->name = $ret->firstName . $ret->lastName; } else { if (@$ret->lastFirst) { $ret->name = $ret->lastName . ", " . $ret->firstName; } else { $ret->name = $ret->firstName . " " . $ret->lastName; } } if ($ret->lastName === "" || $ret->firstName === "") { $x = $ret->firstName . $ret->lastName; } else { $x = $ret->firstName . " " . $ret->lastName; } if (preg_match('/[\\x80-\\xFF]/', $x)) { $x = UnicodeHelper::deaccent($x); } $ret->unaccentedName = $x; return $ret; }
static function abbreviate($name, $id) { $abbr = strtolower(UnicodeHelper::deaccent($name)); $abbr = preg_replace('/[^a-z_0-9]+/', "-", $abbr); $abbr = preg_replace('/^-+|-+$/', "", $abbr); if (preg_match('/\\A(?:|p(?:aper)?\\d*|submission|final|opt\\d*|\\d.*)\\z/', $abbr)) { $abbr = "opt{$id}"; } return $abbr; }
public static function set_sorter($c) { if (opt("sortByLastName")) { if ($m = Text::analyze_von($c->lastName)) { $c->sorter = trim("{$m['1']} {$c->firstName} {$m['0']} {$c->email}"); } else { $c->sorter = trim("{$c->lastName} {$c->firstName} {$c->email}"); } } else { if (isset($c->unaccentedName)) { $c->sorter = trim("{$c->unaccentedName} {$c->email}"); return; } else { $c->sorter = trim("{$c->firstName} {$c->lastName} {$c->email}"); } } if (preg_match('/[\\x80-\\xFF]/', $c->sorter)) { $c->sorter = UnicodeHelper::deaccent($c->sorter); } }
public static function set_sorter($c, $sorttype = null) { $sort_by_last = $sorttype === "last"; if ($c->is_anonymous) { $c->sorter = $c->anon_username; return; } else { if (isset($c->unaccentedName) && $sort_by_last) { $c->sorter = trim("{$c->unaccentedName} {$c->email}"); return; } } list($first, $middle) = Text::split_first_middle($c->firstName); if ($sort_by_last) { if ($m = Text::analyze_von($c->lastName)) { $c->sorter = "{$m['1']} {$first} {$m['0']}"; } else { $c->sorter = "{$c->lastName} {$first}"; } } else { $c->sorter = "{$first} {$c->last}"; } $c->sorter = trim($c->sorter . " " . $c->username . " " . $c->email); if (preg_match('/[\\x80-\\xFF]/', $c->sorter)) { $c->sorter = UnicodeHelper::deaccent($c->sorter); } }
public function pretty_text_title_indent($width = 75) { $n = "Paper #{$this->paperId}: "; $vistitle = UnicodeHelper::deaccent($this->title); $l = (int) (($width + 0.5 - strlen($vistitle) - strlen($n)) / 2); return strlen($n) + max(0, $l); }
function _clauseTermCheckField($t, $row) { $field = $t->link; if (!$this->_clauseTermCheckFlags($t, $row) || $row->{$field} === "") { return false; } $field_deaccent = $field . "_deaccent"; if (!isset($row->{$field_deaccent})) { if (preg_match('/[\\x80-\\xFF]/', $row->{$field})) { $row->{$field_deaccent} = UnicodeHelper::deaccent($row->{$field}); } else { $row->{$field_deaccent} = false; } } if (!isset($t->preg_utf8)) { self::analyze_field_preg($t); } return self::match_field_preg($t, $row->{$field}, $row->{$field_deaccent}); }
xassert_eqq(UnicodeHelper::utf8_prefix("a̓a̓a̓a̓a̓a̓a̓a̓", 7), "a̓a̓a̓a̓a̓a̓a̓"); xassert_eqq(UnicodeHelper::utf8_prefix("a̓a̓a̓a̓a̓a̓a̓a̓", 8), "a̓a̓a̓a̓a̓a̓a̓a̓"); xassert_eqq(UnicodeHelper::utf8_prefix("a̓a̓a̓a̓a̓a̓a̓a̓", 9), "a̓a̓a̓a̓a̓a̓a̓a̓"); xassert_eqq(UnicodeHelper::utf8_word_prefix("aaaaaaaa bbb", 7), "aaaaaaaa"); xassert_eqq(UnicodeHelper::utf8_word_prefix("aaaaaaaa bbb", 8), "aaaaaaaa"); xassert_eqq(UnicodeHelper::utf8_word_prefix("aaaaaaaa bbb", 9), "aaaaaaaa"); xassert_eqq(UnicodeHelper::utf8_word_prefix("aaaaaaaa bbb", 10), "aaaaaaaa"); xassert_eqq(UnicodeHelper::utf8_glyphlen("aaaaaaaa"), 8); xassert_eqq(UnicodeHelper::utf8_glyphlen("áááááááá"), 8); xassert_eqq(UnicodeHelper::utf8_glyphlen("a̓a̓a̓a̓a̓a̓a̓a̓"), 8); xassert_eqq(prefix_word_wrap("+ ", "This is a thing to be wrapped.", "- ", 10), "+ This is\n- a thing\n- to be\n- wrapped.\n"); xassert_eqq(prefix_word_wrap("+ ", "This is a thing to be wrapped.", "- ", 9), "+ This is\n- a thing\n- to be\n- wrapped.\n"); xassert_eqq(prefix_word_wrap("+ ", "This\nis\na thing\nto\nbe wrapped.", "- ", 9), "+ This\n- is\n- a thing\n- to\n- be\n- wrapped.\n"); xassert_eqq(!!preg_match('/\\A\\pZ\\z/u', ' '), true); // deaccent tests xassert_eqq(UnicodeHelper::deaccent("Á é î ç ø U"), "A e i c o U"); $do = UnicodeHelper::deaccent_offsets("Á é î ç ø U .K"); xassert_eqq($do[0], "A e i c o U .K"); xassert_eqq(json_encode($do[1]), "[[0,0],[1,2],[3,5],[5,8],[7,11],[9,14],[14,21]]"); $regex = (object) ["preg_raw" => Text::word_regex("foo"), "preg_utf8" => Text::utf8_word_regex("foo")]; xassert_eqq(Text::highlight("Is foo bar føo bar fóó bar highlit right? foö", $regex), "Is <span class=\"match\">foo</span> bar <span class=\"match\">føo</span> bar <span class=\"match\">fóó</span> bar highlit right? <span class=\"match\">foö</span>"); // Qobject tests $q = new Qobject(["a" => 1, "b" => 2]); xassert_eqq($q->a, 1); xassert_eqq($q->b, 2); xassert_eqq(count($q), 2); xassert_eqq($q->c, null); xassert_eqq(count($q), 2); $q->c = array(); xassert_eqq(count($q), 3); $q->c[] = 1;