diff --git a/LINQ/LINQ/Program.vb b/LINQ/LINQ/Program.vb
index 860f9b3..9d2e52c 100644
--- a/LINQ/LINQ/Program.vb
+++ b/LINQ/LINQ/Program.vb
@@ -1,52 +1,54 @@
#Region "Microsoft.VisualBasic::8ee987237312a675a87a8260f921a261, LINQ\LINQ\Program.vb"
- ' Author:
- '
- ' asuka (amethyst.asuka@gcmodeller.org)
- ' xie (genetics@smrucc.org)
- ' xieguigang (xie.guigang@live.com)
- '
- ' Copyright (c) 2018 GPL3 Licensed
- '
- '
- ' GNU GENERAL PUBLIC LICENSE (GPL3)
- '
- '
- ' This program is free software: you can redistribute it and/or modify
- ' it under the terms of the GNU General Public License as published by
- ' the Free Software Foundation, either version 3 of the License, or
- ' (at your option) any later version.
- '
- ' This program is distributed in the hope that it will be useful,
- ' but WITHOUT ANY WARRANTY; without even the implied warranty of
- ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ' GNU General Public License for more details.
- '
- ' You should have received a copy of the GNU General Public License
- ' along with this program. If not, see .
+' Author:
+'
+' asuka (amethyst.asuka@gcmodeller.org)
+' xie (genetics@smrucc.org)
+' xieguigang (xie.guigang@live.com)
+'
+' Copyright (c) 2018 GPL3 Licensed
+'
+'
+' GNU GENERAL PUBLIC LICENSE (GPL3)
+'
+'
+' This program is free software: you can redistribute it and/or modify
+' it under the terms of the GNU General Public License as published by
+' the Free Software Foundation, either version 3 of the License, or
+' (at your option) any later version.
+'
+' This program is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU General Public License for more details.
+'
+' You should have received a copy of the GNU General Public License
+' along with this program. If not, see .
- ' /********************************************************************************/
+' /********************************************************************************/
- ' Summaries:
+' Summaries:
- ' Module Program
- '
- ' Function: Main, RunQuery
- '
- ' /********************************************************************************/
+' Module Program
+'
+' Function: Main, RunQuery
+'
+' /********************************************************************************/
#End Region
Imports LINQ.Interpreter
Imports LINQ.Interpreter.Query
+Imports LINQ.Language
Imports LINQ.Runtime
Imports LINQ.Script
Imports Microsoft.VisualBasic.ApplicationServices.Terminal
Imports Microsoft.VisualBasic.CommandLine
Imports Microsoft.VisualBasic.Data.csv.IO
Imports Microsoft.VisualBasic.My.JavaScript
+Imports Microsoft.VisualBasic.Text
Module Program
@@ -54,18 +56,37 @@ Module Program
Return GetType(Program).RunCLI(App.CommandLine, executeFile:=AddressOf RunQuery)
End Function
+ '''
+ ''' <xxx.linq> [/output <result.csv>]
+ '''
+ '''
+ '''
+ '''
Private Function RunQuery(file As String, args As CommandLine) As Integer
- Dim tokens = LINQ.Language.GetTokens(file.ReadAllText).ToArray
+ Dim tokens As Token() = LINQ.Language.GetTokens(file.ReadAllText).ToArray
Dim query As ProjectionExpression = tokens.PopulateQueryExpression
Dim env As New GlobalEnvironment(New Registry)
Dim result As JavaScriptObject() = query.Exec(New ExecutableContext With {.env = env, .throwError = True})
Dim table As DataFrame = result.CreateTableDataSet
- Dim text As String()() = table _
- .csv _
- .Select(Function(c) c.ToArray) _
- .ToArray
+ Dim output As String = args <= "/output"
- Call text.PrintTable
+ If output.StringEmpty Then
+ ' print on the console
+ Dim text As String()() = table _
+ .csv _
+ .Select(Function(c) c.ToArray) _
+ .ToArray
+
+ Call text.PrintTable
+ Else
+ ' save to csv file
+ Call table _
+ .csv _
+ .Save(
+ path:=output,
+ encoding:=Encodings.UTF8WithoutBOM
+ )
+ End If
Return 0
End Function