View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2001-2005 Open World Ltd
4   // Copyright (C) 2005 Kevin Rogers
5   //
6   // This file is part of MillScript.
7   //
8   // MillScript is free software; you can redistribute it and/or modify it under
9   // the terms of the GNU General Public License as published by the Free
10  // Software Foundation; either version 2 of the License, or (at your option)
11  // any later version.
12  //
13  // MillScript is distributed in the hope that it will be useful, but WITHOUT
14  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
16  // more details.
17  //
18  // You should have received a copy of the GNU General Public License along with
19  // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
20  // Place, Suite 330, Boston, MA  02111-1307  USA
21  ////////////////////////////////////////////////////////////////////////////////
22  package org.millscript.millscript.functions;
23  
24  import org.millscript.commons.vfs.VFile;
25  import org.millscript.millscript.Prefs;
26  import org.millscript.millscript.datatypes.Fragment;
27  import org.millscript.millscript.render.HTMLRenderer;
28  import org.millscript.millscript.vm.Machine;
29  import org.millscript.millscript.vm.Package;
30  
31  /**
32   * This class implements the MillScript <code>htmlFile</code> function.
33   */
34  public class HtmlFileFunction extends AbstractOutputFileFunction {
35  
36      /**
37       * Constructs a new HtmlFileFunction for the specified package.
38       *
39       * @param pack  the package this function belongs to
40       */
41      public HtmlFileFunction( final Package pack ) {
42          super( pack );
43      }
44  
45      /**
46       * @see org.millscript.millscript.functions.Function#apply(org.millscript.millscript.vm.Machine, int)
47       */
48      @Override
49      public void apply( final Machine mc, final int nargs ) {
50          if ( nargs == 2 ) {
51              Fragment fragment = mc.popFragment();
52              Page page = toPage( mc.popObject() );
53              page.createDirectoryFor();
54  
55              VFile file = page.getFile();
56              config.getLogger().infoLine( "About to render to " + file );
57              new HTMLRenderer( mc.getConfig(), file ).renderAsDocument( fragment );
58  
59              Prefs.pageCount += 1;
60              mc.pushObject( page );
61          } else {
62              checkNargs( mc, 2, nargs );
63          }
64      }
65  
66      /**
67       * @see org.millscript.millscript.functions.AbstractOutputFileFunction#getDefaultExtension()
68       */
69      @Override
70      public String getDefaultExtension() {
71          return "html";
72      }
73  
74  }