return $date->format(DATE_FORMAT);
}
+function ssort($comparitor) {
+ return function($array) use ($comparitor) {
+ uasort($array, uncurry($comparitor));
+ return $array;
+ };
+}
+
+function uncurry($f) {
+ return function($a, $b) use ($f) {
+ return $f($a)($b);
+ };
+}
+
const sendToGroupChat = 'sendToGroupChat';
function sendToGroupChat(string $message) {
return getTelegram()->sendMessage(['chat_id' => CHAT_ID, 'text' => $message]);
return $message['due']->diff(new DateTimeImmutable)->d == REMIND_THRESHOLD;
}
+const unlines = 'unlines';
+function unlines($lines) {
+ return implode("\n", $lines);
+}
+
+function field($field) {
+ return function($array) use ($field) {
+ return $array[$field];
+ };
+}
+
+const ⬄ = '⬄';
+function ⬄($a) {
+ return function($b) use ($a) {
+ return $a <=> $b;
+ };
+}
+
function ∘(...$fs) {
return function($arg) use ($fs) {
};
}
+function aaray_column($column) {
+ return function($array) use ($column) {
+ return array_column($array, $column);
+ };
+}
+
+function aaray_slice($start) {
+ return function($length) use ($start) {
+ return function($array) use ($length, $start) {
+ return array_slice($array, $start, $length);
+ };
+ };
+}
+
function filter($callable) {
return function($list) use ($callable) {
return array_filter($list, $callable);
};
}
+function f∘(callable $f) {
+ return function(callable $g) use ($f) {
+ return function($arg) use($g, $f) {
+ return $f($g($arg));
+ };
+ };
+}
+
+function ∘f(callable $f) {
+ return function(callable $g) use ($f) {
+ return function($arg) use($g, $f) {
+ return $g($f($arg));
+ };
+ };
+}
+
function ∪($a, $b) {
return array_merge($a, $b);
}
protected $description = 'Search through the movie collection';
public function handle($arguments) {
- $results = array_map(
- function($moviename) use ($arguments) {
- similar_text($arguments, substr($moviename, 0, -7) ?: '', $perc);
- return ['title' => $moviename, 'similarity' => $perc];
- },
- scandir('/mnt/media/Movies')
+ $top5 = ∘(unlines, aaray_column('title'), aaray_slice(0)(5), 'array_reverse', 'array_values', ssort(∘(∘f(field('similarity')), ⬄, field('similarity'))));
+ $movies = map(function($movie) use ($arguments) {
+ similar_text($arguments, substr($movie, 0, -7) ?: '', $perc);
+ return ['title' => $movie, 'similarity' => $perc];
+ })(scandir('/mnt/media/Movies'));
+
+ $this->replyWithMessage(
+ [
+ 'text' => "Here are the most similar movies titles I could find...\n\n" . $top5($movies)
+ ]
);
-
- uasort($results, function($a, $b) {
- return $b['similarity'] <=> $a['similarity'];
- });
-
- $results = array_column(array_slice(array_values($results), 0, 5), 'title');
- $this->replyWithMessage(['text' => "Here are the most similar movies titles I could find...\n\n" . implode("\n", $results)]);
}
}
);