Skip to content

Commit 17e9b61

Browse files
committed
Support multi-line yaml to properties conversion
Closes gh-94
1 parent e9619de commit 17e9b61

File tree

3 files changed

+42
-7
lines changed

3 files changed

+42
-7
lines changed

spring-boot/src/main/java/io/spring/asciidoctor/springboot/YamlToPropertiesConverter.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.function.BiConsumer;
3535
import java.util.regex.Pattern;
3636
import java.util.stream.Collectors;
37+
import java.util.stream.Stream;
3738

3839
import org.yaml.snakeyaml.LoaderOptions;
3940
import org.yaml.snakeyaml.Yaml;
@@ -208,7 +209,7 @@ private List<String> getLines() {
208209
StringWriter writer = new StringWriter();
209210
store(writer, null);
210211
List<String> lines = Arrays.stream(writer.toString().split("\n"))
211-
.map(this::postProcess)
212+
.flatMap(this::postProcess)
212213
.collect(Collectors.toList());
213214
lines.remove(0);
214215
return lines;
@@ -218,29 +219,39 @@ private List<String> getLines() {
218219
}
219220
}
220221

221-
private String postProcess(String line) {
222+
private Stream<String> postProcess(String line) {
222223
int split = line.indexOf('=');
223224
if (split == -1) {
224-
return line;
225+
return Stream.of(line);
225226
}
226227
String name = line.substring(0, split);
227-
String value = line.substring(split);
228+
String value = line.substring(split + 1);
228229
if (name.contains(BLANK_LINE)) {
229-
return "";
230+
return Stream.of("");
230231
}
231232
if (name.contains(COMMENT)) {
232233
try {
233234
Properties properties = new Properties();
234235
properties.load(new ByteArrayInputStream(line.getBytes(StandardCharsets.UTF_8)));
235-
return (String) properties.values().iterator().next();
236+
return Stream.of((String) properties.values().iterator().next());
236237
}
237238
catch (IOException ex) {
238239
throw new IllegalStateException(ex);
239240
}
240241
}
241242
value = value.replace("\\:", ":");
242243
value = value.replace("\\=", "=");
243-
return name + value;
244+
if (!value.contains("\\n")) {
245+
return Stream.of(name + "=" + value);
246+
}
247+
248+
List<String> multilines = new ArrayList<>(Arrays.asList(value.split("\\\\n")));
249+
for (int i = 0; i < multilines.size(); i++) {
250+
boolean last = i == multilines.size() - 1;
251+
multilines.set(i, multilines.get(i) + "\\n" + ((!last) ? "\\" : ""));
252+
}
253+
multilines.add(0, name + "=\\");
254+
return multilines.stream();
244255
}
245256

246257
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
spring.ssl.bundle.pem.mybundle.truststore.certificate=\
2+
-----BEGIN CERTIFICATE-----\n\
3+
MIID1zCCAr+gAwIBAgIUNM5QQv8IzVQsgSmmdPQNaqyzWs4wDQYJKoZIhvcNAQEL\n\
4+
BQAwezELMAkGA1UEBhMCWFgxEjAQBgNVBAgMCVN0YXRlTmFtZTERMA8GA1UEBwwI\n\
5+
...\n\
6+
V0IJjcmYjEZbTvpjFKznvaFiOUv+8L7jHQ1/Yf+9c3C8gSjdUfv88m17pqYXd+Ds\n\
7+
HEmfmNNjht130UyjNCITmLVXyy5p35vWmdf95U3uEbJSnNVtXH8qRmN9oK9mUpDb\n\
8+
ngX6JBJI7fw7tXoqWSLHNiBODM88fUlQSho8\n\
9+
-----END CERTIFICATE-----\n
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
spring:
2+
ssl:
3+
bundle:
4+
pem:
5+
mybundle:
6+
truststore:
7+
certificate: |
8+
-----BEGIN CERTIFICATE-----
9+
MIID1zCCAr+gAwIBAgIUNM5QQv8IzVQsgSmmdPQNaqyzWs4wDQYJKoZIhvcNAQEL
10+
BQAwezELMAkGA1UEBhMCWFgxEjAQBgNVBAgMCVN0YXRlTmFtZTERMA8GA1UEBwwI
11+
...
12+
V0IJjcmYjEZbTvpjFKznvaFiOUv+8L7jHQ1/Yf+9c3C8gSjdUfv88m17pqYXd+Ds
13+
HEmfmNNjht130UyjNCITmLVXyy5p35vWmdf95U3uEbJSnNVtXH8qRmN9oK9mUpDb
14+
ngX6JBJI7fw7tXoqWSLHNiBODM88fUlQSho8
15+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)