PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.6
Independent Analytics – WordPress Analytics Plugin v2.14.6
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / league / csv / src / Info.php
independent-analytics / vendor / league / csv / src Last commit date
Polyfill 10 months ago AbstractCsv.php 10 months ago ByteSequence.php 10 months ago CannotInsertRecord.php 10 months ago CharsetConverter.php 10 months ago ColumnConsistency.php 10 months ago EncloseField.php 10 months ago EscapeFormula.php 10 months ago Exception.php 10 months ago HTMLConverter.php 10 months ago Info.php 10 months ago InvalidArgument.php 10 months ago MapIterator.php 10 months ago RFC4180Field.php 10 months ago Reader.php 10 months ago ResultSet.php 10 months ago Statement.php 10 months ago Stream.php 10 months ago SyntaxError.php 10 months ago TabularDataReader.php 10 months ago UnableToProcessCsv.php 10 months ago UnavailableFeature.php 10 months ago UnavailableStream.php 10 months ago Writer.php 10 months ago XMLConverter.php 10 months ago functions.php 10 months ago functions_include.php 10 months ago
Info.php
76 lines
1 <?php
2
3 /**
4 * League.Csv (https://csv.thephpleague.com)
5 *
6 * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 declare (strict_types=1);
12 namespace IAWPSCOPED\League\Csv;
13
14 use function array_fill_keys;
15 use function array_filter;
16 use function array_reduce;
17 use function array_unique;
18 use function count;
19 use function iterator_to_array;
20 use function strlen;
21 use function strpos;
22 use const COUNT_RECURSIVE;
23 /** @internal */
24 final class Info implements ByteSequence
25 {
26 private const BOM_SEQUENCE_LIST = [self::BOM_UTF32_BE, self::BOM_UTF32_LE, self::BOM_UTF16_BE, self::BOM_UTF16_LE, self::BOM_UTF8];
27 /**
28 * Returns the BOM sequence found at the start of the string.
29 *
30 * If no valid BOM sequence is found an empty string is returned
31 */
32 public static function fetchBOMSequence(string $str) : ?string
33 {
34 foreach (self::BOM_SEQUENCE_LIST as $sequence) {
35 if (0 === strpos($str, $sequence)) {
36 return $sequence;
37 }
38 }
39 return null;
40 }
41 /**
42 * Detect Delimiters usage in a {@link Reader} object.
43 *
44 * Returns a associative array where each key represents
45 * a submitted delimiter and each value the number CSV fields found
46 * when processing at most $limit CSV records with the given delimiter
47 *
48 * @param string[] $delimiters
49 *
50 * @return array<string, int>
51 */
52 public static function getDelimiterStats(Reader $csv, array $delimiters, int $limit = 1) : array
53 {
54 $delimiterFilter = static function (string $value) : bool {
55 return 1 === strlen($value);
56 };
57 $recordFilter = static function (array $record) : bool {
58 return 1 < count($record);
59 };
60 $stmt = Statement::create()->offset(0)->limit($limit);
61 $delimiterStats = static function (array $stats, string $delimiter) use($csv, $stmt, $recordFilter) : array {
62 $csv->setDelimiter($delimiter);
63 $foundRecords = array_filter(iterator_to_array($stmt->process($csv)->getRecords(), \false), $recordFilter);
64 $stats[$delimiter] = count($foundRecords, COUNT_RECURSIVE);
65 return $stats;
66 };
67 $currentDelimiter = $csv->getDelimiter();
68 $currentHeaderOffset = $csv->getHeaderOffset();
69 $csv->setHeaderOffset(null);
70 $stats = array_reduce(array_unique(array_filter($delimiters, $delimiterFilter)), $delimiterStats, array_fill_keys($delimiters, 0));
71 $csv->setHeaderOffset($currentHeaderOffset);
72 $csv->setDelimiter($currentDelimiter);
73 return $stats;
74 }
75 }
76