mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
Something works:D
This commit is contained in:
parent
1f1763abff
commit
173fd486fe
7 changed files with 80 additions and 64 deletions
|
|
@ -43,7 +43,7 @@ VAR
|
||||||
BEGIN
|
BEGIN
|
||||||
NEW(n);
|
NEW(n);
|
||||||
|
|
||||||
IF self.Count = 0 THEN RETURN 0AX END;
|
IF self.Count = 0 THEN RETURN 0X END;
|
||||||
|
|
||||||
n := self.Get(self, self.Count - 1);
|
n := self.Get(self, self.Count - 1);
|
||||||
self.Delete(self, self.Count - 1);
|
self.Delete(self, self.Count - 1);
|
||||||
|
|
@ -56,7 +56,7 @@ VAR
|
||||||
BEGIN
|
BEGIN
|
||||||
NEW(n);
|
NEW(n);
|
||||||
|
|
||||||
IF self.Count = 0 THEN RETURN 0AX END;
|
IF self.Count = 0 THEN RETURN 0X END;
|
||||||
|
|
||||||
n := self.Get(self, self.Count - 1);
|
n := self.Get(self, self.Count - 1);
|
||||||
RETURN n.obj(TChar).char;
|
RETURN n.obj(TChar).char;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ VAR
|
||||||
moduleNames: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
moduleNames: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
||||||
moduleJson: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
moduleJson: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
||||||
moduleVersions: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
moduleVersions: ARRAY ArrayMaxNumber OF JsonParser.TString;
|
||||||
|
|
||||||
j : LONGINT;
|
j : LONGINT;
|
||||||
|
|
||||||
PROCEDURE Resolve *(jsonString: ARRAY OF CHAR);
|
PROCEDURE Resolve *(jsonString: ARRAY OF CHAR);
|
||||||
|
|
@ -28,12 +29,11 @@ BEGIN
|
||||||
ELSE Logger.Log("Value for the Key is not found"); RETURN; END;
|
ELSE Logger.Log("Value for the Key is not found"); RETURN; END;
|
||||||
|
|
||||||
dependencies := jsonRecord.GetNonTerminal(jsonRecord, "Dependencies");
|
dependencies := jsonRecord.GetNonTerminal(jsonRecord, "Dependencies");
|
||||||
|
|
||||||
dependencies.GetTerminalKeys(dependencies, keys);
|
dependencies.GetTerminalKeys(dependencies, keys);
|
||||||
|
|
||||||
FOR i := 0 TO LEN(keys) - 1 DO
|
FOR i := 0 TO LEN(keys) - 1 DO (* TODO: rewrite this logic to work with key count *)
|
||||||
|
IF ~Strings.Match(keys[i], "") THEN
|
||||||
keyFound := dependencies.GetTerminal(dependencies, keys[i], version);
|
keyFound := dependencies.GetTerminal(dependencies, keys[i], version);
|
||||||
|
|
||||||
IF ~keyFound THEN Logger.Log('ERROR while seatching key'); Logger.Log(keys[i]); END;
|
IF ~keyFound THEN Logger.Log('ERROR while seatching key'); Logger.Log(keys[i]); END;
|
||||||
ASSERT(keyFound);
|
ASSERT(keyFound);
|
||||||
|
|
||||||
|
|
@ -47,12 +47,18 @@ BEGIN
|
||||||
);
|
);
|
||||||
|
|
||||||
keyFound := FALSE;
|
keyFound := FALSE;
|
||||||
|
IF j >= LEN(moduleNames) THEN
|
||||||
|
Logger.Log("Out of range in Resolve function in ...");
|
||||||
|
END;
|
||||||
|
ASSERT(j < LEN(moduleNames));
|
||||||
|
|
||||||
FOR k := 0 TO j - 1 DO
|
FOR k := 0 TO j - 1 DO
|
||||||
IF Strings.Match(moduleNames[k], keys[i]) THEN
|
IF Strings.Match(moduleNames[k], keys[i]) THEN
|
||||||
keyFound := TRUE;
|
keyFound := TRUE;
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
|
||||||
IF ~keyFound THEN
|
IF ~keyFound THEN
|
||||||
COPY(keys[i], moduleNames[j]);
|
COPY(keys[i], moduleNames[j]);
|
||||||
COPY(version, moduleVersions[j]);
|
COPY(version, moduleVersions[j]);
|
||||||
|
|
@ -61,7 +67,7 @@ BEGIN
|
||||||
Resolve(returnedJSON);
|
Resolve(returnedJSON);
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
|
END;
|
||||||
END Resolve;
|
END Resolve;
|
||||||
|
|
||||||
END DependencyResolver.
|
END DependencyResolver.
|
||||||
|
|
@ -2,7 +2,7 @@ MODULE JsonParser;
|
||||||
IMPORT Logger, CharacterStack, Strings, Out, strutils;
|
IMPORT Logger, CharacterStack, Strings, Out, strutils;
|
||||||
CONST
|
CONST
|
||||||
ArrayMaxNumber = 30;
|
ArrayMaxNumber = 30;
|
||||||
ArrayMaxNumberChar = 1000;
|
ArrayMaxNumberChar = 10000;
|
||||||
(* Const *)
|
(* Const *)
|
||||||
symbolBracketStart = "{";
|
symbolBracketStart = "{";
|
||||||
symbolBracketEnd = "}";
|
symbolBracketEnd = "}";
|
||||||
|
|
@ -40,13 +40,19 @@ VAR
|
||||||
BEGIN
|
BEGIN
|
||||||
FOR i := 0 TO LEN(self.NonTerminalKeys) - 1 DO
|
FOR i := 0 TO LEN(self.NonTerminalKeys) - 1 DO
|
||||||
IF Strings.Match(key, self.NonTerminalKeys[i]) THEN RETURN self.NonTerminalValues[i] END;
|
IF Strings.Match(key, self.NonTerminalKeys[i]) THEN RETURN self.NonTerminalValues[i] END;
|
||||||
Logger.Log(key);
|
|
||||||
Logger.Log(self.NonTerminalKeys[i]);
|
|
||||||
END;
|
END;
|
||||||
|
|
||||||
RETURN NIL;
|
RETURN NIL;
|
||||||
END GetNonTerminal;
|
END GetNonTerminal;
|
||||||
|
|
||||||
|
PROCEDURE Empty(VAR string: ARRAY OF CHAR);
|
||||||
|
VAR
|
||||||
|
i : LONGINT;
|
||||||
|
BEGIN
|
||||||
|
FOR i := 0 TO LEN(string) - 1 DO string[i] := 0X END;
|
||||||
|
COPY("", string);
|
||||||
|
END Empty;
|
||||||
|
|
||||||
PROCEDURE GetTerminal *(self: JsonTypePointer; key: ARRAY OF CHAR; VAR returnValue: ARRAY OF CHAR): BOOLEAN;
|
PROCEDURE GetTerminal *(self: JsonTypePointer; key: ARRAY OF CHAR; VAR returnValue: ARRAY OF CHAR): BOOLEAN;
|
||||||
VAR
|
VAR
|
||||||
i: LONGINT;
|
i: LONGINT;
|
||||||
|
|
@ -118,6 +124,7 @@ BEGIN
|
||||||
NEW(characterStack);
|
NEW(characterStack);
|
||||||
j := i;
|
j := i;
|
||||||
characterStack := CharacterStack.Create();
|
characterStack := CharacterStack.Create();
|
||||||
|
Empty(returnString);
|
||||||
REPEAT
|
REPEAT
|
||||||
IF (characterStack.Count > 1) & (string[j] = endCharacter) THEN
|
IF (characterStack.Count > 1) & (string[j] = endCharacter) THEN
|
||||||
REPEAT UNTIL characterStack.pop(characterStack) = startCharacter;
|
REPEAT UNTIL characterStack.pop(characterStack) = startCharacter;
|
||||||
|
|
@ -125,7 +132,12 @@ BEGIN
|
||||||
characterStack.push(characterStack, string[j]);
|
characterStack.push(characterStack, string[j]);
|
||||||
INC(j);
|
INC(j);
|
||||||
END;
|
END;
|
||||||
UNTIL characterStack.top(characterStack) = 0AX;
|
UNTIL characterStack.Count = 0; (* do not trust top it btings OAX on EOL*)
|
||||||
|
|
||||||
|
IF j >= LEN(returnString) THEN
|
||||||
|
Logger.Log('ERROR string out of range in JSON parser');
|
||||||
|
END;
|
||||||
|
ASSERT(j < LEN(returnString));
|
||||||
|
|
||||||
FOR k := i TO j DO
|
FOR k := i TO j DO
|
||||||
returnString[k - i] := string[k];
|
returnString[k - i] := string[k];
|
||||||
|
|
@ -152,7 +164,7 @@ VAR
|
||||||
self: JsonTypePointer;
|
self: JsonTypePointer;
|
||||||
i, j, terminalIterator, noneTerminalIterator: LONGINT;
|
i, j, terminalIterator, noneTerminalIterator: LONGINT;
|
||||||
characterStack: CharacterStack.CharacterStackType;
|
characterStack: CharacterStack.CharacterStackType;
|
||||||
key, val, nonTerminalVal, string: ARRAY ArrayMaxNumber OF CHAR;
|
key, val, nonTerminalVal, string: ARRAY ArrayMaxNumberChar OF CHAR;
|
||||||
symbol: CHAR;
|
symbol: CHAR;
|
||||||
symbolStart: CHAR;
|
symbolStart: CHAR;
|
||||||
quoteStart: BOOLEAN;
|
quoteStart: BOOLEAN;
|
||||||
|
|
@ -171,21 +183,21 @@ BEGIN
|
||||||
terminalIterator := 0;
|
terminalIterator := 0;
|
||||||
noneTerminalIterator := 0;
|
noneTerminalIterator := 0;
|
||||||
|
|
||||||
|
Empty(key);
|
||||||
COPY("", key);
|
Empty(val);
|
||||||
COPY("", val);
|
Empty(nonTerminalVal);
|
||||||
COPY("", nonTerminalVal);
|
Empty(string);
|
||||||
|
|
||||||
quoteStart := FALSE;
|
quoteStart := FALSE;
|
||||||
|
|
||||||
REPEAT
|
REPEAT
|
||||||
IF (text[i] = symbolBracketStart) & (i = 0) THEN
|
IF (text[i] = symbolBracketStart) & (i = 0) THEN
|
||||||
INC(i);
|
INC(i);
|
||||||
Logger.Log("Starting Parse Json");
|
(* Logger.Log("Starting Parse Json"); *)
|
||||||
END;
|
END;
|
||||||
|
|
||||||
IF symbol = symbolBracketStart THEN
|
IF symbol = symbolBracketStart THEN
|
||||||
Logger.Log("End Parsing Json");
|
(* Logger.Log("End Parsing Json"); *)
|
||||||
END;
|
END;
|
||||||
|
|
||||||
symbol := text[i];
|
symbol := text[i];
|
||||||
|
|
@ -202,16 +214,17 @@ BEGIN
|
||||||
COPY(string, key);
|
COPY(string, key);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
COPY("", string);
|
Empty(string);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
IF (Strings.Length(key) > 0) & (Strings.Length(val) > 0) THEN
|
IF (Strings.Length(key) > 0) & (Strings.Length(val) > 0) THEN
|
||||||
deQuote(key, self.TerminalKeys[terminalIterator]);
|
deQuote(key, self.TerminalKeys[terminalIterator]);
|
||||||
deQuote(val, self.TerminalsValues[terminalIterator]);
|
deQuote(val, self.TerminalsValues[terminalIterator]);
|
||||||
|
|
||||||
INC(terminalIterator);
|
INC(terminalIterator);
|
||||||
|
|
||||||
COPY("", key);
|
Empty(key);
|
||||||
COPY("", val);
|
Empty(val);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
(* none terminals *)
|
(* none terminals *)
|
||||||
|
|
@ -221,27 +234,24 @@ BEGIN
|
||||||
|
|
||||||
IF (Strings.Length(string) > 0) & (symbol = symbolBracketStart) THEN
|
IF (Strings.Length(string) > 0) & (symbol = symbolBracketStart) THEN
|
||||||
IF Strings.Length(key) > 0 THEN
|
IF Strings.Length(key) > 0 THEN
|
||||||
COPY(string, nonTerminalVal)
|
COPY(string, nonTerminalVal);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
COPY("", string);
|
Empty(string);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IF (Strings.Length(key) > 0) & (Strings.Length(nonTerminalVal) > 0) THEN
|
IF (Strings.Length(key) > 0) & (Strings.Length(nonTerminalVal) > 0) THEN
|
||||||
deQuote(key, self.NonTerminalKeys[noneTerminalIterator]);
|
deQuote(key, self.NonTerminalKeys[noneTerminalIterator]);
|
||||||
self.NonTerminalValues[noneTerminalIterator] := Create(nonTerminalVal);
|
self.NonTerminalValues[noneTerminalIterator] := Create(nonTerminalVal);
|
||||||
|
|
||||||
INC(noneTerminalIterator);
|
INC(noneTerminalIterator);
|
||||||
|
|
||||||
COPY("", key);
|
Empty(key);
|
||||||
COPY("", nonTerminalVal);
|
Empty(nonTerminalVal);
|
||||||
RETURN self;
|
|
||||||
END;
|
END;
|
||||||
|
|
||||||
INC(i);
|
INC(i);
|
||||||
UNTIL i > LEN(text) - 1;
|
UNTIL (i >= LEN(text) - 1) OR (text[i] = 0X);
|
||||||
|
|
||||||
RETURN self;
|
RETURN self;
|
||||||
END Create;
|
END Create;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
MODULE PackageResolver;
|
MODULE PackageResolver;
|
||||||
IMPORT FileManager, http, Strings;
|
IMPORT FileManager, http, Strings, Logger;
|
||||||
|
|
||||||
CONST ArrayMaxNumber = 10000;
|
CONST ArrayMaxNumber = 10000;
|
||||||
|
|
||||||
|
|
@ -21,7 +21,7 @@ BEGIN
|
||||||
Strings.Append(fileName, filePath);
|
Strings.Append(fileName, filePath);
|
||||||
|
|
||||||
http.get(host, port, filePath, returnValue);
|
http.get(host, port, filePath, returnValue);
|
||||||
|
http.getClean(returnValue, returnValue);
|
||||||
(* TODO: introduce write to file functionality *)
|
(* TODO: introduce write to file functionality *)
|
||||||
(* FileManager.CreateDirectory(packageName); *)
|
(* FileManager.CreateDirectory(packageName); *)
|
||||||
(* FileManager.Write(packageName + fileName, returnValue); *)
|
(* FileManager.Write(packageName + fileName, returnValue); *)
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,5 @@ MODULE Settings;
|
||||||
CONST
|
CONST
|
||||||
packageFileName* = "VersionFile.json";
|
packageFileName* = "VersionFile.json";
|
||||||
host* = "localhost";
|
host* = "localhost";
|
||||||
port* = "8000";
|
port* = "80";
|
||||||
END Settings.
|
END Settings.
|
||||||
2
http.Mod
2
http.Mod
|
|
@ -77,7 +77,7 @@ BEGIN
|
||||||
(i > Strings.Length(buff));
|
(i > Strings.Length(buff));
|
||||||
END getHeader;
|
END getHeader;
|
||||||
|
|
||||||
PROCEDURE get *(host, path, port: ARRAY OF CHAR; VAR buff: ARRAY OF CHAR);
|
PROCEDURE get *(host, port, path: ARRAY OF CHAR; VAR buff: ARRAY OF CHAR);
|
||||||
VAR
|
VAR
|
||||||
socket : Internet.Socket;
|
socket : Internet.Socket;
|
||||||
connectionFlag: BOOLEAN;
|
connectionFlag: BOOLEAN;
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ BEGIN
|
||||||
Out.String("-");
|
Out.String("-");
|
||||||
LogNormalized(sec, 2);
|
LogNormalized(sec, 2);
|
||||||
Out.String(" :- ");
|
Out.String(" :- ");
|
||||||
FOR i:=0 TO Strings.Length(buff) DO
|
FOR i := 0 TO Strings.Length(buff) - 1 DO
|
||||||
(* Out.Char(" ");
|
(* Out.Char(" ");
|
||||||
Out.Int(ORD(buff[i]), 4);
|
Out.Int(ORD(buff[i]), 4);
|
||||||
Out.Char("-"); *)
|
Out.Char("-"); *)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue