Skip to content

Commit 0e6829c

Browse files
committed
reformat merging.kt
1 parent 5a7df92 commit 0e6829c

File tree

1 file changed

+78
-52
lines changed
  • src/main/kotlin/de/rakhman/webextensions

1 file changed

+78
-52
lines changed

src/main/kotlin/de/rakhman/webextensions/merging.kt

Lines changed: 78 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,52 +6,57 @@ fun merge(list: List<Namespace>): Namespace {
66
val types = mergeTypes(list.flatMap { it.types ?: emptyList() })
77

88
val properties = list
9-
.flatMap { it.properties?.entries ?: emptySet() }
10-
.associate { it.key to it.value.resolve(it.key, types) }
11-
.takeUnless { it.isEmpty() }
9+
.flatMap { it.properties?.entries ?: emptySet() }
10+
.associate { it.key to it.value.resolve(it.key, types) }
11+
.takeUnless { it.isEmpty() }
1212

1313
val functions = list
14-
.flatMap { it.functions?.map { it.resolve(types) } ?: emptyList() }
15-
.takeUnless { it.isEmpty() }
14+
.flatMap { it.functions?.map { it.resolve(types) } ?: emptyList() }
15+
.takeUnless { it.isEmpty() }
1616

1717
val events = list
18-
.flatMap { it.events?.map { it.resolve(types) } ?: emptyList() }
19-
.takeUnless { it.isEmpty() }
18+
.flatMap { it.events?.map { it.resolve(types) } ?: emptyList() }
19+
.takeUnless { it.isEmpty() }
2020

2121
return Namespace(
22-
namespace = list.first().namespace,
23-
description = list.mapNotNull { it.description }.firstOrNull(),
24-
types = types.values.toList().takeUnless { it.isEmpty() },
25-
properties = properties,
26-
functions = functions,
27-
events = events
22+
namespace = list.first().namespace,
23+
description = list.mapNotNull { it.description }.firstOrNull(),
24+
types = types.values.toList().takeUnless { it.isEmpty() },
25+
properties = properties,
26+
functions = functions,
27+
events = events
2828
)
2929
}
3030

