This repository was archived by the owner on Jan 29, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathAbstractGenerator.php
108 lines (91 loc) · 2.48 KB
/
AbstractGenerator.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\Code\Generator;
use Traversable;
use function get_class;
use function gettype;
use function is_array;
use function is_object;
use function method_exists;
use function sprintf;
abstract class AbstractGenerator implements GeneratorInterface
{
/**
* Line feed to use in place of EOL
*/
const LINE_FEED = "\n";
/**
* @var bool
*/
protected $isSourceDirty = true;
/**
* @var int|string 4 spaces by default
*/
protected $indentation = ' ';
/**
* @var string
*/
protected $sourceContent;
/**
* @param array $options
*/
public function __construct($options = [])
{
if ($options) {
$this->setOptions($options);
}
}
public function setSourceDirty(bool $isSourceDirty = true) : self
{
$this->isSourceDirty = $isSourceDirty;
return $this;
}
public function isSourceDirty() : bool
{
return $this->isSourceDirty;
}
public function setIndentation(string $indentation) : self
{
$this->indentation = $indentation;
return $this;
}
public function getIndentation() : string
{
return $this->indentation;
}
public function setSourceContent(?string $sourceContent) : self
{
$this->sourceContent = $sourceContent;
return $this;
}
public function getSourceContent() : ?string
{
return $this->sourceContent;
}
/**
* @throws Exception\InvalidArgumentException
*/
public function setOptions(iterable $options) : self
{
if (! is_array($options) && ! $options instanceof Traversable) {
throw new Exception\InvalidArgumentException(sprintf(
'%s expects an array or Traversable object; received "%s"',
__METHOD__,
is_object($options) ? get_class($options) : gettype($options)
));
}
foreach ($options as $optionName => $optionValue) {
$methodName = 'set' . $optionName;
if (method_exists($this, $methodName)) {
$this->{$methodName}($optionValue);
}
}
return $this;
}
}