diff --git a/app/com/gitpitch/models/MarkdownModel.java b/app/com/gitpitch/models/MarkdownModel.java index 096d19f..b90132c 100644 --- a/app/com/gitpitch/models/MarkdownModel.java +++ b/app/com/gitpitch/models/MarkdownModel.java @@ -30,6 +30,7 @@ import com.gitpitch.services.VideoService; import com.gitpitch.services.GISTService; import com.gitpitch.services.CodeService; import com.gitpitch.services.ShortcutsService; +import com.gitpitch.services.SlideService; import com.gitpitch.git.GRSManager; import org.apache.commons.io.FilenameUtils; import com.google.inject.assistedinject.Assisted; @@ -57,6 +58,7 @@ public class MarkdownModel implements Markdown { private final GISTService gistService; private final CodeService codeService; private final ShortcutsService shortcutsService; + private final SlideService slideService; private final GRSManager grsManager; private final MarkdownRenderer mrndr; private final String markdown; @@ -69,6 +71,7 @@ public class MarkdownModel implements Markdown { GISTService gistService, CodeService codeService, ShortcutsService shortcutsService, + SlideService slideService, GRSManager grsManager, @Nullable @Assisted MarkdownRenderer mrndr) { @@ -77,6 +80,7 @@ public class MarkdownModel implements Markdown { this.gistService = gistService; this.codeService = codeService; this.shortcutsService = shortcutsService; + this.slideService = slideService; this.grsManager = grsManager; this.mrndr = mrndr; @@ -185,6 +189,8 @@ public class MarkdownModel implements Markdown { return gistService.build(md, dp, pp, yOpts, this); } else if(codeDelimFound(dp)) { return codeService.build(md, dp, pp, yOpts, this); + } else if(colorDelimFound(dp)) { + return slideService.buildColorBackground(md, dp, pp, yOpts, this); } if (yOpts != null && yOpts.hasImageBg()) { @@ -415,6 +421,10 @@ public class MarkdownModel implements Markdown { return dp.get(DELIM_QUERY_CODE) != null; } + private boolean colorDelimFound(DelimParams dp) { + return dp.get(DELIM_QUERY_COLOR) != null; + } + private String delimiter(String md) { return (md.startsWith(hSlideDelim)) ? horizDelim() : vertDelim(); } @@ -652,6 +662,8 @@ public class MarkdownModel implements Markdown { "\" data-background-size=\""; public static final String MD_IMAGE_COLOR = "\" data-background-color=\""; + public static final String MD_BG_COLOR = + ""; public static final String MD_SPACER = "\n"; public static final String DATA_IMAGE_ATTR = "data-background-image="; diff --git a/app/com/gitpitch/services/SlideService.java b/app/com/gitpitch/services/SlideService.java index d7ea905..15dfb11 100644 --- a/app/com/gitpitch/services/SlideService.java +++ b/app/com/gitpitch/services/SlideService.java @@ -48,39 +48,75 @@ public class SlideService { this.imageService = imageService; } - /* - * Build basic slide structure including: - * - * 1. Clean delimiter and - * 2. Optionally slide bg-image based on YAMLOptions.hasImageBg. - */ - public String build(String md, - DelimParams dp, - PitchParams pp, - YAMLOptions yOpts, - MarkdownModel mdm) { + /* + * Build basic slide structure including: + * + * 1. Clean delimiter and + * 2. Optionally slide bg-image based on YAMLOptions.hasImageBg. + * 3. Or slide color delimiter. + */ + public String build(String md, + DelimParams dp, + PitchParams pp, + YAMLOptions yOpts, + MarkdownModel mdm) { - StringBuffer structure = new StringBuffer(mdm.extractDelim(md)); - try { + StringBuffer structure = new StringBuffer(mdm.extractDelim(md)); - String slideType = mdm.isHorizontal(md) ? - mdm.horizDelim() : mdm.vertDelim(); + try { - structure = new StringBuffer(mdm.extractDelim(md)) - .append(MarkdownModel.MD_SPACER); + structure = new StringBuffer(mdm.extractDelim(md)) + .append(MarkdownModel.MD_SPACER); - String yamlBg = null; - if (yOpts != null && yOpts.hasImageBg()) { - yamlBg = imageService.buildBackground(pp, yOpts); + if (yOpts != null && yOpts.hasImageBg()) { + String yamlBg = imageService.buildBackground(pp, yOpts); + structure.append(yamlBg).append(MarkdownModel.MD_SPACER); + } else { + String cbg = buildColorMarkdown(dp); + if(cbg != null) { + structure.append(cbg).append(MarkdownModel.MD_SPACER); + } + } + + } catch(Exception ex) { + log.warn("build: ex={}", ex); } - if (yamlBg != null) { - structure.append(yamlBg).append(MarkdownModel.MD_SPACER); - } - } catch(Exception ex) { - log.warn("build: ex={}", ex); + log.debug("build: returning structure={}", structure.toString()); + + return structure.toString(); + } + + public String buildColorBackground(String md, + DelimParams dp, + PitchParams pp, + YAMLOptions yOpts, + MarkdownModel mdm) { + + StringBuffer structure = new StringBuffer(mdm.extractDelim(md)); + + try { + + structure = new StringBuffer(mdm.extractDelim(md)) + .append(MarkdownModel.MD_SPACER); + + String bg = buildColorMarkdown(dp); + if(bg != null) { + structure.append(bg).append(MarkdownModel.MD_SPACER); + } + + } catch(Exception ex) { + log.warn("buildColorDelim: ex={}", ex); + } + + log.debug("buildColorDelim: returning structure={}", structure.toString()); + return structure.toString(); + } + + private String buildColorMarkdown(DelimParams dp) { + String bgColor = dp.get(MarkdownModel.DELIM_QUERY_COLOR, null); + String bg = MarkdownModel.MD_BG_COLOR + bgColor + MarkdownModel.MD_CLOSER; + return bgColor != null ? bg : null; } - return structure.toString(); - } }