3131
private fun mergeTypes(types: List<Type>): MutableMap<String?, Type> {
3232
val result = types
33-
.groupingBy { it.id ?: it.`$extend` }
34-
.reduceTo(mutableMapOf()) { key, left, right ->
35-
Type(
36-
id = key,
37-
description = left.description ?: right.description,
38-
type = left.type ?: right.type,
39-
properties = (left.properties.orEmpty() + right.properties.orEmpty()).takeUnless { it.isEmpty() },
40-
choices = (left.choices.orEmpty() + right.choices.orEmpty()).takeUnless { it.isEmpty() },
41-
`$extend` = null,
42-
actual = false,
43-
items = left.items ?: right.items,
44-
additionalProperties = left.additionalProperties ?: right.additionalProperties,
45-
patternProperties = (left.patternProperties.orEmpty() + right.patternProperties.orEmpty()).takeUnless { it.isEmpty() }
46-
)
47-
}
33+
.groupingBy { it.id ?: it.`$extend` }
34+
.reduceTo(mutableMapOf()) { key, left, right ->
35+
Type(
36+
id = key,
37+
description = left.description ?: right.description,
38+
type = left.type ?: right.type,
39+
properties = (left.properties.orEmpty() + right.properties.orEmpty()).takeUnless { it.isEmpty() },
40+
choices = (left.choices.orEmpty() + right.choices.orEmpty()).takeUnless { it.isEmpty() },
41+
`$extend` = null,
42+
actual = false,
43+
items = left.items ?: right.items,
44+
additionalProperties = left.additionalProperties ?: right.additionalProperties,
45+
patternProperties = (left.patternProperties.orEmpty() + right.patternProperties.orEmpty()).takeUnless { it.isEmpty() }
46+
)
47+
}
4848

4949
for ((key, value) in result.toMap()) {
5050
if (key == null) continue
5151

5252
result[key] = value.copy(
53-
properties = value.properties?.entries?.associate { it.key to it.value.resolve(it.key, result) },
54-
items = value.items?.resolve(key, result)
53+
properties = value.properties?.entries?.associate {
54+
it.key to it.value.resolve(
55+
it.key,
56+
result
57+
)
58+
},
59+
items = value.items?.resolve(key, result)
5560
)
5661
}
5762

@@ -60,30 +65,43 @@ private fun mergeTypes(types: List<Type>): MutableMap<String?, Type> {
6065

6166
private fun Event.resolve(types: MutableMap<String?, Type>): Event {
6267
return copy(
63-
parameters = parameters?.map { it.resolve(it.name!!, types) }
68+
parameters = parameters?.map { it.resolve(it.name!!, types) }
6469
)
6570
}
6671

6772
private fun Function.resolve(types: MutableMap<String?, Type>): Function {
6873
return copy(
69-
parameters = parameters?.map { it.resolve(it.name!!, types, it.name != async, it.name == async) },
70-
returns = returns?.resolve(name + "Result", types)
74+
parameters = parameters?.map {
75+
it.resolve(
76+
it.name!!,
77+
types,
78+
it.name != async,
79+
it.name == async
80+
)
81+
},
82+
returns = returns?.resolve(name + "Result", types)
7183
)
7284
}
7385

7486
private fun Parameter.resolve(
75-
name: String,
76-
types: MutableMap<String?, Type>,
77-
actual: Boolean = false,
78-
isReturn: Boolean = false
87+
name: String,
88+
types: MutableMap<String?, Type>,
89+
actual: Boolean = false,
90+
isReturn: Boolean = false
7991
): Parameter {
80-
if (type == "function") return copy(parameters = parameters?.map { it.resolve(it.name ?: name, types) })
92+
if (type == "function") return copy(parameters = parameters?.map {
93+
it.resolve(
94+
it.name ?: name,
95+
types
96+
)
97+
})
8198
if (type == "array") return copy(items = items?.resolve(name, types, actual))
8299
if (type != "object" &&
83-
choices == null &&
84-
parameters == null &&
85-
additionalProperties == null &&
86-
patternProperties == null) {
100+
choices == null &&
101+
parameters == null &&
102+
additionalProperties == null &&
103+
patternProperties == null
104+
) {
87105
return this
88106
}
89107

@@ -98,31 +116,39 @@ private fun Parameter.resolve(
98116
while (types.containsKey(typeName)) typeName = name.capitalize() + ++counter
99117

100118
if (!isReturn) {
101-
val previous = types.put(typeName, Type(
119+
val previous = types.put(
120+
typeName, Type(
102121
id = typeName,
103122
type = null,
104-
properties = properties?.map { it.key to it.value.resolve(it.key, types, actual) }?.toMap(),
123+
properties = properties?.map {
124+
it.key to it.value.resolve(
125+
it.key,
126+
types,
127+
actual
128+
)
129+
}?.toMap(),
105130
description = description,
106131
`$extend` = null,
107132
choices = null,
108133
actual = actual,
109134
items = null,
110135
additionalProperties = additionalProperties,
111136
patternProperties = patternProperties
112-
))
137+
)
138+
)
113139

114140
require(previous == null) {
115141
"A type with the name $typeName already existed"
116142
}
117143
}
118144

119145
return copy(
120-
type = null,
121-
properties = null,
122-
`$ref` = typeName,
123-
parameters = parameters,
124-
choices = choices,
125-
additionalProperties = null,
126-
patternProperties = null
146+
type = null,
147+
properties = null,
148+
`$ref` = typeName,
149+
parameters = parameters,
150+
choices = choices,
151+
additionalProperties = null,
152+
patternProperties = null
127153
)
128154
}

0 commit comments

Comments
 (0)