1
0
mirror of https://github.com/ret-Phoenix/SmartConfigurator.git synced 2026-06-20 01:19:29 +02:00
Files
SmartConfigurator/scripts/author.js
T
SUshakov 0ae5eda157 * Полная реструктуризация скриптов
+ Навигация по модулю переписана на 1script
+ Заготовка для Навигация по метаданным на 1script
2016-06-14 14:37:41 +03:00

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);