001package com.credibledoc.substitution.doc.module.substitution.launching;
002
003import com.credibledoc.combiner.log.buffered.LogBufferedReader;
004import com.credibledoc.substitution.core.placeholder.Placeholder;
005import com.credibledoc.substitution.core.placeholder.PlaceholderService;
006import com.credibledoc.enricher.deriving.Deriving;
007import com.credibledoc.substitution.reporting.markdown.MarkdownService;
008import com.credibledoc.enricher.transformer.Transformer;
009import lombok.RequiredArgsConstructor;
010import org.springframework.stereotype.Service;
011
012import javax.inject.Inject;
013import java.util.List;
014
015@Service
016@RequiredArgsConstructor(onConstructor = @__(@Inject))
017public class ContentReplacedTransformer implements Transformer {
018
019    private static final String LINE_SEPARATOR = System.lineSeparator();
020
021    @Override
022    public String transform(Deriving deriving,
023                            List<String> multiLine, LogBufferedReader logBufferedReader) {
024
025        String plantUml = ":" + MarkdownService.CONTENT_REPLACED + ";" + LINE_SEPARATOR +
026            "note right" + LINE_SEPARATOR +
027            parsePlaceholderDescription(multiLine) + LINE_SEPARATOR +
028            "end note" + LINE_SEPARATOR;
029
030        deriving.getCacheLines().add(plantUml);
031
032        return null;
033    }
034
035    private String parsePlaceholderDescription(List<String> multiLine) {
036        String line = multiLine.get(0);
037        int beginIndex = line.indexOf(MarkdownService.CONTENT_REPLACED);
038        String json = line.substring(beginIndex +  MarkdownService.CONTENT_REPLACED.length());
039        Placeholder placeholder = PlaceholderService.getInstance().readPlaceholderFromJson(json);
040        return placeholder.getDescription();
041    }
042
043}