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.util.IList;
25  import org.millscript.commons.vfs.VFile;
26  import org.millscript.millscript.Prefs;
27  import org.millscript.millscript.render.LinesRenderer;
28  import org.millscript.millscript.vm.Machine;
29  import org.millscript.millscript.vm.Package;
30  
31  /**
32   * This class implements the MillScript <code>linesFile</code> function.
33   */
34  public class LinesFileFunction extends AbstractOutputFileFunction {
35  
36      /**
37       * Constructs a new LinesFileFunction for the specified package.
38       *
39       * @param pack  the package this function belongs to
40       */
41      public LinesFileFunction( 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              IList list = mc.popIList();
52              Page page = toPage( mc.popObject() );
53              page.createDirectoryFor();
54  
55              VFile file = page.getFile();
56              new LinesRenderer( mc.getConfig(), file ).renderAsDocument( list );
57  
58              Prefs.linesCount += 1;
59          } else {
60              checkNargs( mc, 2, nargs );
61          }
62      }
63  
64      /**
65       * @see org.millscript.millscript.functions.AbstractOutputFileFunction#getDefaultExtension()
66       */
67      @Override
68      public String getDefaultExtension() {
69          return "txt";
70      }
71  
72  }