Skip to content

Commit 7f96693

Browse files
committed
Simplify code by removing OudsComponentTagContentProvider
1 parent 0b3ea71 commit 7f96693

File tree

3 files changed

+107
-141
lines changed

3 files changed

+107
-141
lines changed

dokka-plugin/src/main/java/com/orange/ouds/dokka/OudsComponentDocumentableTransformer.kt

Lines changed: 107 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import org.jetbrains.dokka.model.doc.Cite
3737
import org.jetbrains.dokka.model.doc.CodeBlock
3838
import org.jetbrains.dokka.model.doc.CodeInline
3939
import org.jetbrains.dokka.model.doc.CustomDocTag
40-
import org.jetbrains.dokka.model.doc.CustomTagWrapper
4140
import org.jetbrains.dokka.model.doc.Dd
4241
import org.jetbrains.dokka.model.doc.Description
4342
import org.jetbrains.dokka.model.doc.Dfn
@@ -162,136 +161,143 @@ class OudsComponentDocumentableTransformer(val context: DokkaContext) : Document
162161
val designGuidelinesRegex = "Design guidelines: (.*)".toRegex()
163162

164163
return documentation.mapValues { (_, node) ->
165-
val nodeChildren = node.children.flatMap { tagWrapper ->
164+
val nodeChildren = node.children.map { tagWrapper ->
166165
if (tagWrapper is Description) {
167-
val tagWrapperRoot = tagWrapper.root
168-
.removeDescendant { designVersionRegex.find(it) != null }
169-
.removeDescendant { designGuidelinesRegex.find(it) != null }
170-
171166
val version = designVersionRegex.find(tagWrapper.root)?.groupValues?.getOrNull(1)
172167
val guidelinesBlockquote = tagWrapper.root.firstMemberOfTypeOrNull<BlockQuote> { designGuidelinesRegex.find(it) != null }
173168
val guidelinesAnchor = guidelinesBlockquote?.firstMemberOfTypeOrNull<A>()
174169
val guidelinesText = guidelinesAnchor?.firstMemberOfTypeOrNull<Text>()?.body
175170
val guidelinesHref = guidelinesAnchor?.params["href"]
176-
val designTagWrapper = if (version != null && guidelinesText != null && guidelinesHref != null) {
177-
getDesignTagWrapper(version, guidelinesText, guidelinesHref)
171+
val designDocTag = if (version != null && guidelinesText != null && guidelinesHref != null) {
172+
getDesignDocTag(version, guidelinesText, guidelinesHref)
178173
} else {
179174
null
180175
}
181176

182-
listOfNotNull(tagWrapper.copy(root = tagWrapperRoot), designTagWrapper)
177+
val tagWrapperRoot = tagWrapper.root
178+
.removeDescendant { designVersionRegex.find(it) != null }
179+
.removeDescendant { designGuidelinesRegex.find(it) != null }
180+
.run { if (designDocTag != null) addChild(designDocTag) else this }
181+
182+
tagWrapper.copy(root = tagWrapperRoot)
183183
} else {
184-
listOf(tagWrapper)
184+
tagWrapper
185185
}
186186
}
187187
node.copy(children = nodeChildren)
188188
}
189189
}
190190

191-
private fun getDesignTagWrapper(version: String, guidelinesText: String, guidelinesHref: String): CustomTagWrapper {
191+
private fun getDesignDocTag(version: String, guidelinesText: String, guidelinesHref: String): DocTag {
192192
val guidelinesBody = "<a href=\"$guidelinesHref\" class=\"external\" target=\"_blank\">$guidelinesText</a>"
193193
val guidelinesParams = mapOf("content-type" to "html")
194194

195-
return CustomTagWrapper(
196-
CustomDocTag(
197-
listOf(
198-
Table(
199-
listOf(
200-
Tr(
201-
listOf(
202-
Td(listOf(Text("Guidelines"))),
203-
Td(listOf(Text(guidelinesBody, params = guidelinesParams)))
204-
)
205-
),
206-
Tr(
207-
listOf(
208-
Td(listOf(Text("Version"))),
209-
Td(listOf(Text(version)))
210-
)
195+
return Div(
196+
listOf(
197+
H4(listOf(Text("Design"))),
198+
Table(
199+
listOf(
200+
Tr(
201+
listOf(
202+
Td(listOf(Text("Guidelines"))),
203+
Td(listOf(Text(guidelinesBody, params = guidelinesParams)))
204+
)
205+
),
206+
Tr(
207+
listOf(
208+
Td(listOf(Text("Version"))),
209+
Td(listOf(Text(version)))
211210
)
212211
)
213212
)
214-
),
215-
name = "MARKDOWN_FILE"
216-
),
217-
OudsComponentTagContentProvider.COMPONENT_DESIGN_TAG_NAME
213+
)
214+
)
218215
)
219216
}
220217

221-
private fun DocTag.removeDescendant(predicate: (DocTag) -> Boolean): DocTag {
218+
private fun <T : DocTag> T.addChild(child: DocTag): T {
219+
return genericCopy(children + child)
220+
}
221+
222+
private fun <T : DocTag> T.removeDescendant(predicate: (DocTag) -> Boolean): T {
222223
val filteredChildren = children.filterNot(predicate).map { it.removeDescendant(predicate) }
224+
return genericCopy(filteredChildren)
225+
}
226+
227+
private fun <T : DocTag> T.genericCopy(children: List<DocTag>): T {
228+
@Suppress("UNCHECKED_CAST")
223229
return when (this) {
224-
is A -> copy(children = filteredChildren)
225-
is B -> copy(children = filteredChildren)
226-
is Big -> copy(children = filteredChildren)
227-
is BlockQuote -> copy(children = filteredChildren)
230+
is A -> copy(children = children)
231+
is B -> copy(children = children)
232+
is Big -> copy(children = children)
233+
is BlockQuote -> copy(children = children)
228234
Br -> this
229-
is Caption -> copy(children = filteredChildren)
230-
is Cite -> copy(children = filteredChildren)
231-
is CodeBlock -> copy(children = filteredChildren)
232-
is CodeInline -> copy(children = filteredChildren)
233-
is CustomDocTag -> copy(children = filteredChildren)
234-
is Dd -> copy(children = filteredChildren)
235-
is Dfn -> copy(children = filteredChildren)
236-
is Dir -> copy(children = filteredChildren)
237-
is Div -> copy(children = filteredChildren)
238-
is Dl -> copy(children = filteredChildren)
239-
is DocumentationLink -> copy(children = filteredChildren)
240-
is Dt -> copy(children = filteredChildren)
241-
is Em -> copy(children = filteredChildren)
242-
is Font -> copy(children = filteredChildren)
243-
is Footer -> copy(children = filteredChildren)
244-
is Frame -> copy(children = filteredChildren)
245-
is FrameSet -> copy(children = filteredChildren)
246-
is H1 -> copy(children = filteredChildren)
247-
is H2 -> copy(children = filteredChildren)
248-
is H3 -> copy(children = filteredChildren)
249-
is H4 -> copy(children = filteredChildren)
250-
is H5 -> copy(children = filteredChildren)
251-
is H6 -> copy(children = filteredChildren)
252-
is Head -> copy(children = filteredChildren)
253-
is Header -> copy(children = filteredChildren)
235+
is Caption -> copy(children = children)
236+
is Cite -> copy(children = children)
237+
is CodeBlock -> copy(children = children)
238+
is CodeInline -> copy(children = children)
239+
is CustomDocTag -> copy(children = children)
240+
is Dd -> copy(children = children)
241+
is Dfn -> copy(children = children)
242+
is Dir -> copy(children = children)
243+
is Div -> copy(children = children)
244+
is Dl -> copy(children = children)
245+
is DocumentationLink -> copy(children = children)
246+
is Dt -> copy(children = children)
247+
is Em -> copy(children = children)
248+
is Font -> copy(children = children)
249+
is Footer -> copy(children = children)
250+
is Frame -> copy(children = children)
251+
is FrameSet -> copy(children = children)
252+
is H1 -> copy(children = children)
253+
is H2 -> copy(children = children)
254+
is H3 -> copy(children = children)
255+
is H4 -> copy(children = children)
256+
is H5 -> copy(children = children)
257+
is H6 -> copy(children = children)
258+
is Head -> copy(children = children)
259+
is Header -> copy(children = children)
254260
HorizontalRule -> this
255-
is Html -> copy(children = filteredChildren)
256-
is I -> copy(children = filteredChildren)
257-
is IFrame -> copy(children = filteredChildren)
258-
is Img -> copy(children = filteredChildren)
259-
is Index -> copy(children = filteredChildren)
260-
is Input -> copy(children = filteredChildren)
261-
is Li -> copy(children = filteredChildren)
262-
is Link -> copy(children = filteredChildren)
263-
is Listing -> copy(children = filteredChildren)
264-
is Main -> copy(children = filteredChildren)
265-
is Menu -> copy(children = filteredChildren)
266-
is Meta -> copy(children = filteredChildren)
267-
is Nav -> copy(children = filteredChildren)
268-
is NoFrames -> copy(children = filteredChildren)
269-
is NoScript -> copy(children = filteredChildren)
270-
is Ol -> copy(children = filteredChildren)
271-
is P -> copy(children = filteredChildren)
272-
is Pre -> copy(children = filteredChildren)
273-
is Script -> copy(children = filteredChildren)
274-
is Section -> copy(children = filteredChildren)
275-
is Small -> copy(children = filteredChildren)
276-
is Span -> copy(children = filteredChildren)
277-
is Strikethrough -> copy(children = filteredChildren)
278-
is Strong -> copy(children = filteredChildren)
279-
is Sub -> copy(children = filteredChildren)
280-
is Sup -> copy(children = filteredChildren)
281-
is TBody -> copy(children = filteredChildren)
282-
is TFoot -> copy(children = filteredChildren)
283-
is THead -> copy(children = filteredChildren)
284-
is Table -> copy(children = filteredChildren)
285-
is Td -> copy(children = filteredChildren)
286-
is Text -> copy(children = filteredChildren)
287-
is Th -> copy(children = filteredChildren)
288-
is Title -> copy(children = filteredChildren)
289-
is Tr -> copy(children = filteredChildren)
290-
is Tt -> copy(children = filteredChildren)
291-
is U -> copy(children = filteredChildren)
292-
is Ul -> copy(children = filteredChildren)
293-
is Var -> copy(children = filteredChildren)
294-
}
261+
is Html -> copy(children = children)
262+
is I -> copy(children = children)
263+
is IFrame -> copy(children = children)
264+
is Img -> copy(children = children)
265+
is Index -> copy(children = children)
266+
is Input -> copy(children = children)
267+
is Li -> copy(children = children)
268+
is Link -> copy(children = children)
269+
is Listing -> copy(children = children)
270+
is Main -> copy(children = children)
271+
is Menu -> copy(children = children)
272+
is Meta -> copy(children = children)
273+
is Nav -> copy(children = children)
274+
is NoFrames -> copy(children = children)
275+
is NoScript -> copy(children = children)
276+
is Ol -> copy(children = children)
277+
is P -> copy(children = children)
278+
is Pre -> copy(children = children)
279+
is Script -> copy(children = children)
280+
is Section -> copy(children = children)
281+
is Small -> copy(children = children)
282+
is Span -> copy(children = children)
283+
is Strikethrough -> copy(children = children)
284+
is Strong -> copy(children = children)
285+
is Sub -> copy(children = children)
286+
is Sup -> copy(children = children)
287+
is TBody -> copy(children = children)
288+
is TFoot -> copy(children = children)
289+
is THead -> copy(children = children)
290+
is Table -> copy(children = children)
291+
is Td -> copy(children = children)
292+
is Text -> copy(children = children)
293+
is Th -> copy(children = children)
294+
is Title -> copy(children = children)
295+
is Tr -> copy(children = children)
296+
is Tt -> copy(children = children)
297+
is U -> copy(children = children)
298+
is Ul -> copy(children = children)
299+
is Var -> copy(children = children)
300+
} as T
295301
}
296302

297303
private fun Regex.find(docTag: DocTag, startIndex: Int = 0): MatchResult? {

dokka-plugin/src/main/java/com/orange/ouds/dokka/OudsComponentTagContentProvider.kt

Lines changed: 0 additions & 35 deletions
This file was deleted.

dokka-plugin/src/main/java/com/orange/ouds/dokka/OudsDokkaPlugin.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package com.orange.ouds.dokka
1414

1515
import org.jetbrains.dokka.CoreExtensions
16-
import org.jetbrains.dokka.base.DokkaBase
1716
import org.jetbrains.dokka.plugability.DokkaPlugin
1817
import org.jetbrains.dokka.plugability.DokkaPluginApiPreview
1918
import org.jetbrains.dokka.plugability.PluginApiPreviewAcknowledgement
@@ -26,8 +25,4 @@ class OudsDokkaPlugin : DokkaPlugin() {
2625
val componentDocumentableTransformer by extending {
2726
CoreExtensions.documentableTransformer providing ::OudsComponentDocumentableTransformer
2827
}
29-
30-
val componentTagContentProvider by extending {
31-
plugin<DokkaBase>().customTagContentProvider with OudsComponentTagContentProvider
32-
}
3328
}

0 commit comments

Comments
 (0)