1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 }