...
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
|
..
92
|
..
93
|
-
..
94
||
..
95
||
..
96
||
..
97
||
..
98
||
..
99
||
.
100
||
.
101
||
.
102
||
.
103
||
.
104
||
.
105
||
.
106
||
.
107
||
.
108
||
.
109
||
.
110
||
.
111
||
.
112
||
.
113
||
.
114
||
.
115
|
-
.
116
|
.
117
|
-
.
118
||
.
119
||
.
120
||
.
121
||
.
122
||
.
123
||
.
124
||
.
125
||
.
126
||
.
127
||
.
128
||
.
129
||
.
130
||
.
131
||
.
132
||
.
133
||
.
134
||
.
135
||
.
136
||
.
137
||
.
138
||
.
139
||
.
140
||
.
141
||
.
142
||
.
143
||
.
144
||
.
145
||
.
146
||
.
147
||
.
148
||
.
149
||
.
150
||
.
151
||
.
152
|
-
.
153
-
.
154
.
155
/* CharMY.CodeToHtml エントリポイント
*
* COPYLEFT (C) CharMY 2012-2013 Yanagihara Masami
*
*
* 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 <http://www.gnu.org/licenses/>. *
*
*
*/
using
System
;
using
System
.
Linq
;
using
System
.
Windows
.
Forms
;
using
CharMY
.
IO
;
using
CharMY
.
Net
;
namespace
CharMY
.
CodeToHtml
{
internal
static
class
_CharMYCodeToHtml
{
/// <summary>
/// 変換開始
/// </summary>
/// <param name=
"args"
>起動パス</param>
[
STAThread
]
private
static
void
Main
(
string
[]
args
)
{
Consoles
.
WriteInformation
();
string
rtf
=
null
;
if
(
Clipboard
.
ContainsData
(
DataFormats
.
Rtf
))
{
rtf
=
Clipboard
.
GetData
(
DataFormats
.
Rtf
)
as
string
;
}
if
(
rtf
!=
null
)
{
//複数のバージョンの中で最も適合する設定を適用する.(CSS設定のみに反映)
var
to_html
=
new
CodeToHtmlConverter
(
"csharp"
,
VSEditorVersion
.
VS2012ExpressDesktop
|
VSEditorVersion
.
Black
,
VSEditorVersion
.
VS2012ExpressDesktop
|
VSEditorVersion
.
White
,
VSEditorVersion
.
VS2010ExpressCSharp
)
{
ShowCollapceLevel
=
!
args
.
Contains
(
"/noclp"
),
CssFileName
=
"colors-of-csharp"
,
ScriptFileName
=
"collapse-script"
};
var
file_name
=
DateTime
.
Now
.
ToString
(
"yyyy-MM-dd--HH-mm-ss"
);
var
class_name
=
rtf
.
ReplaceByRegexWithoutTags
(
@"\\[0-9a-z]+"
,
""
)
.
AllMatchOf
(
@"(?<partial>partial|) * (class|interface|struct|enum) *(?<classname>\w+)"
)
.
Select
(
name
=>
{
var
result
=
name
.
Groups
[
"classname"
]
.
Value
;
if
(
name
.
Groups
[
"partial"
]
.
Length
>
0
)
result
=
"("
+
result
+
"-"
+
file_name
.
Replace
(
"-"
,
""
)
+
")"
;
return
result
;
})
.
ToSingleString
(
"-"
);
if
(
class_name
.
Length
>
0
)
file_name
=
class_name
;
var
file
=
Files
.
DeskTop
.
GetRelativeFile
(
"./output/html/"
+
file_name
+
".html"
);
var
text
=
to_html
.
SaveHtmlFile
(
file
,
rtf
,
useCss
:
!
args
.
Contains
(
"/nocss"
));
#if
!DEBUG
Clipboard
.
SetText
(
text
);
#endif
}
}
/// <summary>
/// デフォルトの配列を作成
/// Rの値を+1(0xFFは-1)したセッティングファイルからデフォルト設定のXMLを作成
/// </summary>
[
STAThread
]
private
static
void
Main0
()
{
Consoles
.
ChangeOut
(
TextWriterOptions
.
CompoundConsoleExpandSsv
);
var
io
=
Files
.
Kind
(
"setting"
,
"vssettings"
);
io
.
ResetLastAccess
();
var
file
=
io
.
GetFile
();
var
items
=
SettingToCssConverter
.
GetItems
(
file
)
.
ToArray
();
for
(
int
i
=
items
.
Length
-
1
;
i
>=
0
;
--
i
)
{
RemakeColor
(
i
,
false
,
items
);
RemakeColor
(
i
,
true
,
items
);
}
Console
.
WriteLine
(
items
.
ToStrings
());
Files
.
SerialXml
<
SettingToCssConverter
.
ColoringItem
[]
>
()
.
Save
(
file
.
ChangeName
((
name
,
ext
)
=>
name
+
"-array.xml"
),
items
);
Console
.
WriteLine
(
"COMPLETE"
);
Console
.
ReadLine
();
}
public
static
void
RemakeColor
(
int
i
,
bool
background
,
SettingToCssConverter
.
ColoringItem
[]
items
,
int
depth
=
2
)
{
var
color
=
background
?
items
[
i
]
.
Background
:
items
[
i
]
.
Foreground
;
if
(
color
<
0
)
return
;
Assert
.
True
(
color
>
0
,
items
[
i
]
.
Name
+
" is invalid "
+
color
.
ToString
(
"X6"
));
if
(
depth
>
0
)
{
var
check
=
items
.
Indexed
()
.
Skip
(
i
+
1
)
.
Where
(
item
=>
(
background
?
item
.
Element
.
Background
:
item
.
Element
.
Foreground
)
==
color
);
if
(
check
.
Count
()
>=
2
)
check
.
Eval
(
item
=>
RemakeColor
(
item
.
Index
,
background
,
items
,
depth
-
1
));
}
var
r
=
(
color
&
0xFF0000
);
if
(
r
>=
0xFE0000
)
{
r
=
0xFF0000
;
}
else
{
r
=
r
-
0x010000
;
}
color
=
(
color
&
0x00FFFF
)
|
r
;
if
(
background
)
{
items
[
i
]
.
Background
=
color
;
}
else
{
items
[
i
]
.
Foreground
=
color
;
}
}
}}