1 | <?php |
||
2 | |||
3 | namespace SCI\Bibtex; |
||
4 | |||
5 | use SMW\ParserParameterProcessor; |
||
0 ignored issues
–
show
|
|||
6 | |||
7 | /** |
||
8 | * @license GNU GPL v2+ |
||
9 | * @since 1.0 |
||
10 | */ |
||
11 | class BibtexProcessor { |
||
12 | |||
13 | /** |
||
14 | * @var BibtexParser |
||
15 | */ |
||
16 | private $bibtexParser; |
||
17 | |||
18 | /** |
||
19 | * @var BibtexAuthorListParser |
||
20 | */ |
||
21 | private $bibtexAuthorListParser; |
||
22 | |||
23 | /** |
||
24 | * @since 1.0 |
||
25 | * |
||
26 | * @param BibtexParser $bibtexParser |
||
27 | * @param BibtexAuthorListParser $bibtexAuthorListParser |
||
28 | */ |
||
29 | 19 | public function __construct( BibtexParser $bibtexParser, BibtexAuthorListParser $bibtexAuthorListParser ) { |
|
30 | 19 | $this->bibtexParser = $bibtexParser; |
|
31 | 19 | $this->bibtexAuthorListParser = $bibtexAuthorListParser; |
|
32 | 19 | } |
|
33 | |||
34 | /** |
||
35 | * @since 1.0 |
||
36 | * |
||
37 | * @param ParserParameterProcessor $parserParameterProcessor |
||
38 | */ |
||
39 | 5 | public function doProcess( ParserParameterProcessor $parserParameterProcessor ) { |
|
40 | |||
41 | 5 | $bibtex = $this->doPreprocess( |
|
42 | 5 | $parserParameterProcessor->getParameterValuesFor( 'bibtex' ) |
|
43 | ); |
||
44 | |||
45 | 5 | $parameters = $this->bibtexParser->parse( $bibtex ); |
|
46 | |||
47 | 5 | foreach ( $parameters as $key => $value ) { |
|
48 | |||
49 | // The explicit parameters precedes the one found in bibtex |
||
50 | 5 | if ( $key === 'reference' && ( $parserParameterProcessor->hasParameter( 'reference' ) || $parserParameterProcessor->getFirstParameter() !== '' ) ) { |
|
51 | 2 | continue; |
|
52 | } |
||
53 | |||
54 | 4 | if ( $key === 'type' && $parserParameterProcessor->hasParameter( 'type' ) ) { |
|
55 | 2 | continue; |
|
56 | } |
||
57 | |||
58 | 3 | if ( $key === 'author' ) { |
|
59 | |||
60 | 2 | $parserParameterProcessor->setParameter( |
|
61 | 2 | $key, |
|
62 | 2 | $this->bibtexAuthorListParser->parse( $value ) |
|
63 | ); |
||
64 | |||
65 | // Add the original value for easier post-processing in a template |
||
66 | // as hidden parameter |
||
67 | 2 | $key = 'bibtex-author'; |
|
68 | } |
||
69 | |||
70 | 3 | $parserParameterProcessor->addParameter( |
|
71 | 3 | $key, |
|
72 | 3 | $value |
|
73 | ); |
||
74 | } |
||
75 | 5 | } |
|
76 | |||
77 | 5 | private function doPreprocess( array $bibtex ) { |
|
78 | |||
79 | 5 | $bibtex = end( $bibtex ); |
|
80 | |||
81 | // Avoid things like {{Stable theories}}" which are not supported in MW |
||
82 | // since the parser replaces it with [[:Template:Stable theories]] |
||
83 | 5 | $this->replace( '{{', "{", $bibtex ); |
|
84 | 5 | $this->replace( '}}', "}", $bibtex ); |
|
85 | |||
86 | 5 | $this->replace( '{\textquotesingle}', "'", $bibtex ); |
|
87 | 5 | $this->replace( '$\upgamma$', "γ", $bibtex ); |
|
88 | |||
89 | 5 | return $bibtex; |
|
90 | } |
||
91 | |||
92 | 5 | private function replace( $search, $with, &$on ) { |
|
93 | 5 | $on = strpos( $on, $search ) !== false ? str_replace( $search, $with, $on ) : $on; |
|
94 | 5 | } |
|
95 | |||
96 | } |
||
97 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths