parseReturns()   A
last analyzed

Complexity

Conditions 6
Paths 6

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
dl 0
loc 18
c 2
b 0
f 0
rs 9.2222
cc 6
nc 6
nop 1
1
<?php
2
3
function parseParamsFromQuery($query)
4
{
5
    $params = [];
6
    foreach ($query as $param) {
7
        if ($parsedParam = parseParams(pq($param)->text())) {
8
            $params[] = $parsedParam;
9
        }
10
    }
11
    return $params;
12
}
13
14
function clearFolder($folder)
15
{
16
    $files = glob(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . $folder . DIRECTORY_SEPARATOR . '*');
17
    foreach ($files as $file) {
18
        if (is_file($file)) {
19
            @unlink($file);
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition for unlink(). This can introduce security issues, and is generally not recommended. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unhandled  annotation

19
            /** @scrutinizer ignore-unhandled */ @unlink($file);

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
20
        }
21
    }
22
}
23
24
function stripAndWordWrap($str)
25
{
26
    return wordwrap(stripSpaces($str), 180) . "\n";
27
}
28
29
function formParamLine($param)
30
{
31
    return '**' . $param['name'] . "** ({$param['type']}) - " . stripLines($param['description']);
32
}
33
34
function stripSpaces($str)
35
{
36
    $str = preg_replace('/[\s]{2,}/', " ", $str);
37
    return $str;
38
}
39
40
function stripLines($str)
41
{
42
    $str = str_replace("\n", " ", $str);
43
    $str = stripSpaces($str);
44
    return $str;
45
}
46
47
function formMethodName($str)
48
{
49
    $arr = array_filter(explode('_', $str));
50
    $arr = array_map('ucfirst', $arr);
51
    $arr[0] = lcfirst($arr[0]);
52
    return join('', $arr);
53
}
54
55
function formClassName($str, $clear = ['get_', '_array'])
56
{
57
    foreach ($clear as $item) {
58
        $str = str_ireplace($item, '', $str);
59
    }
60
    $arr = array_filter(explode('_', $str));
61
    $arr = array_map('ucfirst', $arr);
62
    return join('', $arr);
63
}
64
65
function formParamType($str)
66
{
67
    switch ($str) {
68
        case 'text':
69
            return 'string';
70
            break;
0 ignored issues
show
Unused Code introduced by
break is not strictly necessary here and could be removed.

The break statement is not necessary if it is preceded for example by a return statement:

switch ($x) {
    case 1:
        return 'foo';
        break; // This break is not necessary and can be left off.
}

If you would like to keep this construct to be consistent with other case statements, you can safely mark this issue as a false-positive.

Loading history...
71
        case 'date':
72
            return 'string Y-m-d';
73
            break;
74
        case 'datetime':
75
            return 'string Y-m-d H:i:s';
76
            break;
77
    }
78
    return $str;
79
}
80
81
function parseParams($str)
82
{
83
84
    $str = trim($str, " \t\n\r\0\x0B");
85
    if (preg_match('/^(\w+)\s?(\*?)\s+\((\w+)\)\s+-\s+(.+)/uis', $str, $m)) {
86
        return [
87
            'name' => $m[1],
88
            'type' => $m[3],
89
            'description' => $m[4],
90
            'required' => $m[2] ? true : (mb_strpos($m[4], 'Необязательный', 0, 'utf-8') === false)
91
        ];
92
    }
93
94
    return [];
95
}
96
97
function parseReturns($tdHtml)
98
{
99
    $uls = pq($tdHtml)->find('ul');
100
    if ($uls->count() == 1 && strpos($tdHtml, 'Каждый элемент') !== false) {
101
        if (preg_match('/<td>(.)+<ul>/s', $tdHtml, $m)) {
102
            $ul = "<ul><li>" . trim(strip_tags($m[0])) . "</li></ul>";
103
            $uls = pq("<td>$ul{$uls->eq(0)->htmlOuter()}</td>")->find('ul');
104
        }
105
    }
106
    $count = $uls->count();
107
    $parsing = parseParamsFromQuery($uls->eq($count == 2 ? 1 : 0)->find('li'));
108
    if ($count == 2) {
109
        $returnParam = parseParams($uls->eq(0)->text());
110
        $returnParam['result'] = $parsing;
111
        return [$returnParam];
112
    }
113
114
    return $parsing;
115
}
116
117
function asTable($array)
118
{
119
    $header = array_shift($array);
120
    $content = "\n\n|" . join("|", $header) . "\n";
121
    $content .= preg_replace('/[^\|]/iu', '-', trim($content)) . "\n";
122
    foreach ($array as $key => $columns) {
123
        $content .= "|" . join("|", $columns) . "\n";
124
    }
125
    return $content;
126
}
127
128
function asHeader($string)
129
{
130
    return "\n\n" . $string . "\n" . str_repeat('=', mb_strlen($string, 'utf-8')) . "\n";
131
}
132
133
function asCode($code)
134
{
135
    return "`$code`";
136
}