@@ -38,28 +38,30 @@ internal object PaparazziPoet {
38
38
if (functions.count() == 0 ) {
39
39
addEmpty()
40
40
} else {
41
- functions.process { func, preview, previewParam ->
42
- val visibilityCheck = checkVisibility(func, previewParam )
41
+ functions.process { func, previewParam ->
42
+ val visibilityCheck = checkVisibility(func)
43
43
val snapshotName = func.snapshotName(env)
44
44
45
45
when {
46
46
visibilityCheck.isPrivate -> addError(
47
47
visibilityCheck = visibilityCheck,
48
48
function = func,
49
49
snapshotName = snapshotName,
50
- preview = preview,
51
- previewParam = previewParam
50
+ buildErrorMessage = {
51
+ " $it is private. Make it internal or public to generate a snapshot."
52
+ }
52
53
)
53
- previewParam != null -> addProvider(
54
+ previewParam != null -> addError(
55
+ visibilityCheck = visibilityCheck,
54
56
function = func,
55
57
snapshotName = snapshotName,
56
- preview = preview,
57
- previewParam = previewParam
58
+ buildErrorMessage = {
59
+ " $it preview uses PreviewParameters which aren't currently supported."
60
+ }
58
61
)
59
62
else -> addDefault(
60
63
function = func,
61
- snapshotName = snapshotName,
62
- preview = preview
64
+ snapshotName = snapshotName
63
65
)
64
66
}
65
67
}
@@ -76,102 +78,56 @@ internal object PaparazziPoet {
76
78
}
77
79
78
80
private fun Sequence<KSFunctionDeclaration>.process (
79
- block : (KSFunctionDeclaration , PreviewModel , KSValueParameter ? ) -> Unit
81
+ block : (KSFunctionDeclaration , KSValueParameter ? ) -> Unit
80
82
) =
81
83
flatMap { func ->
82
84
val previewParam = func.previewParam()
83
85
func.findDistinctPreviews()
84
- .map { Triple (func, it , previewParam) }
85
- }.forEach { (func, preview, previewParam) ->
86
- block(func, preview, previewParam)
86
+ .map { Pair (func, previewParam) }
87
+ }.forEach { (func, previewParam) ->
88
+ block(func, previewParam)
87
89
}
88
90
89
91
private fun CodeBlock.Builder.addError (
90
92
visibilityCheck : VisibilityCheck ,
91
93
function : KSFunctionDeclaration ,
92
94
snapshotName : String ,
93
- preview : PreviewModel ,
94
- previewParam : KSValueParameter ?
95
+ buildErrorMessage : (String? ) -> String
95
96
) {
96
97
val qualifiedName = if (visibilityCheck.isFunctionPrivate) {
97
98
function.qualifiedName?.asString()
98
99
} else {
99
- previewParam?.previewParamProvider()?.qualifiedName?.asString()
100
+ null
100
101
}
101
102
102
103
addStatement(" %L.PaparazziPreviewData.Error(" , PACKAGE_NAME )
103
104
indent()
104
105
addStatement(" snapshotName = %S," , snapshotName)
105
- addStatement(" message = %S," , " $qualifiedName is private. Make it internal or public to generate a snapshot." )
106
- addPreviewData(preview)
106
+ addStatement(" message = %S," , buildErrorMessage(qualifiedName))
107
107
unindent()
108
108
addStatement(" )," )
109
109
}
110
110
111
111
private fun CodeBlock.Builder.addProvider (
112
112
function : KSFunctionDeclaration ,
113
- snapshotName : String ,
114
- preview : PreviewModel ,
115
- previewParam : KSValueParameter
113
+ snapshotName : String
116
114
) {
117
115
addStatement(" %L.PaparazziPreviewData.Provider(" , PACKAGE_NAME )
118
116
indent()
119
117
addStatement(" snapshotName = %S," , snapshotName)
120
118
addStatement(" composable = { %L(it) }," , function.qualifiedName?.asString())
121
- addPreviewParameterData(previewParam)
122
- addPreviewData(preview)
123
119
unindent()
124
120
addStatement(" )," )
125
121
}
126
122
127
123
private fun CodeBlock.Builder.addDefault (
128
124
function : KSFunctionDeclaration ,
129
- snapshotName : String ,
130
- preview : PreviewModel
125
+ snapshotName : String
131
126
) {
132
127
addStatement(" %L.PaparazziPreviewData.Default(" , PACKAGE_NAME )
133
128
indent()
134
129
addStatement(" snapshotName = %S," , snapshotName)
135
130
addStatement(" composable = { %L() }," , function.qualifiedName?.asString())
136
- addPreviewData(preview)
137
- unindent()
138
- addStatement(" )," )
139
- }
140
-
141
- private fun CodeBlock.Builder.addPreviewData (preview : PreviewModel ) {
142
- addStatement(" preview = %L.PreviewData(" , PACKAGE_NAME )
143
- indent()
144
-
145
- preview.fontScale.takeIf { it != 1f }
146
- ?.let { addStatement(" fontScale = %Lf," , it) }
147
-
148
- preview.device.takeIf { it.isNotEmpty() }
149
- ?.let { addStatement(" device = %S," , it) }
150
-
151
- preview.widthDp.takeIf { it > - 1 }
152
- ?.let { addStatement(" widthDp = %L," , it) }
153
-
154
- preview.heightDp.takeIf { it > - 1 }
155
- ?.let { addStatement(" heightDp = %L," , it) }
156
-
157
- preview.uiMode.takeIf { it != 0 }
158
- ?.let { addStatement(" uiMode = %L," , it) }
159
-
160
- preview.locale.takeIf { it.isNotEmpty() }
161
- ?.let { addStatement(" locale = %S," , it) }
162
-
163
- preview.backgroundColor.takeIf { it != 0L && preview.showBackground }
164
- ?.let { addStatement(" backgroundColor = %S" , it.toString(16 )) }
165
-
166
- unindent()
167
- addStatement(" )," )
168
- }
169
-
170
- private fun CodeBlock.Builder.addPreviewParameterData (previewParam : KSValueParameter ) {
171
- addStatement(" previewParameter = %L.PreviewParameterData(" , PACKAGE_NAME )
172
- indent()
173
- addStatement(" name = %S," , previewParam.name?.asString())
174
- addStatement(" values = %L().values," , previewParam.previewParamProvider().qualifiedName?.asString())
175
131
unindent()
176
132
addStatement(" )," )
177
133
}
@@ -187,17 +143,14 @@ internal object PaparazziPoet {
187
143
}.joinToString(" _" )
188
144
189
145
private fun checkVisibility (
190
- function : KSFunctionDeclaration ,
191
- previewParam : KSValueParameter ?
146
+ function : KSFunctionDeclaration
192
147
) = VisibilityCheck (
193
- isFunctionPrivate = function.getVisibility() == Visibility .PRIVATE ,
194
- isPreviewParamProviderPrivate = previewParam?.previewParamProvider()?.getVisibility() == Visibility .PRIVATE
148
+ isFunctionPrivate = function.getVisibility() == Visibility .PRIVATE
195
149
)
196
150
}
197
151
198
152
internal data class VisibilityCheck (
199
- val isFunctionPrivate : Boolean ,
200
- val isPreviewParamProviderPrivate : Boolean
153
+ val isFunctionPrivate : Boolean
201
154
) {
202
- val isPrivate = isFunctionPrivate || isPreviewParamProviderPrivate
155
+ val isPrivate = isFunctionPrivate
203
156
}
0 commit comments