Skip to content

Commit b1fd376

Browse files
committed
Add PHP interface
1 parent 99e6575 commit b1fd376

File tree

3 files changed

+37
-7
lines changed

3 files changed

+37
-7
lines changed

src/codetext/parser/php_parser.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ def get_comment_node(function_node):
4949

5050
@staticmethod
5151
def get_class_list(node):
52-
res = get_node_by_kind(node, ['class_declaration', 'trait_declaration'])
52+
res = get_node_by_kind(node, ['class_declaration',
53+
'trait_declaration',
54+
'interface_declaration'])
5355
return res
5456

5557
@staticmethod

tests/test_parser/test_php.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ def test_get_function_list(self):
2222

2323
function_list = PhpParser.get_function_list(root)
2424

25-
self.assertEqual(len(function_list), 3)
25+
self.assertEqual(len(function_list), 5)
2626

2727
def test_get_class_list(self):
2828
root = self.root_node
2929

3030
class_list = PhpParser.get_class_list(root)
3131

32-
self.assertEqual(len(class_list), 1)
32+
self.assertEqual(len(class_list), 3)
3333

3434
def test_get_docstring(self):
3535
code_sample = """
@@ -104,11 +104,17 @@ def test_metadata_without_return_statement(self):
104104
def test_get_class_metadata(self):
105105
root = self.root_node
106106

107-
classes = list(PhpParser.get_class_list(root))[0]
108-
metadata = PhpParser.get_class_metadata(classes)
107+
_class, interface, trait = list(PhpParser.get_class_list(root))
108+
class_metadata = PhpParser.get_class_metadata(_class)
109109

110-
self.assertEqual(metadata['parameters'], {'AbstractSQLServerDriver': None})
111-
self.assertEqual(metadata['identifier'], 'Driver')
110+
self.assertEqual(class_metadata['parameters'], {'AbstractSQLServerDriver': None})
111+
self.assertEqual(class_metadata['identifier'], 'Driver')
112+
113+
interface_metadata = PhpParser.get_class_metadata(interface)
114+
self.assertEqual(interface_metadata['identifier'], 'MyInterface')
115+
116+
trait_metadata = PhpParser.get_class_metadata(trait)
117+
self.assertEqual(trait_metadata['identifier'], 'MyTrait')
112118

113119

114120
if __name__ == '__main__':

tests/test_parser/test_sample/php_test_sample.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,25 @@ private function getConnectionOptionsDsn(array $connectionOptions): string
8888
return $connectionOptionsDsn;
8989
}
9090
}
91+
92+
interface MyInterface {
93+
public function myMethod() {
94+
// Method implementation
95+
}
96+
97+
}
98+
99+
trait MyTrait {
100+
101+
public function setBackgroundImage(Drawing $objDrawing): self
102+
{
103+
if (!array_key_exists($objDrawing->getType(), Drawing::IMAGE_TYPES_CONVERTION_MAP)) {
104+
throw new PhpSpreadsheetException('Unsupported image type in comment background. Supported types: PNG, JPEG, BMP, GIF.');
105+
}
106+
$this->backgroundImage = $objDrawing;
107+
108+
return $this;
109+
}
110+
111+
}
112+

0 commit comments

Comments
 (0)