From 83eb91e026235b0e5d3b611fa276a05ac0a80f07 Mon Sep 17 00:00:00 2001 From: Cameron Ball Date: Thu, 6 Dec 2018 11:04:48 +0800 Subject: [PATCH] Make the transform functions nicer in rules.php --- common.php | 12 ++++++++++++ rules.php | 12 +++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/common.php b/common.php index 6b80309..996c1aa 100644 --- a/common.php +++ b/common.php @@ -99,6 +99,18 @@ function messageNeedsReminder($message) { return $message['due']->diff(new DateTimeImmutable)->d == REMIND_THRESHOLD; } +const lines = 'lines'; +function lines(string $string): array { + return explode("\n", $string); +} + +const glue = 'join'; +function glue(string $delim): callable { + return function(array $strings) use ($delim): string { + return implode($delim, $strings); + }; +} + const unlines = 'unlines'; function unlines($lines) { return implode("\n", $lines); diff --git a/rules.php b/rules.php index 807e1f9..7630bd4 100644 --- a/rules.php +++ b/rules.php @@ -8,9 +8,7 @@ return [ 'Water' => [ 'imapQuery' => 'FROM "@watercorporation.com.au"', 'regex' => '/Due date:.*?(?\d{1,2}\/\d{2}\/\d{4}).*?Amount to pay:.*\$(?[0-9]+(\.[0-9]{2})?)/', - 'messageTransform' => function($message) { - return implode(" ", array_map('trim', explode("\n", strip_tags(base64_decode($message))))); - }, + 'messageTransform' => ∘(glue(" "), map('trim'), lines, 'strip_tags', 'base64_decode'), 'dateTransform' => function($date) { return str_replace('/', '-', $date); } @@ -18,15 +16,11 @@ return [ 'Internet' => [ 'imapQuery' => 'FROM "@online.telstra.com"', 'regex' => '/Total \$(?[0-9]+(\.[0-9]{2})?).*?Due Date (?\d{1,2} \w{3} \d{4})/', - 'messageTransform' => function($message) { - return implode(" ", array_map('trim', explode("\n", strip_tags(html_entity_decode($message))))); - } + 'messageTransform' => ∘(glue(" "), map('trim'), lines, 'strip_tags', 'html_entity_decode') ], 'Gas' => [ 'imapQuery' => 'FROM "@energy.agl.com.au"', 'regex' => '/Direct Debit amount: \$(?[0-9]+(\.[0-9]{2})?).*?Direct Debit date: (?\d{1,2} \w{3} \d+)/', - 'messageTransform' => function($message) { - return implode(" ", array_map('trim', explode("\n", $message))); - } + 'messageTransform' => ∘(glue(" "), map('trim'), lines) ] ]; -- 2.11.0