• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jojo1981 / data-resolver / 170

pending completion
170

cron

travis-ci-com

jojo1981
Fix error: `Argument 1 passed to Jojo1981\DataResolver\Resolver\Context::pushPathPart() must be of the type string, int given, called in...`

1 of 1 new or added line in 1 file covered. (100.0%)

454 of 868 relevant lines covered (52.3%)

5.52 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Factory/ExtractorBuilderFactory.php
1
<?php declare(strict_types=1);
2
/*
3
 * This file is part of the jojo1981/data-resolver package
4
 *
5
 * Copyright (c) 2019 Joost Nijhuis <jnijhuis81@gmail.com>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed in the root of the source code
9
 */
10
namespace Jojo1981\DataResolver\Factory;
11

12
use Jojo1981\DataResolver\Builder\Extractor\AllExtractorBuilder;
13
use Jojo1981\DataResolver\Builder\Extractor\CallbackExtractorBuilder;
14
use Jojo1981\DataResolver\Builder\Extractor\CompositeExtractorBuilder;
15
use Jojo1981\DataResolver\Builder\Extractor\CountExtractorBuilder;
16
use Jojo1981\DataResolver\Builder\Extractor\FilterExtractorBuilder;
17
use Jojo1981\DataResolver\Builder\Extractor\FindExtractorBuilder;
18
use Jojo1981\DataResolver\Builder\Extractor\FlattenExtractorBuilder;
19
use Jojo1981\DataResolver\Builder\Extractor\HasPropertyExtractorBuilder;
20
use Jojo1981\DataResolver\Builder\Extractor\NoneExtractorBuilder;
21
use Jojo1981\DataResolver\Builder\Extractor\PropertyExtractorBuilder;
22
use Jojo1981\DataResolver\Builder\Extractor\ResolverExtractorBuilder;
23
use Jojo1981\DataResolver\Builder\Extractor\SomeExtractorBuilder;
24
use Jojo1981\DataResolver\Builder\Extractor\StringLengthExtractorBuilder;
25
use Jojo1981\DataResolver\Builder\Extractor\SumExtractorBuilder;
26
use Jojo1981\DataResolver\Builder\ExtractorBuilderInterface;
27
use Jojo1981\DataResolver\Builder\PredicateBuilderInterface;
28
use Jojo1981\DataResolver\Builder\ResolverBuilder;
29
use Jojo1981\DataResolver\Handler\MergeHandlerInterface;
30
use Jojo1981\DataResolver\Handler\PropertyHandlerInterface;
31
use Jojo1981\DataResolver\Handler\SequenceHandlerInterface;
32
use Jojo1981\DataResolver\NamingStrategy\NamingStrategyInterface;
33
use function array_merge;
34

35
/**
36
 * @internal
37
 * @package Jojo1981\DataResolver\Factory
38
 */
