You've already forked SmartConfigurator
mirror of
https://github.com/ret-Phoenix/SmartConfigurator.git
synced 2026-06-20 01:19:29 +02:00
0ae5eda157
+ Навигация по модулю переписана на 1script + Заготовка для Навигация по метаданным на 1script
192 lines
4.3 KiB
JavaScript
192 lines
4.3 KiB
JavaScript
|
|
var WshShell = WScript.CreateObject("WScript.Shell");
|
|
|
|
var settings = {
|
|
// íàñòðîéêè ïî óìîë÷àíèþ
|
|
authorName : "",
|
|
companyName : getOSUser(0),
|
|
// dateFormat : "yyyy-mm-dd HH:SS:MM",
|
|
dateFormat : "yyyy-mm-dd",
|
|
markerAdded : "+",
|
|
markerChanged : "*",
|
|
markerDeleted : "-",
|
|
markerEndBlock : "/",
|
|
oneliner : null,
|
|
signature : "%Author% %Company% %Date%",
|
|
splitter : " -------- çàìåíåíî íà:",
|
|
doNotIndent : null,
|
|
doNotSignAtEnd : null,
|
|
doNotCopyOldCode: null,
|
|
addModDateTimeAtEnd: null
|
|
}
|
|
|
|
function echo(prmTxt)
|
|
{
|
|
with (new ActiveXObject("WScript.Shell")) res = Popup("<"+prmTxt+">", 0, "title", 0);
|
|
}
|
|
|
|
function indent(line)
|
|
{
|
|
var m = line.match(/^(\s*)/);
|
|
if (m) {
|
|
if (m[0] !== line) {
|
|
return m[1];
|
|
}
|
|
}
|
|
return '';
|
|
}
|
|
|
|
function get1CUser(_)
|
|
{
|
|
return "";
|
|
}
|
|
|
|
function getOSUser(_)
|
|
{
|
|
return WshShell.ExpandEnvironmentStrings("%USERNAME%");
|
|
}
|
|
|
|
|
|
function setMarker(markerType, newCode)
|
|
{
|
|
|
|
s = settings;
|
|
// ìàðêåð
|
|
var AC_Marker = "";
|
|
switch (markerType) {
|
|
case 1:
|
|
AC_Marker = s.markerAdded;
|
|
break;
|
|
case 2:
|
|
AC_Marker = s.markerChanged;
|
|
break;
|
|
case 3:
|
|
AC_Marker = s.markerDeleted;
|
|
break;
|
|
default:
|
|
return; // íå äîëæíî áûòü â ïðèíöèïå
|
|
}
|
|
|
|
// ðàçäåëèòåëü ñòàðîãî è íîâîãî êîäà ïðè çàìåíå
|
|
var AC_Splitter = s.splitter;
|
|
|
|
// Äàòà è âðåìÿ
|
|
var AC_Date = getCurrentDate(s.dateFormat);
|
|
var AC_Time = getCurrentTime(); // ïåðåìåííÿ %Time% îñòàëàñü äëÿ ñîâìåñòèìîñòè
|
|
|
|
// Àâòîð
|
|
var AC_Author = s.authorName.replace(/%1CUser%/i, get1CUser()).replace(/%OSUser%/i, getOSUser());
|
|
// Ñèãíàòóðà
|
|
var AC_Sign = s.signature.replace(/%Author%/i, AC_Author)
|
|
.replace(/%Company%/i, s.companyName)
|
|
.replace(/%Date%/i, AC_Date)
|
|
.replace(/%Time%/i, AC_Time);
|
|
|
|
var block = newCode ;
|
|
var lines = block.split(/\r\n/);
|
|
var ind = s.doNotIndent?"":indent(lines[0]);
|
|
// îòêðûâàþùèé ìàðêåð áëîêà
|
|
block = "\r\n" + ind + "//" + AC_Marker + AC_Sign + "\r\n";
|
|
// óäàëåíèå èëè çàìåíà êîäà - êîììåíòèðóåì áëîê
|
|
if (markerType != 1) {
|
|
if ((markerType != 2) || !s.doNotCopyOldCode) {
|
|
block += commentLines(lines, ind);
|
|
}
|
|
}
|
|
|
|
// çàìåíà êîäà - äîáàâëÿåì ðàçäåëèòåëü ñòàðîãî è íîâîãî êîäà
|
|
if (markerType == 2) {
|
|
// ïðè êîïèðîâàíèè îäíîé ñòðîêè ðàçäåëèòåëÿ íå ñòàâèì (XXX ìîæåò ñäåëàòü îïöèîíàëüíî?)
|
|
if (AC_Splitter && !s.doNotCopyOldCode) {
|
|
// if (AC_Splitter && !s.doNotCopyOldCode && (doc.SelStartLine != doc.SelEndLine)) {
|
|
block += ind + "//" + AC_Splitter + "\r\n";
|
|
}
|
|
}
|
|
|
|
// äîáàâëåííûé èëè ñêîïèðîâàííûé êîä
|
|
if (markerType != 3) {
|
|
block += (newCode?newCode:lines.join("\r\n")) + "\r\n";
|
|
}
|
|
|
|
// çàêðûâàþùèé ìàðêåð áëîêà
|
|
block += ind + "//" + s.markerEndBlock + (s.doNotSignAtEnd?"":AC_Sign) + "\r\n";
|
|
|
|
fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
var defFile = fso.CreateTextFile("tmp/module.txt",true);
|
|
defFile.WriteLine(block);
|
|
defFile.Close();
|
|
}
|
|
|
|
function PasteTextFromClipboard(prmVar)
|
|
{
|
|
fso = new ActiveXObject("Scripting.FileSystemObject");
|
|
f=fso.OpenTextFile('tmp/module.txt',1);
|
|
var textFromFile = f.ReadAll();
|
|
if (!textFromFile) {
|
|
return;
|
|
}
|
|
setMarker(prmVar, textFromFile);
|
|
}
|
|
|
|
function commentLines(lines, ind)
|
|
{
|
|
var ret = "";
|
|
for (var i=0; i<lines.length; i++) {
|
|
ret += ind + "//" + lines[i] + "\r\n";
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
// ïîñâÿùàåòñÿ Øàðëèí Ñïèòåðè èç TEXAS :-)
|
|
function ZeroZero(num)
|
|
{
|
|
return (num>9)?num:('0'+num);
|
|
}
|
|
|
|
function getCurrentDate(format)
|
|
{
|
|
with (new Date) {
|
|
return format.replace(/yyyy/, getYear())
|
|
.replace(/yy/, (new String(getYear())).substr(2,2))
|
|
.replace(/dd/, ZeroZero(getDate()))
|
|
.replace(/mm/, ZeroZero(getMonth()+1))
|
|
.replace(/HH/, ZeroZero(getHours()))
|
|
.replace(/MM/, ZeroZero(getMinutes()))
|
|
.replace(/SS/, ZeroZero(getSeconds()))
|
|
}
|
|
}
|
|
|
|
function getCurrentTime(_)
|
|
{
|
|
with (new Date) {
|
|
return getHours() + ':' + (getMinutes() + 1) + '.' + getSeconds();
|
|
}
|
|
}
|
|
|
|
function Init(_) // Ôèêòèâíûé ïàðàìåòð, ÷òîáû ïðîöåäóðà íå ïîïàäàëà â ìàêðîñû
|
|
{
|
|
arg=WScript.Arguments;
|
|
try {
|
|
arg=WScript.Arguments;
|
|
|
|
switch (arg(0)) {
|
|
case "new":
|
|
PasteTextFromClipboard(1);
|
|
break;
|
|
case "edit":
|
|
PasteTextFromClipboard(2);
|
|
break;
|
|
case "del":
|
|
PasteTextFromClipboard(3);
|
|
break;
|
|
default:
|
|
return; // íå äîëæíî áûòü â ïðèíöèïå
|
|
}
|
|
}
|
|
catch (e) {
|
|
echo("Îøèáêà: "+ e.description);
|
|
}
|
|
}
|
|
|
|
Init(1);
|