001/*license*\
002   Codelet: Copyright (C) 2014, Jeff Epstein (aliteralmind __DASH__ github __AT__ yahoo __DOT__ com)
003
004   This software is dual-licensed under the:
005   - Lesser General Public License (LGPL) version 3.0 or, at your option, any later version;
006   - Apache Software License (ASL) version 2.0.
007
008   Either license may be applied at your discretion. More information may be found at
009   - http://en.wikipedia.org/wiki/Multi-licensing.
010
011   The text of both licenses is available in the root directory of this project, under the names "LICENSE_lgpl-3.0.txt" and "LICENSE_asl-2.0.txt". The latest copies may be downloaded at:
012   - LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt
013   - ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
014\*license*/
015package  com.github.aliteralmind.codelet.type;
016   import  com.github.aliteralmind.codelet.UserExtraGapGetter;
017   import  com.github.aliteralmind.codelet.CodeletType;
018   import  com.github.aliteralmind.codelet.CodeletGap;
019   import  com.github.aliteralmind.codelet.CodeletTemplateBase;
020   import  com.github.aliteralmind.templatefeather.FeatherTemplate;
021/**
022   <P>The text into which {@code {@.codelet.and.out}} output (the example-code's console output) is placed.</P>
023
024   <A NAME="gaps"></A><H2><A HREF="{@docRoot}/com/github/aliteralmind.codelet/CodeletTemplateBase.html"><IMG SRC="{@docRoot}/resources/up_arrow.gif"/></A> &nbsp; Codelet: {@code {@.codelet.and.out}}: Template: <U>Gap names</U></H2>
025
026   <P>The only required gaps are &quot;{@link #GAP_BODY_SOURCE_CODE body_source_code}&quot; and &quot;{@link #GAP_BODY_CONSOLE_OUTPUT body_console_output}&quot;, which are where the fully-processed source and output are placed.</P>
027
028   <P>In addition to any {@linkplain com.github.aliteralmind.codelet.UserExtraGapGetter#getForCodeletAndOut() user-extra} gaps {@code {@.codelet.and.out}} template provides for the same &quot;default&quot; optional gaps as made available in <I>both</I> {@link com.github.aliteralmind.codelet.type.SourceCodeTemplate} and {@link com.github.aliteralmind.codelet.type.SourceAndOutTemplate}.</P>
029
030   @since  0.1.0
031   @author  Copyright (C) 2014, Jeff Epstein ({@code aliteralmind __DASH__ github __AT__ yahoo __DOT__ com}), dual-licensed under the LGPL (version 3.0 or later) or the ASL (version 2.0). See source code for details. <A HREF="http://codelet.aliteralmind.com">{@code http://codelet.aliteralmind.com}</A>, <A HREF="https://github.com/aliteralmind/codelet">{@code https://github.com/aliteralmind/codelet}</A>
032 **/
033public class SourceAndOutTemplate extends CodeletTemplateBase  {
034   /**
035      <P>The gap name for the fully processed source-code, which is one of two gaps required to exist in the template--equal to {@code "body_source_code"}.</P>
036
037      @see  <A HREF="#gaps"><IMG SRC="{@docRoot}/resources/up_arrow.gif"/></A>
038      @see  #GAP_BODY_CONSOLE_OUTPUT
039      @see  #fillBodyGap(String, String)
040    **/
041   public static final String GAP_BODY_SOURCE_CODE = "body_source_code";
042   /**
043      <P>The gap name for the fully processed console output, which is one of two gaps required to exist in the template--equal to {@code "body_console_output"}.</P>
044
045      @see  <A HREF="#gaps"><IMG SRC="{@docRoot}/resources/up_arrow.gif"/></A>
046      @see  #GAP_BODY_SOURCE_CODE
047      @see  #fillBodyGap(String, String)
048    **/
049   public static final String GAP_BODY_CONSOLE_OUTPUT = "body_console_output";
050   /**
051      <P>Create the first instance.</P>
052
053      <P>Equal to</P>
054
055<BLOCKQUOTE><PRE>
056{@link com.github.aliteralmind.codelet.CodeletTemplateBase#CodeletTemplateBase(CodeletType, FeatherTemplate, String, String[], CodeletGap[], UserExtraGapGetter) super}({@link com.github.aliteralmind.codelet.CodeletType CodeletType}.{@link com.github.aliteralmind.codelet.CodeletType#SOURCE_AND_OUT SOURCE_AND_OUT}, template, tmpl_path
057   new String[]{{@link #GAP_BODY_SOURCE_CODE}, {@link #GAP_BODY_CONSOLE_OUTPUT}},
058   new CodeletGap[] {
059      {@link com.github.aliteralmind.codelet.type.SourceCodeTemplate ConsoleOutTemplate.GAP_COMMAND_LINE_PARAMS}.{@link com.github.aliteralmind.codelet.type.ConsoleOutTemplate#GAP_COMMAND_LINE_PARAMS GAP_COMMAND_LINE_PARAMS},
060      {@link com.github.aliteralmind.codelet.type.SourceCodeTemplate}.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_FQ_CLASS_NAME GAP_FQ_CLASS_NAME},
061      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_FQ_CLASS_NAME_DIR GAP_FQ_CLASS_NAME_DIR},
062      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_FQ_CLASS_NAME_URL GAP_FQ_CLASS_NAME_URL},
063      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_JAVADOC_URL GAP_JAVADOC_URL},
064      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_PACKAGE GAP_PACKAGE},
065      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_PACKAGE_DIR GAP_PACKAGE_DIR},
066      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_PACKAGE_URL GAP_PACKAGE_URL},
067      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_SIMPLE_CLASS_NAME GAP_SIMPLE_CLASS_NAME},
068      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_SOURCE_URL GAP_SOURCE_URL},
069      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_SRC_BASE_DIR GAP_SRC_BASE_DIR},
070      SourceCodeTemplate.{@link com.github.aliteralmind.codelet.type.SourceCodeTemplate#GAP_SRC_PATH GAP_SRC_PATH}},
071   userExtra_getter)
072</PRE></BLOCKQUOTE>
073
074      @see  #SourceAndOutTemplate(SourceAndOutTemplate, FeatherTemplate, String)
075    **/
076   public SourceAndOutTemplate(FeatherTemplate template, String tmpl_path, UserExtraGapGetter userExtra_getter)  {
077      super(CodeletType.SOURCE_AND_OUT, template, tmpl_path,
078         new String[]{GAP_BODY_SOURCE_CODE, GAP_BODY_CONSOLE_OUTPUT},
079         new CodeletGap[] {
080            ConsoleOutTemplate.GAP_COMMAND_LINE_PARAMS,
081            SourceCodeTemplate.GAP_FQ_CLASS_NAME,
082            SourceCodeTemplate.GAP_FQ_CLASS_NAME_DIR,
083            SourceCodeTemplate.GAP_FQ_CLASS_NAME_URL,
084            SourceCodeTemplate.GAP_JAVADOC_URL,
085            SourceCodeTemplate.GAP_PACKAGE,
086            SourceCodeTemplate.GAP_PACKAGE_DIR,
087            SourceCodeTemplate.GAP_PACKAGE_URL,
088            SourceCodeTemplate.GAP_SIMPLE_CLASS_NAME,
089            SourceCodeTemplate.GAP_SOURCE_URL,
090            SourceCodeTemplate.GAP_SRC_BASE_DIR,
091            SourceCodeTemplate.GAP_SRC_PATH},
092         userExtra_getter);
093   }
094   /**
095      <P>Create the second or subsequent instance.</P>
096
097      <P>Equal to</P>
098
099<BLOCKQUOTE><PRE>{@link com.github.aliteralmind.codelet.CodeletTemplateBase#CodeletTemplateBase(CodeletTemplateBase, FeatherTemplate, String) super}(to_copy, template, tmpl_path)</PRE></BLOCKQUOTE>
100
101      @see  #SourceAndOutTemplate(FeatherTemplate, String, UserExtraGapGetter)
102    **/
103   public SourceAndOutTemplate(SourceAndOutTemplate to_copy, FeatherTemplate template, String tmpl_path)  {
104      super(to_copy, template, tmpl_path);
105   }
106   public SourceAndOutTemplate(SourceAndOutTemplate to_copy, Appendable debugDest_ifNonNull)  {
107      super(to_copy, debugDest_ifNonNull);
108   }
109   /**
110      <P>Fill the fully-processed source-code body gap.</P>
111
112      <P>Equal to</P>
113
114<BLOCKQUOTE><PRE>{@link com.github.aliteralmind.codelet.CodeletTemplateBase#fillBodyGap(String, String) fillBodyGap}({@link #GAP_BODY_SOURCE_CODE}, body_text)*</PRE></BLOCKQUOTE>
115
116      @see  #fillConsoleOutputBody(String)
117    **/
118   public final SourceAndOutTemplate fillSourceCodeBody(String body_text)  {
119      fillBodyGap(GAP_BODY_SOURCE_CODE, body_text);
120      return  this;
121   }
122   /**
123      <P>Fill the fully-processed console-output body gap.</P>
124
125      <P>Equal to</P>
126
127<BLOCKQUOTE><PRE>{@link com.github.aliteralmind.codelet.CodeletTemplateBase#fillBodyGap(String, String) fillBodyGap}*({@link #GAP_BODY_CONSOLE_OUTPUT}, body_text)</PRE></BLOCKQUOTE>
128
129      @see  #fillSourceCodeBody(String)
130    **/
131   public final SourceAndOutTemplate fillConsoleOutputBody(String body_text)  {
132      fillBodyGap(GAP_BODY_CONSOLE_OUTPUT, body_text);
133      return  this;
134   }
135   /**
136      <P>Duplicate this template.</P>
137
138      @return  <CODE>(new {@link #SourceAndOutTemplate(SourceAndOutTemplate, Appendable) SourceAndOutTemplate}(this, debugDest_ifNonNull))</CODE>
139    **/
140   public SourceAndOutTemplate getObjectCopy(Appendable debugDest_ifNonNull)  {
141      return  (new SourceAndOutTemplate(this, debugDest_ifNonNull));
142   }
143   public static final SourceAndOutTemplate newFromPathAndUserExtraGaps(String path, String path_name, UserExtraGapGetter userExtra_getter)  {
144      return  (new SourceAndOutTemplate(newTemplateFromPath(path, path_name), path, userExtra_getter));
145   }
146   public static final FeatherTemplate newTemplateFromPath(String path, String path_name)  {
147      return  CodeletTemplateBase.newTemplateFromPath(path, path_name, GAP_BODY_SOURCE_CODE, GAP_BODY_CONSOLE_OUTPUT);
148   }
149}