-printf "q{%s}=>[%s],\n", $_, join(',',
- $di->{$_}, # original code point
- map {"'$_'"}
- $uninfo->{ chr $di->{$_} }->[1], # name
- $uninfo->{ chr $di->{$_} }->[0], # class
- (map {('', $_)} $uninfo->{ chr $di->{$_} }->[4] // ()), # string
-) for sort keys %{$di};
-print "}\n";
+$table{$_} = [
+ ord $di->{$_}, # original code point
+ $uninfo->{ $di->{$_} }->[1] // '', # name
+ join(' ',
+ $rfc->{$_}
+ ? $vim->{$_} ? 'l4' : 'l1' # vim+rfc or rfc only
+ : $vim->{$_} ? 'l3' : 'l2', # vim only or neither
+ $vimold && $vim->{$_} && !$vimold->{$_} ? 'ex' : (), # new vim feature
+ ),
+ ($uninfo->{ $di->{$_} }->[0] // '') =~ s/ u-di| u-prop| ex//gr, # class
+ $uninfo->{ $di->{$_} }->[4] // (), # string
+] for sort keys %{$di};
+
+print JSON->new->ascii->canonical->encode({
+ key => \%table,
+ flag => {
+ l4 => 'full support',
+ l3 => 'vim extension',
+ 'l3 ex' => 'vim v8.0',
+ l2 => 'proposal',
+ l1 => 'not in vim',
+ },
+});