1 /************************************************************************** 2 * 3 * Copyright (c) 2016-2019 Yawg project contributors. 4 * 5 **************************************************************************/ 6 7 package com.varmateo.yawg.spi; 8 9 import java.nio.file.Path; 10 11 12 /** 13 * A baker of files. 14 */ 15 public interface PageBaker { 16 17 18 /** 19 * The baker identifier. It is used to uniquely identify a baker. 20 * 21 * @return The baker name. 22 */ 23 String shortName(); 24 25 26 /** 27 * Checks if this baker is able to bake the given file. 28 * 29 * <p>Typical implementations check if the file extension is one 30 * of a set of supported file types.</p> 31 * 32 * @param path The file system path of the file to be checked. 33 * 34 * @return True if this baker can handle the file. False 35 * otherwise. 36 */ 37 boolean isBakeable(Path path); 38 39 40 /** 41 * Bakes the given file creating the result in the specified 42 * target directory. 43 * 44 * <p>The target directory must already exist. Otherwise a 45 * failedresult will be returned.</p> 46 * 47 * @param sourcePath The file to be baked. 48 * 49 * @param context Data for performing the baking. 50 * 51 * @param targetDir The directory where the result of the bake 52 * will be created. 53 * 54 * @return A result signaling success of failure. 55 */ 56 PageBakeResult bake( 57 Path sourcePath, 58 PageContext context, 59 Path targetDir); 60 }