4
4
5
5
namespace TypeLang \PHPDoc \Tag ;
6
6
7
+ use TypeLang \Parser \Exception \ParserExceptionInterface ;
7
8
use TypeLang \Parser \Node \Stmt \TypeStatement ;
8
9
use TypeLang \Parser \ParserInterface as TypesParserInterface ;
9
10
use TypeLang \PHPDoc \Exception \InvalidTagException ;
10
11
use TypeLang \PHPDoc \Parser \Description \DescriptionParserInterface ;
12
+ use TypeLang \PHPDoc \Tag \Content \OptionalTypeParserApplicator ;
13
+ use TypeLang \PHPDoc \Tag \Content \ValueApplicator ;
14
+ use TypeLang \PHPDoc \Tag \Content \OptionalValueApplicator ;
11
15
use TypeLang \PHPDoc \Tag \Content \OptionalVariableNameApplicator ;
12
16
use TypeLang \PHPDoc \Tag \Content \TypeParserApplicator ;
13
17
use TypeLang \PHPDoc \Tag \Content \VariableNameApplicator ;
@@ -67,6 +71,14 @@ public function nextType(string $tag, TypesParserInterface $parser): TypeStateme
67
71
return $ this ->apply (new TypeParserApplicator ($ tag , $ parser ));
68
72
}
69
73
74
+ /**
75
+ * @api
76
+ */
77
+ public function nextOptionalType (TypesParserInterface $ parser ): ?TypeStatement
78
+ {
79
+ return $ this ->apply (new OptionalTypeParserApplicator ($ parser ));
80
+ }
81
+
70
82
/**
71
83
* @api
72
84
* @param non-empty-string $tag
@@ -86,6 +98,32 @@ public function nextOptionalVariable(): ?string
86
98
return $ this ->apply (new OptionalVariableNameApplicator ());
87
99
}
88
100
101
+ /**
102
+ * @template T of non-empty-string
103
+ *
104
+ * @api
105
+ * @param non-empty-string $tag
106
+ * @param T $value
107
+ * @return T
108
+ */
109
+ public function nextValue (string $ tag , string $ value ): string
110
+ {
111
+ return $ this ->apply (new ValueApplicator ($ tag , $ value ));
112
+ }
113
+
114
+ /**
115
+ * @template T of non-empty-string
116
+ *
117
+ * @api
118
+ * @param non-empty-string $tag
119
+ * @param T $value
120
+ * @return T|null
121
+ */
122
+ public function nextOptionalValue (string $ value ): ?string
123
+ {
124
+ return $ this ->apply (new OptionalValueApplicator ($ value ));
125
+ }
126
+
89
127
/**
90
128
* @template T of mixed
91
129
* @param callable(Content):T $applicator
0 commit comments