parseReturns()   A
last analyzed

Complexity

Conditions 6
Paths 6

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 6
eloc 12
nc 6
nop 1
dl 0
loc 18
rs 9.2222
c 1
b 0
f 0
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'] . '** - ' . 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 implode('', $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 implode('', $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
        case 'string':
78
            return 'string';
79
            break;
80
        case 'int':
81
            return 'int';
82
            break;
83
    }
84
    return $str;
85
}
86
87
function isRequired($text)
88
{
89
    return mb_strpos($text, 'Необязательный', 0, 'utf-8') === false;
90
}
91
92
function parseParams($str)
93
{
94
    if (preg_match('/^(\w+)\s+\((\w+)\)\s+-\s+(.+)/uis', $str, $m)) {
95
        return [
96
            'name' => $m[1],
97
            'type' => $m[2],
98
            'description' => $m[3],
99
            'required' => isRequired($m[3])
100
        ];
101
    }
102
103
    return [];
104
}
105
106
function parseReturns($tdHtml)
107
{
108
    $uls = pq($tdHtml)->find('ul');
109
    if ($uls->count() == 1 && strpos($tdHtml, 'Каждый элемент') !== false) {
0 ignored issues
show
introduced by
The condition $uls->count() == 1 is always false.
Loading history...
110
        if (preg_match('/<td>(.)+<ul>/s', $tdHtml, $m)) {
111
            $ul = "<ul><li>" . trim(strip_tags($m[0])) . "</li></ul>";
112
            $uls = pq("<td>$ul{$uls->eq(0)->htmlOuter()}</td>")->find('ul');
113
        }
114
    }
115
    $count = $uls->count();
116
    $parsing = parseParamsFromQuery($uls->eq($count == 2 ? 1 : 0)->find('li'));
0 ignored issues
show
introduced by
The condition $count == 2 is always false.
Loading history...
117
    if ($count == 2) {
0 ignored issues
show
introduced by
The condition $count == 2 is always false.
Loading history...
118
        $returnParam = parseParams($uls->eq(0)->text());
119
        $returnParam['result'] = $parsing;
120
        return [$returnParam];
121
    }
122
123
    return $parsing;
124
}
125
126
function asTable($array)
127
{
128
    $header = array_shift($array);
129
    $content = "\n\n|" . implode('|', $header) . "\n";
130
    $content .= preg_replace('/[^\|]/iu', '-', trim($content)) . "\n";
131
    foreach ($array as $key => $columns) {
132
        $content .= '|' . implode('|', $columns) . "\n";
133
    }
134
    return $content;
135
}
136
137
function asHeader($string, $sub = 1)
138
{
139
    return "\n\n" . str_repeat('#', $sub) . ' ' . $string . "\n\n";
140
}
141
142
function asCode($code)
143
{
144
    return "`$code`";
145
}