Skip to content
This repository was archived by the owner on Oct 14, 2021. It is now read-only.

Commit 9dbd895

Browse files
author
Mark Wei
committed
Remove 'abstract' modifier from methods in interfaces and annotations.
Summary: All methods in interfaces and annotations are abstract by definition, so it's not useful to show. Related to #9 Sample output: ## StringRemixMethod *new* annotation: `@StringRemixMethod` *new* method: `String defaultValue()` *new* method: `String key()` *new* method: `int layoutId()` *new* method: `String title()` Reviewers: O2 Material Motion, featherless Reviewed By: O2 Material Motion, featherless Subscribers: featherless Tags: #material_motion Differential Revision: http://codereview.cc/D1515
1 parent b4231cf commit 9dbd895

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

java/markdowndiff.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,25 +73,35 @@ def _symbols_for_klass(file):
7373
'''
7474

7575
symbols = {} # { SymbolId: Definition, ... }
76-
klass = None
76+
77+
klass_symbol_id = None
78+
klass_definition = None
79+
7780
with open(file) as f:
7881
lines = f.readlines()
7982
for index, line in enumerate(lines):
8083
if index == len(lines) - 1:
8184
# Class declaration end braces.
8285
continue
8386

87+
isKlass = index == 0
8488
full_definition = line.strip()[:-1].strip()
85-
(kind, signature, short_definition, kind_description) = _parse_full_definition(full_definition)
86-
if index == 0:
87-
# Class declaration.
88-
klass = signature
89+
(kind, signature, short_definition, kind_description) = _parse_full_definition(full_definition, klass_symbol_id, klass_definition)
8990

90-
symbols[SymbolId(klass, kind, signature)] = Definition(full_definition, short_definition, kind_description)
91+
klass_signature = signature if isKlass else klass_symbol_id.signature
92+
93+
symbol_id = SymbolId(klass_signature, kind, signature)
94+
definition = Definition(full_definition, short_definition, kind_description)
95+
symbols[symbol_id] = definition
96+
97+
if isKlass:
98+
# Class declaration.
99+
klass_symbol_id = symbol_id
100+
klass_definition = definition
91101
return symbols
92102

93103

94-
def _parse_full_definition(full_definition):
104+
def _parse_full_definition(full_definition, klass_symbol_id, klass_definition):
95105
'''Parses a symbol's full definition string and returns the (kind, signature, short_definition).'''
96106

97107
visibility = '(?:public\s+|protected\s+|private\s+)?'
@@ -144,6 +154,8 @@ def _parse_full_definition(full_definition):
144154
short_definition = '%s%s%s' % (type_param, return_type, name_and_params)
145155

146156
modifier = match.group(1)
157+
if klass_definition.kind_description in ('interface', 'annotation'):
158+
modifier = re.sub('abstract\s+', '', modifier)
147159
kind_description = '%s%s' % (modifier, kind_description)
148160

149161
return (Kind.METHOD, signature, short_definition, kind_description)

0 commit comments

Comments
 (0)