123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- MODULE JSonObxNoModel;
- (**
- project = "YSon"
- organization = ""
- contributors = ""
- version = "System/Rsrc/About"
- copyright = "Kushnir Piotr Michailovich"
- license = "Docu/BB-License"
- purpose = "демонстрация работы форматтера без использования динамических моделей данных"
- changes = "
- - 20130527, pk, автогенерация заголовка, документирование
- - 20150204, pk, порт для fw
- "
- issues = ""
- **)
- IMPORT
- Gen:=JSonGenerator, F:=JSonFormatter,
- Out;
-
- TYPE
- Wr = POINTER TO RECORD (Gen.Writer) END; (* дефолтный вывод - в лог *)
-
- PROCEDURE (w: Wr) Char (c: CHAR);
- BEGIN
- Out.Char(c);
- END Char;
-
- PROCEDURE (w: Wr) Whitespace (s: ARRAY OF CHAR);
- BEGIN
- CASE s[0] OF
- 09X: Out.Tab;
- |0DX, 0AX: Out.Ln;
- |' ': Out.Char(' ');
- ELSE Out.String(s$) END
- END Whitespace;
- (* формирование структуры JSON непосредственно при выполнении комманд форматтера *)
- PROCEDURE Do*;
- TYPE Base = POINTER TO RECORD END;
- VAR b: Base; wr: Wr; f: F.Formatter; res: INTEGER;
- BEGIN
- Out.Ln;
- NEW(wr);
- NEW(b);
- wr.SetBase(b);
- f:=F.dir.New(wr);
- (* демонстрация пошагового результата *)
- f.WriteSym(F.arrBegin, res); (* [ *)
- f.WriteSym(F.objBegin, res); (* { *)
- f.WriteName('obj', res); (* "obj" *)
- f.WriteSym(F.objBegin, res); (* { *)
- f.WriteSym(F.objEnd, res); (* } *)
- f.WriteName('arr', res); (* "arr" *)
- f.WriteSym(F.arrBegin, res); (* [ *)
- f.WriteValue(F.atomVal, 'true', res); (* true *)
- f.WriteValue(F.atomVal, 'true', res); (* true *)
- f.WriteValue(F.atomVal, 'true', res); (* true *)
- f.WriteSym(F.objBegin, res); (* { *)
- f.WriteSym(F.objEnd, res); (* } *)
- f.WriteSym(F.arrBegin, res); (* [ *)
- f.WriteSym(F.arrEnd, res); (* ] *)
- f.WriteSym(F.arrEnd, res); (* ] *)
- f.WriteName('sss', res); (* "sss" *)
- f.WriteValue(F.atomVal, 'true', res); (* true *)
- f.WriteName('sss1', res); (* "sss1" *)
- f.WriteValue(F.stringVal, 'hello, world!', res); (* "hello, world!" *)
- f.WriteSym(F.objEnd, res); (* } *)
- f.WriteSym(F.arrEnd, res); (* ] *)
- END Do;
-
- BEGIN
- END JSonObxNoModel.
- (*JediPlain*gvFEZXZDb21tYW5kZXJzLlN0ZFZpZXdEZXNjAPFEZXZDb21tYW5kZXJzLlZpZXdEZXNjAPFWaWV3cy5WaWV3RGVzYwDwU3RvcmVzLlN0b3JlRGVzYwAAAAAAAAAAAAAAAAAGAAAAAAAAFQAA*)YSonObxNoModel.Do
|