Passed
Pull Request — master (#2)
by Johnny
03:52 queued 02:03
created

Input::original()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
/*
3
 * This file is part of Rivescript-php
4
 *
5
 * (c) Shea Lewis <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace Axiom\Rivescript\Cortex;
12
13
/**
14
 * Input class
15
 *
16
 * The Input class stores information about what
17
 * the user typed to the bot.
18
 *
19
 * PHP version 7.4 and higher.
20
 *
21
 * @category Core
22
 * @package  Cortext
23
 * @author   Shea Lewis <[email protected]>
24
 * @license  https://opensource.org/licenses/MIT MIT
25
 * @link     https://github.com/axiom-labs/rivescript-php
26
 * @since    0.3.0
27
 */
28
class Input
29
{
30
    /**
31
     * The source string.
32
     *
33
     * @var string
34
     */
35
    protected string $source = '';
36
37
    /**
38
     * The original source string.
39
     *
40
     * @var string
41
     */
42
    protected string $original = '';
43
44
    /**
45
     * The user id.
46
     *
47
     * @var string
48
     */
49
    protected string $user = '';
50
51
    /**
52
     * Create a new Input instance.
53
     *
54
     * @param string $source The source string.
55
     * @param string $user   The user identifier.
56
     */
57
    public function __construct(string $source, string $user = '0')
58
    {
59
        $this->original = $source;
60
        $this->user = $user;
61
62
        $this->cleanOriginalSource();
63
    }
64
65
    /**
66
     * Return the original input.
67
     *
68
     * @return string
69
     */
70
    public function original(): string
71
    {
72
        return $this->original;
73
    }
74
75
    /**
76
     * Return the source input.
77
     *
78
     * @return string
79
     */
80
    public function source(): string
81
    {
82
        return $this->source;
83
    }
84
85
    /**
86
     * Return the current user speaking.
87
     *
88
     * @return string
89
     */
90
    public function user(): string
91
    {
92
        return $this->user;
93
    }
94
95
    /**
96
     * Clean the source input, so its in a state easily readable
97
     * by the interpreter.
98
     *
99
     * @return void
100
     */
101
    protected function cleanOriginalSource(): void
102
    {
103
        $patterns = synapse()->memory->substitute()->keys()->all();
104
        $replacements = synapse()->memory->substitute()->values()->all();
105
106
        $this->source = mb_strtolower($this->original);
107
        $this->source = preg_replace($patterns, $replacements, $this->source);
108
        $this->source = preg_replace('/[^\pL\d\s]+/u', '', $this->source);
109
        $this->source = remove_whitespace($this->source);
110
    }
111
}
112