PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.14.2
GiveWP – Donation Plugin and Fundraising Platform v3.14.2
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / vendor-prefixed / fakerphp / faker / src / Faker / Provider / Text.php
give / vendor / vendor-prefixed / fakerphp / faker / src / Faker / Provider Last commit date
ar_EG 1 year ago ar_JO 1 year ago ar_SA 1 year ago at_AT 1 year ago bg_BG 1 year ago bn_BD 1 year ago cs_CZ 1 year ago da_DK 1 year ago de_AT 1 year ago de_CH 1 year ago de_DE 1 year ago el_CY 1 year ago el_GR 1 year ago en_AU 1 year ago en_CA 1 year ago en_GB 1 year ago en_HK 1 year ago en_IN 1 year ago en_NG 1 year ago en_NZ 1 year ago en_PH 1 year ago en_SG 1 year ago en_UG 1 year ago en_US 1 year ago en_ZA 1 year ago es_AR 1 year ago es_ES 1 year ago es_PE 1 year ago es_VE 1 year ago et_EE 1 year ago fa_IR 1 year ago fi_FI 1 year ago fr_BE 1 year ago fr_CA 1 year ago fr_CH 1 year ago fr_FR 1 year ago he_IL 1 year ago hr_HR 1 year ago hu_HU 1 year ago hy_AM 1 year ago id_ID 1 year ago is_IS 1 year ago it_CH 1 year ago it_IT 1 year ago ja_JP 1 year ago ka_GE 1 year ago kk_KZ 1 year ago ko_KR 1 year ago lt_LT 1 year ago lv_LV 1 year ago me_ME 1 year ago mn_MN 1 year ago ms_MY 1 year ago nb_NO 1 year ago ne_NP 1 year ago nl_BE 1 year ago nl_NL 1 year ago pl_PL 1 year ago pt_BR 1 year ago pt_PT 1 year ago ro_MD 1 year ago ro_RO 1 year ago ru_RU 1 year ago sk_SK 1 year ago sl_SI 1 year ago sr_Cyrl_RS 1 year ago sr_Latn_RS 1 year ago sr_RS 1 year ago sv_SE 1 year ago th_TH 1 year ago tr_TR 1 year ago uk_UA 1 year ago vi_VN 1 year ago zh_CN 1 year ago zh_TW 1 year ago Address.php 1 year ago Barcode.php 1 year ago Base.php 1 year ago Biased.php 1 year ago Color.php 1 year ago Company.php 1 year ago DateTime.php 1 year ago File.php 1 year ago HtmlLorem.php 1 year ago Image.php 1 year ago Internet.php 1 year ago Lorem.php 1 year ago Medical.php 1 year ago Miscellaneous.php 1 year ago Payment.php 1 year ago Person.php 1 year ago PhoneNumber.php 1 year ago Text.php 1 year ago UserAgent.php 1 year ago Uuid.php 1 year ago
Text.php
209 lines
1 <?php
2 /**
3 * @license MIT
4 *
5 * Modified by impress-org on 07-August-2024 using Strauss.
6 * @see https://github.com/BrianHenryIE/strauss
7 */
8
9 namespace Give\Vendors\Faker\Provider;
10
11 abstract class Text extends Base
12 {
13 protected static $baseText = '';
14 protected static $separator = ' ';
15 protected static $separatorLen = 1;
16 protected $explodedText;
17 protected $consecutiveWords = [];
18 protected static $textStartsWithUppercase = true;
19
20 /**
21 * Generate a text string by the Markov chain algorithm.
22 *
23 * Depending on the $maxNbChars, returns a random valid looking text. The algorithm
24 * generates a weighted table with the specified number of words as the index and the
25 * possible following words as the value.
26 *
27 * @example 'Alice, swallowing down her flamingo, and began by taking the little golden key'
28 *
29 * @param int $maxNbChars Maximum number of characters the text should contain (minimum: 10)
30 * @param int $indexSize Determines how many words are considered for the generation of the next word.
31 * The minimum is 1, and it produces a higher level of randomness, although the
32 * generated text usually doesn't make sense. Higher index sizes (up to 5)
33 * produce more correct text, at the price of less randomness.
34 *
35 * @return string
36 */
37 public function realText($maxNbChars = 200, $indexSize = 2)
38 {
39 return $this->realTextBetween((int) round($maxNbChars * 0.8), $maxNbChars, $indexSize);
40 }
41
42 /**
43 * Generate a text string by the Markov chain algorithm.
44 *
45 * Depending on the $maxNbChars, returns a random valid looking text. The algorithm
46 * generates a weighted table with the specified number of words as the index and the
47 * possible following words as the value.
48 *
49 * @example 'Alice, swallowing down her flamingo, and began by taking the little golden key'
50 *
51 * @param int $minNbChars Minimum number of characters the text should contain (maximum: 8)
52 * @param int $maxNbChars Maximum number of characters the text should contain (minimum: 10)
53 * @param int $indexSize Determines how many words are considered for the generation of the next word.
54 * The minimum is 1, and it produces a higher level of randomness, although the
55 * generated text usually doesn't make sense. Higher index sizes (up to 5)
56 * produce more correct text, at the price of less randomness.
57 *
58 * @return string
59 */
60 public function realTextBetween($minNbChars = 160, $maxNbChars = 200, $indexSize = 2)
61 {
62 if ($minNbChars < 1) {
63 throw new \InvalidArgumentException('minNbChars must be at least 1');
64 }
65
66 if ($maxNbChars < 10) {
67 throw new \InvalidArgumentException('maxNbChars must be at least 10');
68 }
69
70 if ($indexSize < 1) {
71 throw new \InvalidArgumentException('indexSize must be at least 1');
72 }
73
74 if ($indexSize > 5) {
75 throw new \InvalidArgumentException('indexSize must be at most 5');
76 }
77
78 if ($minNbChars >= $maxNbChars) {
79 throw new \InvalidArgumentException('minNbChars must be smaller than maxNbChars');
80 }
81
82 $words = $this->getConsecutiveWords($indexSize);
83 $iterations = 0;
84
85 do {
86 ++$iterations;
87
88 if ($iterations >= 100) {
89 throw new \OverflowException(sprintf('Maximum retries of %d reached without finding a valid real text', $iterations));
90 }
91
92 $result = $this->generateText($maxNbChars, $words);
93 } while (static::strlen($result) <= $minNbChars);
94
95 return $result;
96 }
97
98 /**
99 * @param int $maxNbChars
100 * @param array $words
101 *
102 * @return string
103 */
104 protected function generateText($maxNbChars, $words)
105 {
106 $result = [];
107 $resultLength = 0;
108 // take a random starting point
109 $next = static::randomKey($words);
110
111 while ($resultLength < $maxNbChars && isset($words[$next])) {
112 // fetch a random word to append
113 $word = static::randomElement($words[$next]);
114
115 // calculate next index
116 $currentWords = static::explode($next);
117 $currentWords[] = $word;
118 array_shift($currentWords);
119 $next = static::implode($currentWords);
120
121 // ensure text starts with an uppercase letter
122 if ($resultLength == 0 && !static::validStart($word)) {
123 continue;
124 }
125
126 // append the element
127 $result[] = $word;
128 $resultLength += static::strlen($word) + static::$separatorLen;
129 }
130
131 // remove the element that caused the text to overflow
132 array_pop($result);
133
134 // build result
135 $result = static::implode($result);
136
137 return static::appendEnd($result);
138 }
139
140 protected function getConsecutiveWords($indexSize)
141 {
142 if (!isset($this->consecutiveWords[$indexSize])) {
143 $parts = $this->getExplodedText();
144 $words = [];
145 $index = [];
146
147 for ($i = 0; $i < $indexSize; ++$i) {
148 $index[] = array_shift($parts);
149 }
150
151 for ($i = 0, $count = count($parts); $i < $count; ++$i) {
152 $stringIndex = static::implode($index);
153
154 if (!isset($words[$stringIndex])) {
155 $words[$stringIndex] = [];
156 }
157 $word = $parts[$i];
158 $words[$stringIndex][] = $word;
159 array_shift($index);
160 $index[] = $word;
161 }
162 // cache look up words for performance
163 $this->consecutiveWords[$indexSize] = $words;
164 }
165
166 return $this->consecutiveWords[$indexSize];
167 }
168
169 protected function getExplodedText()
170 {
171 if ($this->explodedText === null) {
172 $this->explodedText = static::explode(preg_replace('/\s+/u', ' ', static::$baseText));
173 }
174
175 return $this->explodedText;
176 }
177
178 protected static function explode($text)
179 {
180 return explode(static::$separator, $text);
181 }
182
183 protected static function implode($words)
184 {
185 return implode(static::$separator, $words);
186 }
187
188 protected static function strlen($text)
189 {
190 return function_exists('mb_strlen') ? mb_strlen($text, 'UTF-8') : strlen($text);
191 }
192
193 protected static function validStart($word)
194 {
195 $isValid = true;
196
197 if (static::$textStartsWithUppercase) {
198 $isValid = preg_match('/^\p{Lu}/u', $word);
199 }
200
201 return $isValid;
202 }
203
204 protected static function appendEnd($text)
205 {
206 return preg_replace("/([ ,-:;\x{2013}\x{2014}]+$)/us", '', $text) . '.';
207 }
208 }
209