39
final class ExtractorBuilderFactory
40
{
41
    /** @var NamingStrategyInterface */
42
    private NamingStrategyInterface $namingStrategy;
43

44
    /** @var PropertyHandlerInterface */
45
    private PropertyHandlerInterface $propertyHandler;
46

47
    /** @var SequenceHandlerInterface */
48
    private SequenceHandlerInterface $sequenceHandler;
49

50
    /** @var MergeHandlerInterface */
51
    private MergeHandlerInterface $mergeHandler;
52

53
    /**
54
     * @param NamingStrategyInterface $namingStrategy
55
     * @param PropertyHandlerInterface $propertyHandler
56
     * @param SequenceHandlerInterface $sequenceHandler
57
     * @param MergeHandlerInterface $mergeHandler
58
     */
59
    public function __construct(
60
        NamingStrategyInterface $namingStrategy,
61
        PropertyHandlerInterface $propertyHandler,
62
        SequenceHandlerInterface $sequenceHandler,
63
        MergeHandlerInterface $mergeHandler
64
    ) {
65
        $this->namingStrategy = $namingStrategy;
×
66
        $this->propertyHandler = $propertyHandler;
×
67
        $this->sequenceHandler = $sequenceHandler;
×
68
        $this->mergeHandler = $mergeHandler;
×
69
    }
70

71
    /**
72
     * @param PredicateBuilderInterface $predicateBuilder
73
     * @return FilterExtractorBuilder
74
     */
75
    public function getFilterExtractorBuilder(PredicateBuilderInterface $predicateBuilder): FilterExtractorBuilder
76
    {
77
        return new FilterExtractorBuilder($this->sequenceHandler, $predicateBuilder->build());
×
78
    }
79

80
    /**
81
     * @param PredicateBuilderInterface $predicateBuilder
82
     * @return FindExtractorBuilder
83
     */
84
    public function getFindExtractorBuilder(PredicateBuilderInterface $predicateBuilder): FindExtractorBuilder
85
    {
86
        return new FindExtractorBuilder($this->sequenceHandler, $predicateBuilder->build());
×
87
    }
88

89
    /**
90
     * @param ExtractorBuilderInterface $extractorBuilder
91
     * @return FlattenExtractorBuilder
92
     */
93
    public function getFlattenExtractorBuilder(ExtractorBuilderInterface $extractorBuilder): FlattenExtractorBuilder
94
    {
95
        return new FlattenExtractorBuilder($this->sequenceHandler, $extractorBuilder->build());
×
96
    }
97

98
    /**
99
     * @param PredicateBuilderInterface $predicateBuilder
100
     * @return AllExtractorBuilder
101
     */
102
    public function getAllExtractorBuilder(PredicateBuilderInterface $predicateBuilder): AllExtractorBuilder
103
    {
104
        return new AllExtractorBuilder($this->sequenceHandler, $predicateBuilder->build());
×
105
    }
106

107
    /**
108
     * @param PredicateBuilderInterface $predicateBuilder
109
     * @return NoneExtractorBuilder
110
     */
111
    public function getNoneExtractorBuilder(PredicateBuilderInterface $predicateBuilder): NoneExtractorBuilder
112
    {
113
        return new NoneExtractorBuilder($this->sequenceHandler, $predicateBuilder->build());
×
114
    }
115

116
    /**
117
     * @param PredicateBuilderInterface $predicateBuilder
118
     * @return SomeExtractorBuilder
119
     */
120
    public function getSomeExtractorBuilder(PredicateBuilderInterface $predicateBuilder): SomeExtractorBuilder
121
    {
122
        return new SomeExtractorBuilder($this->sequenceHandler, $predicateBuilder->build());
×
123
    }
124

125
    /**
126
     * @return CountExtractorBuilder
127
     */
128
    public function getCountExtractorBuilder(): CountExtractorBuilder
129
    {
130
        return new CountExtractorBuilder($this->sequenceHandler);
×
131
    }
132

133
    /**
134
     * @param callable $callback
135
     * @return CallbackExtractorBuilder
136
     */
137
    public function getCallbackExtractorBuilder(callable $callback): CallbackExtractorBuilder
138
    {
139
        return new CallbackExtractorBuilder($callback);
×
140
    }
141

142
    /**
143
     * @return SumExtractorBuilder
144
     */
145
    public function getSumExtractorBuilder(): SumExtractorBuilder
146
    {
147
        return new SumExtractorBuilder($this->sequenceHandler);
×
148
    }
149

150
    /**
151
     * @param string $propertyName
152
     * @param string ...$propertyNames
153
     * @return PropertyExtractorBuilder
154
     */
155
    public function getPropertyExtractorBuilder(
156
        string $propertyName,
157
        string ...$propertyNames
158
    ): PropertyExtractorBuilder {
159
        return new PropertyExtractorBuilder(
×
160
            $this->namingStrategy,
×
161
            $this->propertyHandler,
×
162
            $this->mergeHandler,
×
163
            array_merge([$propertyName], $propertyNames)
×
164
        );
×
165
    }
166

167
    /**
168
     * @return StringLengthExtractorBuilder
169
     */
170
    public function getStringLengthExtractorBuilder(): StringLengthExtractorBuilder
171
    {
172
        return new StringLengthExtractorBuilder();
×
173
    }
174

175
    /**
176
     * @param string $propertyName
177
     * @return HasPropertyExtractorBuilder
178
     */
179
    public function getHasPropertyExtractorBuilder(string $propertyName): HasPropertyExtractorBuilder
180
    {
181
        return new HasPropertyExtractorBuilder($this->propertyHandler, $this->namingStrategy, $propertyName);
×
182
    }
183

184
    /**
185
     * @param ResolverBuilder $resolverBuilder
186
     * @return ResolverExtractorBuilder
187
     */
188
    public function getResolverExtractorBuilder(ResolverBuilder $resolverBuilder): ResolverExtractorBuilder
189
    {
190
        return new ResolverExtractorBuilder($resolverBuilder->build());
×
191
    }
192

193
    /**
194
     * @param ExtractorBuilderInterface $extractorBuilder1
195
     * @param ExtractorBuilderInterface $extractorBuilder2
196
     * @return CompositeExtractorBuilder
197
     */
198
    public function getCompositeExtractorBuilder(
199
        ExtractorBuilderInterface $extractorBuilder1,
200
        ExtractorBuilderInterface $extractorBuilder2
201
    ): CompositeExtractorBuilder {
202
        return new CompositeExtractorBuilder($extractorBuilder1->build(), $extractorBuilder2->build());
×
203
    }
204
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc