Skip to content

Commit db7c1f1

Browse files
committed
added configure feature
1 parent 6074929 commit db7c1f1

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

src/BlaspExpressionService.php

+11-11
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ abstract class BlaspExpressionService
4747
*
4848
* @var array
4949
*/
50-
protected array $profanityExpressions;
50+
protected array $profanityExpressions = [];
5151

5252
/**
5353
* An array of separator expression profanities
@@ -82,24 +82,22 @@ abstract class BlaspExpressionService
8282
*
8383
* @var array
8484
*/
85-
protected array $falsePositives;
85+
protected array $falsePositives = [];
8686

8787
/**
8888
* @throws Exception
8989
*/
90-
public function __construct(?string $language = null)
90+
public function __construct(?string $language = null, ?array $profanities = null, ?array $falsePositives = null)
9191
{
9292
$this->chosenLanguage = $language;
9393

94-
$this->loadConfiguration();
94+
$this->loadConfiguration($profanities, $falsePositives);
9595

9696
$this->separatorExpression = $this->generateSeparatorExpression();
9797

9898
$this->characterExpressions = $this->generateSubstitutionExpression();
9999

100100
$this->generateProfanityExpressionArray();
101-
102-
$this->generateFalsePositiveExpressionArray();
103101
}
104102

105103
/**
@@ -108,7 +106,7 @@ public function __construct(?string $language = null)
108106
*
109107
* @throws Exception
110108
*/
111-
private function loadConfiguration(): void
109+
private function loadConfiguration(array $profanities = null, array $falsePositives = null): void
112110
{
113111
$this->supportedLanguages = config('blasp.languages');
114112

@@ -117,10 +115,12 @@ private function loadConfiguration(): void
117115
}
118116

119117
$this->validateChosenLanguage();
120-
121-
$this->profanities = config('blasp.profanities');
118+
119+
$this->profanities = $profanities ?? config('blasp.profanities');
122120
$this->separators = config('blasp.separators');
123121
$this->substitutions = config('blasp.substitutions');
122+
123+
$this->generateFalsePositiveExpressionArray($falsePositives);
124124
}
125125

126126
/**
@@ -211,9 +211,9 @@ private function generateProfanityExpression($profanity): string
211211
*
212212
* @return void
213213
*/
214-
private function generateFalsePositiveExpressionArray(): void
214+
private function generateFalsePositiveExpressionArray(array $falsePositives = null): void
215215
{
216-
$this->falsePositives = array_map('strtolower', config('blasp.false_positives'));
216+
$this->falsePositives = array_map('strtolower', $falsePositives ?? config('blasp.false_positives'));
217217
}
218218

219219
/**

src/BlaspService.php

+16-2
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,29 @@ class BlaspService extends BlaspExpressionService
7070
* Initialise the class and parent class.
7171
*
7272
*/
73-
public function __construct(?string $language = null)
73+
public function __construct(?string $language = null, ?array $profanities = null, ?array $falsePositives = null)
7474
{
75-
parent::__construct($language);
75+
parent::__construct($language, $profanities, $falsePositives);
7676

7777
$this->profanityDetector = new ProfanityDetector($this->profanityExpressions, $this->falsePositives);
7878

7979
$this->stringNormalizer = Normalize::getLanguageNormalizerInstance($this->chosenLanguage);
8080
}
8181

82+
/**
83+
* Configure the profanities and false positives.
84+
*
85+
* @param array|null $profanities
86+
* @param array|null $falsePositives
87+
* @return self
88+
*/
89+
public function configure(?array $profanities = null, ?array $falsePositives = null): self
90+
{
91+
$blasp = new BlaspService(null, $profanities, $falsePositives);
92+
93+
return $blasp;
94+
}
95+
8296
/**
8397
* @param string $string
8498
* @return $this

0 commit comments

Comments
 (0)