Annotation of parser3/tests/468.html, revision 1.2
1.1 moko 1: # $o.CLASS, $o.CLASS_NAME, $o.method and ^o.method[] for the types and the static classes.
2: # With FEATURE_GET_ELEMENT4CALL $o.method is not a method for everything with an open set of keys:
3: # it is empty or an error, only ^o.method[] is the method; for the rest $o.method is junction
4:
5: @main[]
6:
7: #preparing vars of all possible types
8: $bool(true)
9: $double(1.5)
10: $int(^double.int[])
11: $string[abc]
12: $empty[]
13: $void[$empty.anything]
14: $hash[ $.key[value] ]
15: $array[a;b]
16: $table[^table::create{a
17: 1}]
18: $file[^file::create[text;a.txt;abc]]
19: $date[^date::create(2026;10;12)]
20: $regex[^regex::create[a][i]]
21: $image[^image::create(1;1)]
22: $xdoc[^xdoc::create{<a><b/></a>}]
23: $xnode[$xdoc.documentElement]
24: $hashfile[^hashfile::open[468_dir/hf]]
25: $object[^test::create[]]
26: $junction[$object.m]
27: $code{code}
28: ^try{ ^throw[type;source;comment] }{ $exception.handled(true) $caught[$exception] }
29:
30: # object and it's method without parameters
31: $visible[
32: $.bool[int]
33: $.int[double]
34: $.double[int]
35: $.file[base64]
36: $.date[sql-string]
37: $.xdoc[string]
38: $.xnode[normalize]
39: $.image[html]
40: $.object[m]
41: ]
42:
43: # the objects where $o.method is inaccessible (open set of keys or possible typo)
44: $fields[
45: $.hash[count]
46: $.array[count]
47: $.table[count]
48: $.hashfile[cleanup]
49: $.string[length]
50: $.empty[length]
51: $.void[length]
52: ]
53:
54: $objects[ $.regex[] $.junction[] $.code[] $.caught[] ]
55:
56: # the static class, the method
57: $statics[
58: $.MAIN[] $.test[s] $.env[] $.request[] $.form[] $.cookie[] $.status[] $.console[] $.memory[compact] $.hash[] $.table[] $.file[]
59: $.response[] $.math[abs] $.json[string] $.reflection[classes] $.mail[send] $.inet[ntoa]
60: ]
61:
62: 1. CLASS_NAME and CLASS.CLASS_NAME:
63: 1.1 ^class_names[$visible;.]
64: 1.2 ^class_names[$fields;.]
65: 1.3 ^class_names[$objects;.]
66: 1.4 ^class_names[$statics;:]
67:
68: 2. the method is called:
69: 2.1 ^visible.foreach[name;method]{ ^show{^^${name}.${method}[]} }
70: 2.2 ^fields.foreach[name;method]{ ^show{^^${name}.${method}[]} }
71:
72: 3. ^$o.method is junction:
73: 3.1 ^visible.foreach[name;method]{ ^kind{^$${name}.$method} }
74: 3.2 ^statics.foreach[name;method]{ ^if(def $method){ ^kind{^$${name}:$method} } }
75:
76: 4. ^$o.method is inaccessible in objects with an open set of keys:
77: ^fields.foreach[name;method]{^kind{^$${name}.${method}}}
1.2 ! moko 78: ^kind{^$response:stream}
1.1 moko 79:
80: 5. fields named as the methods are found, the methods are still called:
81: $hashfile.cleanup[value of cleanup]
82: $hash[ $.count[value of count] ]
83: $columns[^table::create{count data
84: 1 x
85: 2 y}]
86: hashfile: $hashfile.cleanup, ^hashfile.cleanup[]
87: hash: $hash.count, ^hash.count[]
88: columns: $columns.count ^columns.count[]
89:
90: $response:clear[value of clear]
91: ^kind{^$response:clear}
92: ^response:clear[]
93:
94: 6. table and hashfile keep only strings (unlike hash or array) and thus can't be called:
95: ^show{^$columns.data}
96: ^show{^^columns.data[]}
97: ^show{^$columns.no-such-field}
98: ^show{^^columns.no-such-field[]}
99: $hashfile.key[value of key]
100: ^show{^^hashfile.key[]}
101: 6.1 but hash values can be called:
102: $hash[ $.f[$junction] ]
103: ^show{^^hash.f[]}
104:
105: 7. CLASS is compiled into the class, the computed name is the key:
106: $c1[C] $c2[LASS]
107: $hash[ $.CLASS[key value] ]
108: hash: $hash.CLASS.CLASS_NAME, $hash.[${c1}${c2}]
109:
110: # memcached and redis tests in their dirs
111: ^hashfile.delete[]
112: $response:untaint[html]
113:
114: @class_names[names;separator]
115: ^names.foreach[name;method]{^show{^$${name}${separator}CLASS_NAME, ^$${name}${separator}CLASS.CLASS_NAME}}
116:
117: @show[code]
118: ${code}: ^try-catch-comment{^process{$code}}^#0A
119:
120: @kind[code][value]
121: ${code}: ^try-catch-comment{$value[^process{$code}]^if($value is junction){junction}{^if(def $value){value "$value"}{empty}}}^#0A
122:
123: @CLASS
124: test
125:
126: @create[]
127:
128: @m[]
129: method
130:
131: @s[]
132: static
E-mail: