FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
OneScript/src/oscript/CodeStatWriter.cs at develop · ivtroitskiy/OneScript · GitHub
ivtroitskiy
/
OneScript
Public
forked from
EvilBeaver/OneScript
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
OneScript
/
src
/
oscript
/
CodeStatWriter.cs
Copy path
More file actions
More file actions
Latest commit
History
History
History
91 lines (73 loc) · 2.2 KB
Breadcrumbs
OneScript
/
src
/
oscript
/
CodeStatWriter.cs
Copy path
File metadata and controls
91 lines (73 loc) · 2.2 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*----------------------------------------------------------
This Source Code Form is subject to the terms of the
Mozilla Public License, v.2.0. If a copy of the MPL
was not distributed with this file, You can obtain one
at http://mozilla.org/MPL/2.0/.
----------------------------------------------------------*/
using
System
;
using
System
.
IO
;
using
System
.
Linq
;
using
Newtonsoft
.
Json
;
using
ScriptEngine
.
Machine
;
namespace
oscript
{
public
class
CodeStatWriter
{
private
readonly
string
_outputFileName
;
private
readonly
CodeStatWriterType
_type
;
public
CodeStatWriter
(
string
fileName
,
CodeStatWriterType
type
)
{
_outputFileName
=
fileName
;
_type
=
type
;
}
public
void
Write
(
CodeStatDataCollection
codeStatDataCollection
)
{
if
(
_type
==
CodeStatWriterType
.
JSON
)
WriteToJson
(
codeStatDataCollection
)
;
else
throw
new
ArgumentException
(
"Unsupported type"
)
;
}
private
void
WriteToJson
(
CodeStatDataCollection
codeStatDataCollection
)
{
using
(
var
w
=
new
StreamWriter
(
_outputFileName
)
)
{
var
jwriter
=
new
JsonTextWriter
(
w
)
{
Formatting
=
Formatting
.
Indented
}
;
jwriter
.
WriteStartObject
(
)
;
foreach
(
var
source
in
codeStatDataCollection
.
GroupBy
(
arg
=>
arg
.
Entry
.
ScriptFileName
)
)
{
jwriter
.
WritePropertyName
(
source
.
Key
,
true
)
;
jwriter
.
WriteStartObject
(
)
;
jwriter
.
WritePropertyName
(
"#path"
)
;
jwriter
.
WriteValue
(
source
.
Key
)
;
foreach
(
var
method
in
source
.
GroupBy
(
arg
=>
arg
.
Entry
.
SubName
)
)
{
jwriter
.
WritePropertyName
(
method
.
Key
,
true
)
;
jwriter
.
WriteStartObject
(
)
;
foreach
(
var
entry
in
method
.
OrderBy
(
kv
=>
kv
.
Entry
.
LineNumber
)
)
{
jwriter
.
WritePropertyName
(
entry
.
Entry
.
LineNumber
.
ToString
(
)
)
;
jwriter
.
WriteStartObject
(
)
;
jwriter
.
WritePropertyName
(
"count"
)
;
jwriter
.
WriteValue
(
entry
.
ExecutionCount
)
;
jwriter
.
WritePropertyName
(
"time"
)
;
jwriter
.
WriteValue
(
entry
.
TimeElapsed
)
;
jwriter
.
WriteEndObject
(
)
;
}
jwriter
.
WriteEndObject
(
)
;
}
jwriter
.
WriteEndObject
(
)
;
}
jwriter
.
WriteEndObject
(
)
;
jwriter
.
Flush
(
)
;
}
}
}
//TODO: Добавить другие форматы записи
public
enum
CodeStatWriterType
{
JSON
}
}
Back
|
FazBrowse Home
|
New Git URL