# HG changeset patch # User Michael Schloh von Bennewitz # Date 1316099415 -7200 # Node ID 14df3eec63f9c143c1d29314f2d887a5af91f497 # Parent 6aa415912c9b486e9ec27e862b277d9c63410c30 Import package vendor original specs for necessary manipulations, requiring YAML module for upcoming davical package database update. diff -r 6aa415912c9b -r 14df3eec63f9 yaml/yaml.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/yaml/yaml.patch Thu Sep 15 17:10:15 2011 +0200 @@ -0,0 +1,126 @@ +Index: YAML-AppConfig-0.16/Makefile.PL +--- YAML-AppConfig-0.16/Makefile.PL.orig 2006-07-02 23:21:51 +0200 ++++ YAML-AppConfig-0.16/Makefile.PL 2009-11-27 13:24:07 +0100 +@@ -21,6 +21,7 @@ + eval "require $info->[0]; 0;"; + push @yamls, @$info unless $@; + } +- die "YAML >= 0.38 or YAML::Syck >= 0 required.\n" unless @yamls; ++ # die "YAML >= 0.38 or YAML::Syck >= 0 required.\n" unless @yamls; + return @yamls; + } ++ +Index: syck-0.70/lib/bytecode.c +--- syck-0.70/lib/bytecode.c.orig 2009-09-30 19:29:34 +0200 ++++ syck-0.70/lib/bytecode.c 2009-11-27 13:24:07 +0100 +@@ -7,6 +7,10 @@ + * + * Copyright (C) 2003 why the lucky stiff + */ ++ ++#include ++#include ++ + #include "syck.h" + + #if GRAM_FILES_HAVE_TAB_SUFFIX +Index: syck-0.70/lib/handler.c +--- syck-0.70/lib/handler.c.orig 2009-09-30 19:29:34 +0200 ++++ syck-0.70/lib/handler.c 2009-11-27 13:24:07 +0100 +@@ -7,6 +7,9 @@ + * Copyright (C) 2003 why the lucky stiff + */ + ++#include ++#include ++ + #include "syck.h" + + SYMID +Index: syck-0.70/lib/implicit.c +--- syck-0.70/lib/implicit.c.orig 2009-09-30 19:29:34 +0200 ++++ syck-0.70/lib/implicit.c 2009-11-27 13:24:07 +0100 +@@ -8,6 +8,7 @@ + * Copyright (C) 2003 why the lucky stiff + */ + ++#include + #include "syck.h" + + #define YYCTYPE char +Index: syck-0.70/lib/node.c +--- syck-0.70/lib/node.c.orig 2009-09-30 19:29:34 +0200 ++++ syck-0.70/lib/node.c 2009-11-27 13:24:07 +0100 +@@ -7,6 +7,9 @@ + * Copyright (C) 2003 why the lucky stiff + */ + ++#include ++#include ++ + #include "syck.h" + + /* +Index: syck-0.70/lib/syck.c +--- syck-0.70/lib/syck.c.orig 2009-09-30 19:29:34 +0200 ++++ syck-0.70/lib/syck.c 2009-11-27 13:24:07 +0100 +@@ -7,6 +7,7 @@ + * Copyright (C) 2003 why the lucky stiff + */ + #include ++#include + #include + + #include "syck.h" +@@ -67,12 +68,13 @@ + + ASSERT( str != NULL ); + beg = str->ptr; ++ + if ( max_size >= 0 ) + { + max_size -= skip; +- if ( max_size <= 0 ) max_size = 0; +- else str->ptr += max_size; ++ if ( max_size < 0 ) max_size = 0; + ++ str->ptr += max_size; + if ( str->ptr > str->end ) + { + str->ptr = str->end; +Index: syck-0.70/lib/syck.h +--- syck-0.70/lib/syck.h.orig 2009-09-30 19:29:34 +0200 ++++ syck-0.70/lib/syck.h 2009-11-27 13:24:07 +0100 +@@ -36,6 +36,8 @@ + + #include + #include ++#include ++#include + #include + #ifdef HAVE_ST_H + #include +Index: syck-0.70/lib/token.c +--- syck-0.70/lib/token.c.orig 2009-09-30 19:29:34 +0200 ++++ syck-0.70/lib/token.c 2009-11-27 13:24:07 +0100 +@@ -7,6 +7,8 @@ + * + * Copyright (C) 2003 why the lucky stiff + */ ++#include ++#include + #include "syck.h" + + #if GRAM_FILES_HAVE_TAB_SUFFIX +Index: syck-0.70/lib/yaml2byte.c +--- syck-0.70/lib/yaml2byte.c.orig 2009-09-30 19:29:34 +0200 ++++ syck-0.70/lib/yaml2byte.c 2009-11-27 13:24:31 +0100 +@@ -11,6 +11,8 @@ + */ + #include "syck.h" + #include ++#include ++#include + #define YAMLBYTE_UTF8 + #include "yamlbyte.h" + diff -r 6aa415912c9b -r 14df3eec63f9 yaml/yaml.spec --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/yaml/yaml.spec Thu Sep 15 17:10:15 2011 +0200 @@ -0,0 +1,379 @@ +## +## yaml.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2011 OpenPKG Foundation e.V. +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package version +%define V_libsyck 0.70 +%define V_libyaml 0.1.4 +%define V_perl_yaml 0.73 +%define V_perl_yaml_syck 1.17 +%define V_perl_yaml_tiny 1.50 +%define V_perl_yaml_appconfig 0.16 +%define V_perl_yaml_libyaml 0.35 +%define V_perl_yaml_active 1.100810 +%define V_perl_yaml_object 0.04 +%define V_perl_io_yaml 0.08 +%define V_yaml_javascript 0.03 +%define V_yaml_spec 2004-12-28 +%define V_java_jvyaml 0.2.1 +%define V_java_jyaml 1.3 +%define V_php_syck 0.9.3 +%define V_php_yaml 1.0.1 +%define V_php_spyc 0.4.5 + +# package information +Name: yaml +Summary: YAML Ain't Markup Language (YAML) +URL: http://yaml.org/ +Vendor: B. Ingerson, C. Evans, O. Ben-Kiki et al. +Packager: OpenPKG Foundation e.V. +Distribution: OpenPKG Community +Class: PLUS +Group: Language +License: BSD/Artistic +Version: 0 +Release: 20110624 + +# package options +%option with_perl no +%option with_php no +%option with_ruby no +%option with_java no + +# list of sources +Source0: http://cloud.github.com/downloads/indeyets/syck/syck-%{V_libsyck}.tar.gz +Source1: http://pyyaml.org/download/libyaml/yaml-%{V_libyaml}.tar.gz +Source2: http://www.cpan.org/modules/by-module/YAML/YAML-%{V_perl_yaml}.tar.gz +Source3: http://www.cpan.org/modules/by-module/YAML/YAML-Syck-%{V_perl_yaml_syck}.tar.gz +Source4: http://www.cpan.org/modules/by-module/YAML/YAML-Tiny-%{V_perl_yaml_tiny}.tar.gz +Source5: http://www.cpan.org/modules/by-module/YAML/YAML-AppConfig-%{V_perl_yaml_appconfig}.tar.gz +Source6: http://www.cpan.org/modules/by-module/YAML/YAML-LibYAML-%{V_perl_yaml_libyaml}.tar.gz +Source7: http://www.cpan.org/modules/by-module/YAML/YAML-Active-%{V_perl_yaml_active}.tar.gz +Source8: http://www.cpan.org/authors/id/N/NK/NKUITSE/IO-YAML-%{V_perl_io_yaml}.tar.gz +Source9: http://osdn.dl.sourceforge.net/yaml-javascript/yaml-javascript-%{V_yaml_javascript}.tar.gz +Source10: https://jvyaml.dev.java.net/files/documents/5215/41455/jvyaml-src-%{V_java_jvyaml}.tar.gz +Source11: http://switch.dl.sourceforge.net/jyaml/jyaml-src-%{V_java_jyaml}.tgz +Source12: http://www.cpan.org/authors/id/E/EI/EIDOLON/YAML-Object-%{V_perl_yaml_object}.tar.gz +Source13: http://pecl.php.net/get/syck-%{V_php_syck}.tgz +Source14: http://pecl.php.net/get/yaml-%{V_php_yaml}.tgz +Source15: http://spyc.googlecode.com/files/spyc-%{V_php_spyc}.zip +Source16: http://yaml.org/spec/history/%{V_yaml_spec}/%{V_yaml_spec}.pdf +Source17: yaml.yml +Patch0: yaml.patch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20100101, make, bison +PreReq: OpenPKG, openpkg >= 20100101 +%if "%{with_perl}" == "yes" +BuildPreReq: perl, perl-openpkg, perl-module +PreReq: perl +%endif +%if "%{with_php}" == "yes" +BuildPreReq: php, autoconf +PreReq: php +%endif +%if "%{with_ruby}" == "yes" +BuildPreReq: ruby +PreReq: ruby +%endif +%if "%{with_java}" == "yes" +BuildPreReq: java, JAVA-JDK, ant +PreReq: java, JAVA-JDK +%endif + +%description + YAML Ain't Markup Language (YAML) is an international collaboration + to make a sophisticated data serialization language which is both + human readable and computationally powerful. This OpenPKG package + provides C, and JavaScript plus optionally Perl, PHP, and Ruby APIs + for the generation and parsing of YAML. + +%track + prog yaml:libsyck = { + version = %{V_libsyck} + url = http://github.com/indeyets/syck/downloads + regex = syck-(__VER__)\.tar\.gz + } + prog yaml:libyaml = { + version = %{V_libyaml} + url = http://pyyaml.org/download/libyaml/ + regex = yaml-(__VER__)\.tar\.gz + } + prog yaml:YAML = { + version = %{V_perl_yaml} + url = http://www.cpan.org/modules/by-module/YAML/ + regex = YAML-(__VER__)\.tar\.gz + } + prog yaml:YAML-Syck = { + version = %{V_perl_yaml_syck} + url = http://www.cpan.org/modules/by-module/YAML/ + regex = YAML-Syck-(__VER__)\.tar\.gz + } + prog yaml:YAML-Tiny = { + version = %{V_perl_yaml_tiny} + url = http://www.cpan.org/modules/by-module/YAML/ + regex = YAML-Tiny-(__VER__)\.tar\.gz + } + prog yaml:YAML-AppConfig = { + version = %{V_perl_yaml_appconfig} + url = http://www.cpan.org/modules/by-module/YAML/ + regex = YAML-AppConfig-(__VER__)\.tar\.gz + } + prog yaml:YAML-LibYAML = { + version = %{V_perl_yaml_libyaml} + url = http://www.cpan.org/modules/by-module/YAML/ + regex = YAML-LibYAML-(__VER__)\.tar\.gz + } + prog yaml:YAML-Active = { + comment = "rse: 1.08 requires Class::Accessor::Complex and this too many others" + version = %{V_perl_yaml_active} + url = http://www.cpan.org/modules/by-module/YAML/ + regex = YAML-Active-(__VER__)\.tar\.gz + } + prog yaml:IO-YAML = { + version = %{V_perl_io_yaml} + url = http://www.cpan.org/authors/id/N/NK/NKUITSE/ + regex = IO-YAML-(__VER__)\.tar\.gz + } + prog yaml:yaml-javascript = { + version = %{V_yaml_javascript} + url = http://sourceforge.net/projects/yaml-javascript/files/ + regex = yaml-javascript-(__VER__)\.tar\.gz + } + prog yaml:yaml-spec = { + disabled + comment = "rse: website references not existing 2004-12-30 and no updates since recently anyway" + version = %{V_yaml_spec} + url = http://yaml.org/spec/ + regex = (\d{4}-\d{2}-\d{2})\.pdf + } + prog yaml:java-jvyaml = { + version = %{V_java_jvyaml} + url = http://jvyaml.dev.java.net/servlets/ProjectDocumentList + regex = jvyaml-src-(__VER__)\.tar\.gz + } + prog yaml:java-jyaml = { + version = %{V_java_jyaml} + url = http://sourceforge.net/projects/jyaml/files/ + regex = jyaml-src-(__VER__)\.tgz + } + prog yaml:YAML-Object = { + version = %{V_perl_yaml_object} + url = http://www.cpan.org/authors/id/E/EI/EIDOLON/ + regex = YAML-Object-(__VER__)\.tar\.gz + } + prog yaml:PHP-Syck = { + version = %{V_php_syck} + url = http://pecl.php.net/package/syck + regex = syck-(__VER__)\.tgz + } + prog yaml:PHP-YAML = { + version = %{V_php_yaml} + url = http://pecl.php.net/package/yaml + regex = yaml-(__VER__)\.tgz + } + prog yaml:PHP-spyc = { + version = %{V_php_spyc} + url = http://spyc.googlecode.com/files/ + regex = spyc-(__VER__)\.zip + } + +%prep + %setup -q -c + %setup -q -T -D -a 1 + %setup -q -T -D -a 2 + %setup -q -T -D -a 3 + %setup -q -T -D -a 4 + %setup -q -T -D -a 5 + %setup -q -T -D -a 6 + %setup -q -T -D -a 7 + %setup -q -T -D -a 8 + %setup -q -T -D -a 9 + %setup -q -T -D -a 10 + %setup -q -T -D -a 11 + %setup -q -T -D -a 12 + %setup -q -T -D -a 13 + %setup -q -T -D -a 14 + %setup -q -T -D -a 15 + %patch -p0 + +%build + # build YAML C API + ( cd yaml-%{V_libyaml} + CC="%{l_cc}" \ + CFLAGS="%{l_cflags -O}" \ + ./configure \ + --prefix=%{l_prefix} \ + --disable-shared + %{l_make} %{l_mflags -O} + ) || exit $? + + # build Syck C API + ( cd syck-%{V_libsyck} + CC="%{l_cc}" \ + CFLAGS="%{l_cflags -O}" \ + ./configure \ + --prefix=%{l_prefix} \ + --disable-shared + %{l_make} %{l_mflags} + ) || exit $? + + # build PHP API +%if "%{with_php}" == "yes" + ( cd syck-%{V_php_syck} + %{l_prefix}/bin/phpize + CC="%{l_cc}" \ + CFLAGS="%{l_cflags -O}" \ + CPPFLAGS="-I`pwd`/../syck-%{V_libsyck}/lib" \ + LDFLAGS="-L`pwd`/../syck-%{V_libsyck}/lib" \ + ./configure \ + --with-syck=`pwd`/../syck-%{V_libsyck} + %{l_make} %{l_mflags} + ) || exit $? + ( cd yaml-%{V_php_yaml} + %{l_prefix}/bin/phpize + CC="%{l_cc}" \ + CFLAGS="%{l_cflags -O}" \ + CPPFLAGS="-I`pwd`/../yaml-%{V_libyaml}/include" \ + LDFLAGS="-L`pwd`/../yaml-%{V_libyaml}/src/.libs" \ + ./configure \ + --with-yaml=`pwd`/../yaml-%{V_libyaml} + %{l_make} %{l_mflags} + ) || exit $? +%endif + + # build Ruby API +%if "%{with_ruby}" == "yes" + ( cd syck-%{V_libsyck}/ext/ruby + %{l_prefix}/bin/ruby install.rb config --prefix=%{l_prefix} + %{l_prefix}/bin/ruby install.rb setup + ) || exit $? +%endif + + # build Perl API +%if "%{with_perl}" == "yes" + %{l_prefix}/bin/perl-openpkg prepare + %{l_prefix}/bin/perl-openpkg -d YAML-%{V_perl_yaml} configure build + %{l_prefix}/bin/perl-openpkg -d YAML-Syck-%{V_perl_yaml_syck} configure build + %{l_prefix}/bin/perl-openpkg -d YAML-Tiny-%{V_perl_yaml_tiny} configure build + %{l_prefix}/bin/perl-openpkg -d YAML-AppConfig-%{V_perl_yaml_appconfig} configure build + %{l_prefix}/bin/perl-openpkg -d YAML-LibYAML-%{V_perl_yaml_libyaml} configure build + %{l_prefix}/bin/perl-openpkg -d YAML-Active-%{V_perl_yaml_active} configure build + %{l_prefix}/bin/perl-openpkg -d YAML-Object-%{V_perl_yaml_object} configure build + %{l_prefix}/bin/perl-openpkg -d IO-YAML-%{V_perl_io_yaml} configure build +%endif + + # build Java API +%if "%{with_java}" == "yes" + ( cd jvyaml-%{V_java_jvyaml} + %{l_prefix}/bin/ant + ) || exit $? + ( cd jyaml + %{l_prefix}/bin/ant + ) || exit $? +%endif + +%install + + # install YAML C API + ( cd yaml-%{V_libyaml} + %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT" + ) || exit $? + + # install Syck C API + ( cd syck-%{V_libsyck} + %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT" + ) || exit $? + + # install PHP API +%if "%{with_php}" == "yes" + ( cd syck-%{V_php_syck} + %{l_make} %{l_mflags} install INSTALL_ROOT=$RPM_BUILD_ROOT + ) || exit $? + ( cd yaml-%{V_php_yaml} + %{l_make} %{l_mflags} install INSTALL_ROOT=$RPM_BUILD_ROOT + ) || exit $? + ( cd spyc-%{V_php_spyc} + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/share/yaml + %{l_shtool} install -c -m 644 \ + spyc.php $RPM_BUILD_ROOT%{l_prefix}/share/yaml/ + ) || exit $? +%endif + + # install Ruby API +%if "%{with_ruby}" == "yes" + ( cd syck-%{V_libsyck}/ext/ruby + %{l_prefix}/bin/ruby install.rb install --prefix=$RPM_BUILD_ROOT + ) || exit $? +%endif + + # install Perl API +%if "%{with_perl}" == "yes" + %{l_prefix}/bin/perl-openpkg -d YAML-%{V_perl_yaml} install + %{l_prefix}/bin/perl-openpkg -d YAML-Syck-%{V_perl_yaml_syck} install + %{l_prefix}/bin/perl-openpkg -d YAML-Tiny-%{V_perl_yaml_tiny} install + %{l_prefix}/bin/perl-openpkg -d YAML-AppConfig-%{V_perl_yaml_appconfig} install + %{l_prefix}/bin/perl-openpkg -d YAML-LibYAML-%{V_perl_yaml_libyaml} install + %{l_prefix}/bin/perl-openpkg -d YAML-Active-%{V_perl_yaml_active} install + %{l_prefix}/bin/perl-openpkg -d YAML-Object-%{V_perl_yaml_object} install + %{l_prefix}/bin/perl-openpkg -d IO-YAML-%{V_perl_io_yaml} install + %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup +%else + >perl-openpkg-files +%endif + + # install Java API +%if "%{with_java}" == "yes" + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/lib/yaml + %{l_shtool} install -c -m 644 \ + jvyaml-%{V_java_jvyaml}/lib/jvyaml.jar \ + $RPM_BUILD_ROOT%{l_prefix}/lib/yaml/ + %{l_shtool} install -c -m 644 \ + jyaml/dist/jyaml-*.jar \ + $RPM_BUILD_ROOT%{l_prefix}/lib/yaml/jyaml.jar +%endif + + # install JavaScript API + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/share/yaml + %{l_shtool} install -c -m 644 \ + yaml-javascript-%{V_yaml_javascript}/yaml_dumper.js \ + $RPM_BUILD_ROOT%{l_prefix}/share/yaml/ + + # install YAML specification and quick reference + %{l_shtool} install -c -m 644 \ + %{SOURCE %{V_yaml_spec}.pdf} \ + $RPM_BUILD_ROOT%{l_prefix}/share/yaml/yaml.pdf + %{l_shtool} install -c -m 644 \ + %{SOURCE yaml.yml} \ + $RPM_BUILD_ROOT%{l_prefix}/share/yaml/ + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} `cat perl-openpkg-files` + +%files -f files + +%clean + diff -r 6aa415912c9b -r 14df3eec63f9 yaml/yaml.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/yaml/yaml.yml Thu Sep 15 17:10:15 2011 +0200 @@ -0,0 +1,62 @@ +%YAML 1.1 # Reference card +--- +Collection indicators: + '? ' : Key indicator. + ': ' : Value indicator. + '- ' : Nested series entry indicator. + ', ' : Separate in-line branch entries. + '[]' : Surround in-line series branch. + '{}' : Surround in-line keyed branch. +Scalar indicators: + '''' : Surround in-line unescaped scalar ('' escaped '). + '"' : Surround in-line escaped scalar (see escape codes below). + '|' : Block scalar indicator. + '>' : Folded scalar indicator. + '-' : Strip chomp modifier ('|-' or '>-'). + '+' : Keep chomp modifier ('|+' or '>+'). + 1-9 : Explicit indentation modifier ('|1' or '>2'). + # Modifiers can be combined ('|2-', '>+1'). +Alias indicators: + '&' : Anchor property. + '*' : Alias indicator. +Tag property: # Usually unspecified. + none : Unspecified tag (automatically resolved by application). + '!' : Non-specific tag (by default, "!!map"/"!!seq"/"!!str"). + '!foo': Primary (by convention, means a local "!foo" tag). + '!!foo': Secondary (by convention, means "tag:yaml.org,2002:foo"). + '!h!foo': Requires "%TAG !h! " (and then means "foo"). + '!': Verbatim tag (always means "foo"). +Document indicators: + '%' : Directive indicator. + '---' : Document header. + '...' : Document terminator. +Misc indicators: + ' #' : Throwaway comment indicator. + '`@' : Both reserved for future use. +Special keys: + '=' : Default "value" mapping key. + '<<' : Merge keys from another mapping. +Core types: # Default automatic tags. + '!!map' : [ Hash table, dictionary, mapping ] + '!!seq' : [ List, array, tuple, vector, sequence ] + '!!str' : Unicode string +More types: + '!!set' : { cherries, plums, apples } + '!!omap' : [ one: 1, two: 2 ] +Language Independent Scalar types: + { ~, null } : Null (no value). + { 1234, 0x4D2, 02333 } : [ Decimal int, Hexadecimal int, Octal int ] + { 1_230.15, 12.3015e+02 } : [ Fixed float, Exponential float ] + { .inf, -.Inf, .NAN } : [ Infinity (float), Negative, Not a number ] + { Y, true, Yes, ON } : Boolean true + { n, FALSE, No, off } : Boolean false + ? !!binary > + R0lG...BADS= + : >- + Base 64 binary value. +Escape codes: + Numeric : { "\xXX": 8-bit, "\uXXXX": 16-bit, "\UXXXXXXXX": 32-bit } + Protective: { "\\": '\', "\"": '"', "\ ": ' ', "\": "", "\^": '^' } + C: { "\a": BEL, "\b": BS, "\f": FF, "\n": LF, "\r": CR, "\t": TAB, "\v": VTAB } + Additional: { "\e": ESC, "\0": NUL, "\_": NBSP, "\N": NEL, "\L": LS, "\P": PS } +...