Artifact
a633481182cc1cb9d462bcb478d72dfdb26bb89f:
- File
epf/epfloader.js
— part of check-in
[8a8eaea6ab]
at
2014-03-27 12:34:57
on branch trunk
— Устранен форк
(user:
sosnae
size: 2364)
0000: ef bb bf 24 65 6e 67 69 6e 65 20 4a 53 63 72 69 ...$engine JScri
0010: 70 74 0d 0a 24 75 6e 61 6d 65 20 76 38 45 70 66 pt..$uname v8Epf
0020: 0d 0a 24 64 6e 61 6d 65 20 d0 9e d0 b1 d1 80 d0 ..$dname .......
0030: b0 d0 b1 d0 be d1 82 d0 ba d0 b8 20 31 d0 a1 0d ........... 1...
0040: 0a 24 61 64 64 69 6e 20 73 74 64 6c 69 62 0d 0a .$addin stdlib..
0050: 0d 0a 45 70 66 4c 6f 61 64 65 72 20 3d 20 6e 65 ..EpfLoader = ne
0060: 77 20 28 73 74 64 6c 69 62 2e 43 6c 61 73 73 2e w (stdlib.Class.
0070: 65 78 74 65 6e 64 28 7b 0d 0a 0d 0a 09 63 6f 6e extend({.....con
0080: 73 74 72 75 63 74 20 3a 20 66 75 6e 63 74 69 6f struct : functio
0090: 6e 28 29 20 7b 0d 0a 09 09 74 68 69 73 2e 76 38 n() {....this.v8
00a0: 20 3d 20 6e 65 77 20 41 63 74 69 76 65 58 4f 62 = new ActiveXOb
00b0: 6a 65 63 74 28 22 56 38 32 2e 41 70 70 6c 69 63 ject("V82.Applic
00c0: 61 74 69 6f 6e 22 29 3b 0d 0a 09 09 74 68 69 73 ation");....this
00d0: 2e 76 38 2e 43 6f 6e 6e 65 63 74 28 27 46 69 6c .v8.Connect('Fil
00e0: 65 3d 22 27 20 2b 20 74 68 69 73 2e 67 65 74 49 e="' + this.getI
00f0: 62 50 61 74 68 28 29 20 2b 20 27 22 3b 27 29 3b bPath() + '";');
0100: 0d 0a 09 09 0d 0a 09 09 76 61 72 20 6c 69 62 73 ........var libs
0110: 20 3d 20 76 38 4e 65 77 28 27 53 74 72 75 63 74 = v8New('Struct
0120: 75 72 65 27 29 3b 0d 0a 09 09 6c 69 62 73 2e 49 ure');....libs.I
0130: 6e 73 65 72 74 28 27 d0 a1 d1 82 d0 b0 d0 bd d0 nsert('.........
0140: b4 d0 b0 d1 80 d1 82 d0 bd d0 b0 d1 8f d0 91 d0 ................
0150: b8 d0 b1 d0 bb d0 b8 d0 be d1 82 d0 b5 d0 ba d0 ................
0160: b0 27 2c 20 73 74 64 6c 69 62 29 3b 0d 0a 09 09 .', stdlib);....
0170: 0d 0a 09 09 74 68 69 73 2e 76 38 2e 49 6e 69 74 ....this.v8.Init
0180: 28 44 65 73 69 67 6e 65 72 2c 20 6c 69 62 73 29 (Designer, libs)
0190: 3b 0d 0a 09 09 0d 0a 09 09 74 68 69 73 2e 6c 6f ;........this.lo
01a0: 61 64 41 6c 6c 45 70 66 28 29 3b 09 09 0d 0a 09 adAllEpf();.....
01b0: 09 65 76 65 6e 74 73 2e 63 6f 6e 6e 65 63 74 28 .events.connect(
01c0: 44 65 73 69 67 6e 65 72 2c 20 22 62 65 66 6f 72 Designer, "befor
01d0: 65 45 78 69 74 41 70 70 22 2c 20 74 68 69 73 2c eExitApp", this,
01e0: 20 27 64 65 73 74 72 75 63 74 27 29 3b 0d 0a 09 'destruct');...
01f0: 7d 2c 0d 0a 09 0d 0a 09 64 65 73 74 72 75 63 74 },......destruct
0200: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a : function() {..
0210: 09 09 74 68 69 73 2e 75 6e 6c 6f 61 64 41 6c 6c ..this.unloadAll
0220: 45 70 66 28 29 3b 0d 0a 09 09 64 65 6c 65 74 65 Epf();....delete
0230: 20 74 68 69 73 2e 76 38 3b 0d 0a 09 09 64 65 6c this.v8;....del
0240: 65 74 65 20 74 68 69 73 2e 6d 61 63 72 6f 73 65 ete this.macrose
0250: 73 3b 0d 0a 09 7d 2c 0d 0a 09 09 0d 0a 09 67 65 s;...},.......ge
0260: 74 49 62 50 61 74 68 20 3a 20 66 75 6e 63 74 69 tIbPath : functi
0270: 6f 6e 28 29 20 7b 0d 0a 09 09 72 65 74 75 72 6e on() {....return
0280: 20 74 68 69 73 2e 67 65 74 45 70 66 52 6f 6f 74 this.getEpfRoot
0290: 50 61 74 68 28 29 20 2b 20 22 5c 5c 69 62 22 3b Path() + "\\ib";
02a0: 0d 0a 09 7d 2c 0d 0a 09 0d 0a 09 67 65 74 45 70 ...},......getEp
02b0: 66 52 6f 6f 74 50 61 74 68 20 3a 20 66 75 6e 63 fRootPath : func
02c0: 74 69 6f 6e 28 29 20 7b 0d 0a 09 09 72 65 74 75 tion() {....retu
02d0: 72 6e 20 73 74 64 6c 69 62 2e 67 65 74 53 6e 65 rn stdlib.getSne
02e0: 67 6f 70 61 74 4d 61 69 6e 46 6f 6c 64 65 72 28 gopatMainFolder(
02f0: 29 20 2b 20 22 73 63 72 69 70 74 73 5c 5c 65 70 ) + "scripts\\ep
0300: 66 22 3b 0d 0a 09 7d 2c 0d 0a 09 0d 0a 09 6c 6f f";...},......lo
0310: 61 64 41 6c 6c 45 70 66 3a 20 66 75 6e 63 74 69 adAllEpf: functi
0320: 6f 6e 28 29 20 7b 0d 0a 09 09 76 61 72 20 66 73 on() {....var fs
0330: 6f 20 3d 20 6e 65 77 20 41 63 74 69 76 65 58 4f o = new ActiveXO
0340: 62 6a 65 63 74 28 22 53 63 72 69 70 74 69 6e 67 bject("Scripting
0350: 2e 46 69 6c 65 53 79 73 74 65 6d 4f 62 6a 65 63 .FileSystemObjec
0360: 74 22 29 3b 0d 0a 09 09 76 61 72 20 72 65 5f 65 t");....var re_e
0370: 70 66 20 3d 20 2f 5c 2e 65 70 66 24 2f 69 3b 0d pf = /\.epf$/i;.
0380: 0a 09 09 28 66 75 6e 63 74 69 6f 6e 20 28 6c 6f ...(function (lo
0390: 61 64 65 72 2c 20 72 6f 6f 74 29 20 7b 0d 0a 09 ader, root) {...
03a0: 09 09 76 61 72 20 66 6f 6c 64 65 72 20 3d 20 66 ..var folder = f
03b0: 73 6f 2e 47 65 74 46 6f 6c 64 65 72 28 72 6f 6f so.GetFolder(roo
03c0: 74 29 3b 0d 0a 09 09 09 76 61 72 20 66 6f 6c 64 t);.....var fold
03d0: 65 72 73 20 3d 20 6e 65 77 20 45 6e 75 6d 65 72 ers = new Enumer
03e0: 61 74 6f 72 28 66 6f 6c 64 65 72 2e 53 75 62 46 ator(folder.SubF
03f0: 6f 6c 64 65 72 73 29 3b 0d 0a 09 09 09 66 6f 72 olders);.....for
0400: 20 28 3b 20 21 66 6f 6c 64 65 72 73 2e 61 74 45 (; !folders.atE
0410: 6e 64 28 29 3b 20 66 6f 6c 64 65 72 73 2e 6d 6f nd(); folders.mo
0420: 76 65 4e 65 78 74 28 29 29 20 7b 0d 0a 09 09 09 veNext()) {.....
0430: 09 61 72 67 75 6d 65 6e 74 73 2e 63 61 6c 6c 65 .arguments.calle
0440: 65 28 6c 6f 61 64 65 72 2c 20 66 6f 6c 64 65 72 e(loader, folder
0450: 73 2e 69 74 65 6d 28 29 2e 50 61 74 68 29 3b 0d s.item().Path);.
0460: 0a 09 09 09 7d 0d 0a 09 09 09 76 61 72 20 66 69 ....}.....var fi
0470: 6c 65 73 20 3d 20 6e 65 77 20 45 6e 75 6d 65 72 les = new Enumer
0480: 61 74 6f 72 28 66 6f 6c 64 65 72 2e 46 69 6c 65 ator(folder.File
0490: 73 29 3b 0d 0a 09 09 09 66 6f 72 20 28 3b 20 21 s);.....for (; !
04a0: 66 69 6c 65 73 2e 61 74 45 6e 64 28 29 3b 20 66 files.atEnd(); f
04b0: 69 6c 65 73 2e 6d 6f 76 65 4e 65 78 74 28 29 29 iles.moveNext())
04c0: 20 7b 0d 0a 09 09 09 09 76 61 72 20 66 69 6c 65 {......var file
04d0: 20 3d 20 66 69 6c 65 73 2e 69 74 65 6d 28 29 3b = files.item();
04e0: 0d 0a 09 09 09 09 69 66 20 28 72 65 5f 65 70 66 ......if (re_epf
04f0: 2e 74 65 73 74 28 66 69 6c 65 2e 4e 61 6d 65 29 .test(file.Name)
0500: 29 20 7b 0d 0a 09 09 09 09 09 6c 6f 61 64 65 72 ) {.......loader
0510: 2e 6c 6f 61 64 45 70 66 28 66 69 6c 65 2e 50 61 .loadEpf(file.Pa
0520: 74 68 29 3b 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 th);......}.....
0530: 7d 0d 0a 09 09 7d 29 28 74 68 69 73 2c 20 74 68 }....})(this, th
0540: 69 73 2e 67 65 74 45 70 66 52 6f 6f 74 50 61 74 is.getEpfRootPat
0550: 68 28 29 29 3b 0d 0a 09 7d 2c 0d 0a 09 0d 0a 09 h());...},......
0560: 6c 6f 61 64 45 70 66 3a 20 66 75 6e 63 74 69 6f loadEpf: functio
0570: 6e 28 70 61 74 68 29 20 7b 0d 0a 09 09 74 68 69 n(path) {....thi
0580: 73 2e 6d 61 63 72 6f 73 65 73 20 3d 20 6e 65 77 s.macroses = new
0590: 20 41 72 72 61 79 28 29 3b 0d 0a 09 09 76 61 72 Array();....var
05a0: 20 65 70 66 20 3d 20 74 68 69 73 2e 76 38 2e 4c epf = this.v8.L
05b0: 6f 61 64 45 70 66 28 70 61 74 68 29 3b 0d 0a 09 oadEpf(path);...
05c0: 09 69 66 20 28 65 70 66 29 20 7b 0d 0a 09 09 09 .if (epf) {.....
05d0: 76 61 72 20 65 70 66 4e 61 6d 65 20 3d 20 65 70 var epfName = ep
05e0: 66 2e 4d 65 74 61 64 61 74 61 28 29 2e 4e 61 6d f.Metadata().Nam
05f0: 65 3b 0d 0a 09 09 09 76 61 72 20 6d 61 63 72 6f e;.....var macro
0600: 73 65 73 20 3d 20 74 68 69 73 2e 76 38 2e 47 65 ses = this.v8.Ge
0610: 74 4d 61 63 72 6f 73 65 73 28 65 70 66 29 3b 0d tMacroses(epf);.
0620: 0a 09 09 09 66 6f 72 20 28 76 61 72 20 69 3d 30 ....for (var i=0
0630: 3b 20 69 3c 6d 61 63 72 6f 73 65 73 2e 43 6f 75 ; i<macroses.Cou
0640: 6e 74 28 29 3b 20 69 2b 2b 29 20 7b 2f 2f d0 bc nt(); i++) {//..
0650: d0 b0 d0 ba d1 80 d0 be d1 81 0d 0a 09 09 09 09 ................
0660: 74 68 69 73 2e 61 64 64 45 70 66 4d 61 63 72 6f this.addEpfMacro
0670: 73 28 65 70 66 2c 20 65 70 66 4e 61 6d 65 2c 20 s(epf, epfName,
0680: 6d 61 63 72 6f 73 65 73 2e 47 65 74 28 69 29 29 macroses.Get(i))
0690: 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09 7d ;.....}....}...}
06a0: 2c 0d 0a 09 0d 0a 09 61 64 64 45 70 66 4d 61 63 ,......addEpfMac
06b0: 72 6f 73 3a 20 66 75 6e 63 74 69 6f 6e 28 65 70 ros: function(ep
06c0: 66 2c 20 65 70 66 4e 61 6d 65 2c 20 6d 61 63 72 f, epfName, macr
06d0: 6f 4e 61 6d 65 29 20 7b 0d 0a 09 09 76 61 72 20 oName) {....var
06e0: 6e 61 6d 65 20 3d 20 27 6d 61 63 72 6f 73 27 20 name = 'macros'
06f0: 2b 20 65 70 66 4e 61 6d 65 20 2b 20 27 2d 3e 27 + epfName + '->'
0700: 20 2b 20 6d 61 63 72 6f 4e 61 6d 65 2e 73 75 62 + macroName.sub
0710: 73 74 72 28 36 29 3b 0d 0a 09 09 53 65 6c 66 53 str(6);....SelfS
0720: 63 72 69 70 74 2e 73 65 6c 66 5b 6e 61 6d 65 5d cript.self[name]
0730: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d = function() {.
0740: 0a 09 09 09 76 61 72 20 5f 65 70 66 20 3d 20 65 ....var _epf = e
0750: 70 66 3b 20 2f 2f 20 43 61 74 63 68 20 69 74 20 pf; // Catch it
0760: 69 6e 74 6f 20 63 6c 6f 73 75 72 65 21 0d 0a 09 into closure!...
0770: 09 09 65 76 61 6c 28 27 5f 65 70 66 2e 27 20 2b ..eval('_epf.' +
0780: 20 6d 61 63 72 6f 4e 61 6d 65 20 2b 20 27 28 29 macroName + '()
0790: 3b 27 29 3b 0d 0a 09 09 7d 3b 0d 0a 09 09 74 68 ;');....};....th
07a0: 69 73 2e 6d 61 63 72 6f 73 65 73 2e 70 75 73 68 is.macroses.push
07b0: 28 6e 61 6d 65 29 3b 0d 0a 09 7d 2c 0d 0a 09 0d (name);...},....
07c0: 0a 09 75 6e 6c 6f 61 64 41 6c 6c 45 70 66 3a 20 ..unloadAllEpf:
07d0: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 09 function () {...
07e0: 09 66 6f 72 20 28 76 61 72 20 69 3d 30 3b 20 69 .for (var i=0; i
07f0: 3c 74 68 69 73 2e 6d 61 63 72 6f 73 65 73 2e 6c <this.macroses.l
0800: 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a 09 ength; i++) {...
0810: 09 09 64 65 6c 65 74 65 20 53 65 6c 66 53 63 72 ..delete SelfScr
0820: 69 70 74 2e 73 65 6c 66 5b 74 68 69 73 2e 6d 61 ipt.self[this.ma
0830: 63 72 6f 73 65 73 5b 69 5d 5d 3b 20 0d 0a 09 09 croses[i]]; ....
0840: 7d 0d 0a 09 7d 2c 0d 0a 09 0d 0a 09 67 65 74 45 }...},......getE
0850: 70 66 3a 20 66 75 6e 63 74 69 6f 6e 20 28 65 70 pf: function (ep
0860: 66 4e 61 6d 65 29 20 7b 0d 0a 09 09 72 65 74 75 fName) {....retu
0870: 72 6e 20 74 68 69 73 2e 76 38 2e 47 65 74 45 70 rn this.v8.GetEp
0880: 66 28 65 70 66 4e 61 6d 65 29 3b 0d 0a 09 7d 0d f(epfName);...}.
0890: 0a 0d 0a 7d 29 29 3b 0d 0a 0d 0a 53 65 6c 66 53 ...}));....SelfS
08a0: 63 72 69 70 74 2e 53 65 6c 66 5b 27 6d 61 63 72 cript.Self['macr
08b0: 6f 73 d0 9f d0 b5 d1 80 d0 b5 d0 b7 d0 b0 d0 b3 os..............
08c0: d1 80 d1 83 d0 b7 d0 b8 d1 82 d1 8c 20 d0 b2 d1 ............ ...
08d0: 81 d0 b5 20 31 d0 a1 2d d1 81 d0 ba d1 80 d0 b8 ... 1..-........
08e0: d0 bf d1 82 d1 8b 27 5d 20 3d 20 66 75 6e 63 74 ......'] = funct
08f0: 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20 45 70 ion () {.. Ep
0900: 66 4c 6f 61 64 65 72 2e 75 6e 6c 6f 61 64 41 6c fLoader.unloadAl
0910: 6c 45 70 66 28 29 3b 0d 0a 20 20 20 20 45 70 66 lEpf();.. Epf
0920: 4c 6f 61 64 65 72 2e 6c 6f 61 64 41 6c 6c 45 70 Loader.loadAllEp
0930: 66 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a f();..};....