kibi-swipl-linux-x64-gnu 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/bin/swipl +0 -0
- package/bin/swipl-win +0 -0
- package/build-manifest.json +70 -0
- package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
- package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
- package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
- package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
- package/lib/swipl/ABI +1 -0
- package/lib/swipl/LICENSE +41 -0
- package/lib/swipl/README.md +116 -0
- package/lib/swipl/app/README.md +25 -0
- package/lib/swipl/app/app.pl +87 -0
- package/lib/swipl/app/pack.pl +350 -0
- package/lib/swipl/app/qlf.pl +521 -0
- package/lib/swipl/app/splfr.pl +177 -0
- package/lib/swipl/app/sys.pl +310 -0
- package/lib/swipl/bin/swipl.home +1 -0
- package/lib/swipl/boot/apply.pl +73 -0
- package/lib/swipl/boot/attvar.pl +344 -0
- package/lib/swipl/boot/autoload.pl +1226 -0
- package/lib/swipl/boot/bags.pl +283 -0
- package/lib/swipl/boot/dcg.pl +388 -0
- package/lib/swipl/boot/dicts.pl +193 -0
- package/lib/swipl/boot/dwim.pl +485 -0
- package/lib/swipl/boot/engines.pl +152 -0
- package/lib/swipl/boot/expand.pl +1628 -0
- package/lib/swipl/boot/gc.pl +65 -0
- package/lib/swipl/boot/history.pl +304 -0
- package/lib/swipl/boot/init.pl +4682 -0
- package/lib/swipl/boot/iri.pl +64 -0
- package/lib/swipl/boot/license.pl +390 -0
- package/lib/swipl/boot/load.pl +81 -0
- package/lib/swipl/boot/messages.pl +2521 -0
- package/lib/swipl/boot/packs.pl +306 -0
- package/lib/swipl/boot/predopts.pl +154 -0
- package/lib/swipl/boot/qlf.pl +141 -0
- package/lib/swipl/boot/rc.pl +263 -0
- package/lib/swipl/boot/syspred.pl +1634 -0
- package/lib/swipl/boot/tabling.pl +2321 -0
- package/lib/swipl/boot/threads.pl +42 -0
- package/lib/swipl/boot/toplevel.pl +2248 -0
- package/lib/swipl/boot/topvars.pl +261 -0
- package/lib/swipl/boot.prc +0 -0
- package/lib/swipl/cmake/swipl.cmake +131 -0
- package/lib/swipl/customize/README.md +23 -0
- package/lib/swipl/customize/edit +101 -0
- package/lib/swipl/customize/init.pl +164 -0
- package/lib/swipl/demo/README.md +33 -0
- package/lib/swipl/demo/likes.pl +44 -0
- package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
- package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
- package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
- package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
- package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
- package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
- package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
- package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
- package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
- package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
- package/lib/swipl/doc/packages/examples/http/README.md +98 -0
- package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
- package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
- package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
- package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
- package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
- package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
- package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
- package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
- package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
- package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
- package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
- package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
- package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
- package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
- package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
- package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
- package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
- package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
- package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
- package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
- package/lib/swipl/include/SWI-Prolog.h +1544 -0
- package/lib/swipl/include/SWI-Stream.h +537 -0
- package/lib/swipl/include/Yap/YapInterface.h +283 -0
- package/lib/swipl/include/sicstus/sicstus.h +452 -0
- package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
- package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
- package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
- package/lib/swipl/lib/x86_64-linux/files.so +0 -0
- package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
- package/lib/swipl/lib/x86_64-linux/json.so +0 -0
- package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
- package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
- package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
- package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
- package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
- package/lib/swipl/lib/x86_64-linux/process.so +0 -0
- package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
- package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
- package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
- package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
- package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
- package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
- package/lib/swipl/lib/x86_64-linux/time.so +0 -0
- package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
- package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
- package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
- package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
- package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
- package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
- package/lib/swipl/library/INDEX.pl +1020 -0
- package/lib/swipl/library/aggregate.pl +755 -0
- package/lib/swipl/library/ansi_term.pl +653 -0
- package/lib/swipl/library/apply.pl +426 -0
- package/lib/swipl/library/apply_macros.pl +497 -0
- package/lib/swipl/library/arithmetic.pl +320 -0
- package/lib/swipl/library/assoc.pl +522 -0
- package/lib/swipl/library/atom.pl +169 -0
- package/lib/swipl/library/backcomp.pl +688 -0
- package/lib/swipl/library/base32.pl +291 -0
- package/lib/swipl/library/base64.pl +441 -0
- package/lib/swipl/library/broadcast.pl +161 -0
- package/lib/swipl/library/build/cmake.pl +137 -0
- package/lib/swipl/library/build/conan.pl +232 -0
- package/lib/swipl/library/build/make.pl +168 -0
- package/lib/swipl/library/build/tools.pl +825 -0
- package/lib/swipl/library/charsio.pl +195 -0
- package/lib/swipl/library/check.pl +1097 -0
- package/lib/swipl/library/check_installation.pl +912 -0
- package/lib/swipl/library/clp/INDEX.pl +157 -0
- package/lib/swipl/library/clp/bounds.pl +2036 -0
- package/lib/swipl/library/clp/clp_distinct.pl +263 -0
- package/lib/swipl/library/clp/clp_events.pl +92 -0
- package/lib/swipl/library/clp/clpb.pl +1896 -0
- package/lib/swipl/library/clp/clpfd.pl +7906 -0
- package/lib/swipl/library/clp/simplex.pl +1580 -0
- package/lib/swipl/library/codesio.pl +182 -0
- package/lib/swipl/library/coinduction.pl +183 -0
- package/lib/swipl/library/console_input.pl +289 -0
- package/lib/swipl/library/csv.pl +611 -0
- package/lib/swipl/library/ctypes.pl +161 -0
- package/lib/swipl/library/date.pl +370 -0
- package/lib/swipl/library/dcg/INDEX.pl +35 -0
- package/lib/swipl/library/dcg/basics.pl +514 -0
- package/lib/swipl/library/dcg/high_order.pl +227 -0
- package/lib/swipl/library/debug.pl +499 -0
- package/lib/swipl/library/dialect/bim.pl +186 -0
- package/lib/swipl/library/dialect/commons.pl +77 -0
- package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
- package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
- package/lib/swipl/library/dialect/hprolog.pl +314 -0
- package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
- package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
- package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
- package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
- package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
- package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
- package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
- package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
- package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
- package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
- package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
- package/lib/swipl/library/dialect/sicstus.pl +582 -0
- package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
- package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
- package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
- package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
- package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
- package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
- package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
- package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
- package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
- package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
- package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
- package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
- package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
- package/lib/swipl/library/dialect/sicstus4.pl +200 -0
- package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
- package/lib/swipl/library/dialect/xsb/README.md +20 -0
- package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
- package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
- package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
- package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
- package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
- package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
- package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
- package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
- package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
- package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
- package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
- package/lib/swipl/library/dialect/xsb/source.pl +308 -0
- package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
- package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
- package/lib/swipl/library/dialect/xsb/string.pl +76 -0
- package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
- package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
- package/lib/swipl/library/dialect/xsb.pl +688 -0
- package/lib/swipl/library/dialect/yap/README.TXT +8 -0
- package/lib/swipl/library/dialect/yap.pl +283 -0
- package/lib/swipl/library/dialect.pl +123 -0
- package/lib/swipl/library/dicts.pl +399 -0
- package/lib/swipl/library/dif.pl +426 -0
- package/lib/swipl/library/edinburgh.pl +138 -0
- package/lib/swipl/library/edit.pl +783 -0
- package/lib/swipl/library/error.pl +495 -0
- package/lib/swipl/library/exceptions.pl +231 -0
- package/lib/swipl/library/explain.pl +543 -0
- package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
- package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
- package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
- package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
- package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
- package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
- package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
- package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
- package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
- package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
- package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
- package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
- package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
- package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
- package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
- package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
- package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
- package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
- package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
- package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
- package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
- package/lib/swipl/library/ext/chr/chr.pl +686 -0
- package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
- package/lib/swipl/library/ext/clib/cgi.pl +86 -0
- package/lib/swipl/library/ext/clib/crypt.pl +44 -0
- package/lib/swipl/library/ext/clib/filesex.pl +644 -0
- package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
- package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
- package/lib/swipl/library/ext/clib/md5.pl +68 -0
- package/lib/swipl/library/ext/clib/memfile.pl +61 -0
- package/lib/swipl/library/ext/clib/process.pl +573 -0
- package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
- package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
- package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
- package/lib/swipl/library/ext/clib/sched.pl +85 -0
- package/lib/swipl/library/ext/clib/sha.pl +162 -0
- package/lib/swipl/library/ext/clib/socket.pl +1102 -0
- package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
- package/lib/swipl/library/ext/clib/streampool.pl +136 -0
- package/lib/swipl/library/ext/clib/syslog.pl +180 -0
- package/lib/swipl/library/ext/clib/time.pl +194 -0
- package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
- package/lib/swipl/library/ext/clib/uid.pl +220 -0
- package/lib/swipl/library/ext/clib/unix.pl +317 -0
- package/lib/swipl/library/ext/clib/uri.pl +530 -0
- package/lib/swipl/library/ext/clib/uuid.pl +207 -0
- package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
- package/lib/swipl/library/ext/http/http/README.md +34 -0
- package/lib/swipl/library/ext/http/http/ax.pl +189 -0
- package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
- package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
- package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
- package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
- package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
- package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
- package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
- package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
- package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
- package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
- package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
- package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
- package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
- package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
- package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
- package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
- package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
- package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
- package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
- package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
- package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
- package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
- package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
- package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
- package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
- package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
- package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
- package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
- package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
- package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
- package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
- package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
- package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
- package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
- package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
- package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
- package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
- package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
- package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
- package/lib/swipl/library/ext/http/http/hub.pl +600 -0
- package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
- package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
- package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
- package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
- package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
- package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
- package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
- package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
- package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
- package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
- package/lib/swipl/library/ext/json/INDEX.pl +36 -0
- package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
- package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
- package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
- package/lib/swipl/library/ext/json/http/json.pl +48 -0
- package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
- package/lib/swipl/library/ext/json/json.pl +1215 -0
- package/lib/swipl/library/ext/json/json_convert.pl +681 -0
- package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
- package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
- package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
- package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
- package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
- package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
- package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
- package/lib/swipl/library/ext/nlp/isub.pl +162 -0
- package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
- package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
- package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
- package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
- package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
- package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
- package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
- package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
- package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
- package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
- package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
- package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
- package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
- package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
- package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
- package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
- package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
- package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
- package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
- package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
- package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
- package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
- package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
- package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
- package/lib/swipl/library/ext/ssl/saml.pl +609 -0
- package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
- package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
- package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
- package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
- package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
- package/lib/swipl/library/fastrw.pl +105 -0
- package/lib/swipl/library/files.pl +80 -0
- package/lib/swipl/library/gensym.pl +111 -0
- package/lib/swipl/library/git.pl +1027 -0
- package/lib/swipl/library/hashtable.pl +365 -0
- package/lib/swipl/library/heaps.pl +252 -0
- package/lib/swipl/library/hotfix.pl +239 -0
- package/lib/swipl/library/http/jquery.pl +103 -0
- package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
- package/lib/swipl/library/increval.pl +217 -0
- package/lib/swipl/library/intercept.pl +263 -0
- package/lib/swipl/library/iostream.pl +237 -0
- package/lib/swipl/library/iri_scheme/file.pl +70 -0
- package/lib/swipl/library/lazy_lists.pl +481 -0
- package/lib/swipl/library/listing.pl +1362 -0
- package/lib/swipl/library/lists.pl +860 -0
- package/lib/swipl/library/lynx/INDEX.pl +14 -0
- package/lib/swipl/library/lynx/format.pl +380 -0
- package/lib/swipl/library/lynx/html_style.pl +129 -0
- package/lib/swipl/library/lynx/html_text.pl +865 -0
- package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
- package/lib/swipl/library/macros.pl +451 -0
- package/lib/swipl/library/main.pl +1200 -0
- package/lib/swipl/library/make.pl +197 -0
- package/lib/swipl/library/modules.pl +129 -0
- package/lib/swipl/library/nb_rbtrees.pl +267 -0
- package/lib/swipl/library/nb_set.pl +203 -0
- package/lib/swipl/library/obfuscate.pl +115 -0
- package/lib/swipl/library/occurs.pl +241 -0
- package/lib/swipl/library/operators.pl +182 -0
- package/lib/swipl/library/option.pl +388 -0
- package/lib/swipl/library/optparse.pl +966 -0
- package/lib/swipl/library/ordsets.pl +518 -0
- package/lib/swipl/library/oset.pl +160 -0
- package/lib/swipl/library/pairs.pl +187 -0
- package/lib/swipl/library/persistency.pl +713 -0
- package/lib/swipl/library/pio.pl +47 -0
- package/lib/swipl/library/portray_text.pl +277 -0
- package/lib/swipl/library/pprint.pl +940 -0
- package/lib/swipl/library/predicate_options.pl +975 -0
- package/lib/swipl/library/prolog_autoload.pl +233 -0
- package/lib/swipl/library/prolog_breakpoints.pl +396 -0
- package/lib/swipl/library/prolog_clause.pl +1104 -0
- package/lib/swipl/library/prolog_code.pl +416 -0
- package/lib/swipl/library/prolog_codewalk.pl +1248 -0
- package/lib/swipl/library/prolog_colour.pl +3301 -0
- package/lib/swipl/library/prolog_colour.qlf +0 -0
- package/lib/swipl/library/prolog_config.pl +154 -0
- package/lib/swipl/library/prolog_coverage.pl +1333 -0
- package/lib/swipl/library/prolog_debug.pl +404 -0
- package/lib/swipl/library/prolog_deps.pl +675 -0
- package/lib/swipl/library/prolog_evaluable.pl +234 -0
- package/lib/swipl/library/prolog_format.pl +219 -0
- package/lib/swipl/library/prolog_history.pl +161 -0
- package/lib/swipl/library/prolog_jiti.pl +333 -0
- package/lib/swipl/library/prolog_locale.pl +61 -0
- package/lib/swipl/library/prolog_metainference.pl +307 -0
- package/lib/swipl/library/prolog_pack.pl +3906 -0
- package/lib/swipl/library/prolog_profile.pl +346 -0
- package/lib/swipl/library/prolog_qlfmake.pl +533 -0
- package/lib/swipl/library/prolog_source.pl +1188 -0
- package/lib/swipl/library/prolog_stack.pl +794 -0
- package/lib/swipl/library/prolog_trace.pl +365 -0
- package/lib/swipl/library/prolog_versions.pl +347 -0
- package/lib/swipl/library/prolog_wrap.pl +164 -0
- package/lib/swipl/library/prolog_xref.pl +3090 -0
- package/lib/swipl/library/prolog_xref.qlf +0 -0
- package/lib/swipl/library/pure_input.pl +266 -0
- package/lib/swipl/library/qpforeign.pl +695 -0
- package/lib/swipl/library/qsave.pl +1516 -0
- package/lib/swipl/library/quasi_quotations.pl +300 -0
- package/lib/swipl/library/quintus.pl +437 -0
- package/lib/swipl/library/random.pl +459 -0
- package/lib/swipl/library/rbtrees.pl +1153 -0
- package/lib/swipl/library/readln.pl +256 -0
- package/lib/swipl/library/readutil.pl +304 -0
- package/lib/swipl/library/record.pl +544 -0
- package/lib/swipl/library/rwlocks.pl +172 -0
- package/lib/swipl/library/sandbox.pl +1384 -0
- package/lib/swipl/library/semweb/dc.rdfs +198 -0
- package/lib/swipl/library/semweb/eor.rdfs +95 -0
- package/lib/swipl/library/semweb/owl.owl +287 -0
- package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
- package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
- package/lib/swipl/library/settings.pl +755 -0
- package/lib/swipl/library/shell.pl +462 -0
- package/lib/swipl/library/shlib.pl +670 -0
- package/lib/swipl/library/solution_sequences.pl +439 -0
- package/lib/swipl/library/sort.pl +119 -0
- package/lib/swipl/library/statistics.pl +541 -0
- package/lib/swipl/library/streams.pl +118 -0
- package/lib/swipl/library/strings.pl +469 -0
- package/lib/swipl/library/system.pl +95 -0
- package/lib/swipl/library/tables.pl +381 -0
- package/lib/swipl/library/tableutil.pl +771 -0
- package/lib/swipl/library/tabling.pl +42 -0
- package/lib/swipl/library/terms.pl +457 -0
- package/lib/swipl/library/theme/auto.pl +61 -0
- package/lib/swipl/library/theme/dark.pl +455 -0
- package/lib/swipl/library/theme/light.pl +45 -0
- package/lib/swipl/library/thread.pl +810 -0
- package/lib/swipl/library/thread_pool.pl +508 -0
- package/lib/swipl/library/threadutil.pl +574 -0
- package/lib/swipl/library/tty.pl +316 -0
- package/lib/swipl/library/ugraphs.pl +644 -0
- package/lib/swipl/library/unicode/INDEX.pl +6 -0
- package/lib/swipl/library/unicode/blocks.pl +414 -0
- package/lib/swipl/library/url.pl +1129 -0
- package/lib/swipl/library/utf8.pl +145 -0
- package/lib/swipl/library/varnumbers.pl +221 -0
- package/lib/swipl/library/vm.pl +251 -0
- package/lib/swipl/library/wfs.pl +205 -0
- package/lib/swipl/library/when.pl +263 -0
- package/lib/swipl/library/writef.pl +278 -0
- package/lib/swipl/library/www_browser.pl +251 -0
- package/lib/swipl/library/yall.pl +574 -0
- package/lib/swipl/library/zip.pl +211 -0
- package/lib/swipl/swipl.home +1 -0
- package/lib/vendor/libcrypto.so.3 +0 -0
- package/lib/vendor/libpcre2-8.so.0 +0 -0
- package/lib/vendor/libssl.so.3 +0 -0
- package/lib/vendor/libz.so.1 +0 -0
- package/licenses/OpenSSL-LICENSE.txt +177 -0
- package/licenses/PCRE2-COPYING +5 -0
- package/licenses/README.md +12 -0
- package/licenses/SWI-Prolog-LICENSE +41 -0
- package/licenses/zlib-LICENSE +22 -0
- package/package.json +27 -0
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
/* Part of SWI-Prolog
|
|
2
|
+
|
|
3
|
+
Author: Jan Wielemaker
|
|
4
|
+
E-mail: jan@swi-prolog.org
|
|
5
|
+
WWW: http://www.swi-prolog.org
|
|
6
|
+
Copyright (c) 2020, SWI-Prolog Solutions b.v
|
|
7
|
+
All rights reserved.
|
|
8
|
+
|
|
9
|
+
Redistribution and use in source and binary forms, with or without
|
|
10
|
+
modification, are permitted provided that the following conditions
|
|
11
|
+
are met:
|
|
12
|
+
|
|
13
|
+
1. Redistributions of source code must retain the above copyright
|
|
14
|
+
notice, this list of conditions and the following disclaimer.
|
|
15
|
+
|
|
16
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
17
|
+
notice, this list of conditions and the following disclaimer in
|
|
18
|
+
the documentation and/or other materials provided with the
|
|
19
|
+
distribution.
|
|
20
|
+
|
|
21
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
22
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
23
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
24
|
+
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
25
|
+
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
26
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
27
|
+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
28
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
29
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
30
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
31
|
+
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
32
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
:- module(strings,
|
|
36
|
+
[ dedent_lines/3, % +In,-Out,+Options
|
|
37
|
+
indent_lines/3, % +Prefix,+In,-Out
|
|
38
|
+
indent_lines/4, % :Pred,+Prefix,+In,-Out
|
|
39
|
+
interpolate_string/4, % +In,-Out,+Map,+Options
|
|
40
|
+
string_lines/2, % ?In,?Lines
|
|
41
|
+
string/4 % Quasi quotation support
|
|
42
|
+
]).
|
|
43
|
+
:- autoload(library(apply), [include/3, foldl/4, maplist/3, maplist/2]).
|
|
44
|
+
:- autoload(library(error), [existence_error/2, must_be/2]).
|
|
45
|
+
:- autoload(library(lists), [member/2, append/3]).
|
|
46
|
+
:- autoload(library(option), [option/3]).
|
|
47
|
+
:- autoload(library(quasi_quotations),
|
|
48
|
+
[quasi_quotation_syntax/1, with_quasi_quotation_input/3]).
|
|
49
|
+
:- autoload(library(dcg/basics),
|
|
50
|
+
[string/3, prolog_var_name/3, string_without/4, eos//0]).
|
|
51
|
+
|
|
52
|
+
:- meta_predicate
|
|
53
|
+
interpolate_string(:, -, +, +),
|
|
54
|
+
indent_lines(1, +, +, -).
|
|
55
|
+
|
|
56
|
+
:- quasi_quotation_syntax(string).
|
|
57
|
+
|
|
58
|
+
/** <module> String utilities
|
|
59
|
+
|
|
60
|
+
This module provides string handling utilities, currently notably for
|
|
61
|
+
dealing with multi-line strings and _interpolation_. The library
|
|
62
|
+
provides a couple of primitives as well definitions for the `string`
|
|
63
|
+
_quasi quotation_ syntax. The latter allows for constructing both single
|
|
64
|
+
line and multi-line long strings based on template interpolation. Below
|
|
65
|
+
is a simple example using the quasi quotation syntax.
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
test(To) :-
|
|
70
|
+
write({|string(To)||
|
|
71
|
+
| Dear {To},
|
|
72
|
+
|
|
|
73
|
+
| I'm happy to announce a string interpolation quasi quoter.
|
|
74
|
+
|}.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
__Warning__
|
|
78
|
+
|
|
79
|
+
The general purpose string interpolation implemented by this library
|
|
80
|
+
should __not__ be used to create strings for a formal language such as
|
|
81
|
+
HTML, JavaScript, SQL, etc. because the result will be subject to
|
|
82
|
+
__injection attacks__, providing a serious __security risc__. The core
|
|
83
|
+
idea of quasi quotation is to know about the target language and
|
|
84
|
+
interpolate Prolog data into the template __while respecting the syntax
|
|
85
|
+
of the target language__, notable to __escape certain characters where
|
|
86
|
+
needed__. See also library(http/html_write) and library(http/js_write)
|
|
87
|
+
which define quasi quotation rules for HTML and JavaScript.
|
|
88
|
+
|
|
89
|
+
@see format/3 can format to a string as well. The library(lynx/format)
|
|
90
|
+
provides primitive to wrap long strings.
|
|
91
|
+
@see The core system provides many additional string processing
|
|
92
|
+
predicates.
|
|
93
|
+
@tbd There are probably many other high level string predicates that
|
|
94
|
+
belong in this library. For example, predicates similar to the
|
|
95
|
+
functions in https://docs.python.org/3/library/textwrap.html
|
|
96
|
+
*/
|
|
97
|
+
|
|
98
|
+
%! string(+Content, +Args, +Binding, -DOM)
|
|
99
|
+
%
|
|
100
|
+
% Implements the quasi quotation syntax `string`. If the first
|
|
101
|
+
% character of the content is a newline (i.e., there is a newline
|
|
102
|
+
% _immediately_ after the ``||`` token) this first uses
|
|
103
|
+
% dedent_lines/3 to the remove common white space prefix from the
|
|
104
|
+
% lines. This is called with the option chars("\s\t|"), i.e., also
|
|
105
|
+
% removing ``|`` characters and tab(8).
|
|
106
|
+
%
|
|
107
|
+
% If the quasi quotation syntax carries arguments (e.g., string(To)),
|
|
108
|
+
% the string is compiled into a function that produces the result of
|
|
109
|
+
% interpolating the arguments into the template. See user functions on
|
|
110
|
+
% dict objects. If there are no arguments, the result is simply the
|
|
111
|
+
% final string.
|
|
112
|
+
%
|
|
113
|
+
% @see interpolate_string/4 for the interpolation syntax.
|
|
114
|
+
% @see Section for examples and discussion.
|
|
115
|
+
% @tbd Specify tab width and allow for {@Goal} templates.
|
|
116
|
+
|
|
117
|
+
string(Content, Args, Binding, DOM) :-
|
|
118
|
+
must_be(list, Binding),
|
|
119
|
+
include(qq_var(Args), Binding, QQDict),
|
|
120
|
+
with_quasi_quotation_input(Content, Stream,
|
|
121
|
+
read_string(Stream, _, String)),
|
|
122
|
+
( string_concat("\n", String1, String)
|
|
123
|
+
-> dedent_lines(String1, String2, [tab(8), chars("\s\t|")])
|
|
124
|
+
; String2 = String
|
|
125
|
+
),
|
|
126
|
+
( prolog_load_context(module, Module)
|
|
127
|
+
-> true
|
|
128
|
+
; Module = user % typein?
|
|
129
|
+
),
|
|
130
|
+
( Args == []
|
|
131
|
+
-> DOM = String2
|
|
132
|
+
; comp_interpolate(String2, Compiled, QQDict, [module(Module)]),
|
|
133
|
+
DOM =.. ['.',strings{type:string},exec(Compiled, QQDict)]
|
|
134
|
+
).
|
|
135
|
+
|
|
136
|
+
qq_var(Vars, _=Var) :- member(V, Vars), V == Var, !.
|
|
137
|
+
|
|
138
|
+
_Dict.exec(Compiled, Map) := String :-
|
|
139
|
+
exec_interpolate(Compiled, String, Map).
|
|
140
|
+
|
|
141
|
+
%! interpolate_string(:In, -Out, +Map, +Options)
|
|
142
|
+
%
|
|
143
|
+
% Establish a string from a template by replacing patterns. Supported
|
|
144
|
+
% patterns are:
|
|
145
|
+
%
|
|
146
|
+
% - {Name}
|
|
147
|
+
% If Map contains `Name=Value`, insert `Value` using write/1.
|
|
148
|
+
% If `Name` does not appear in Map, raise an existence error.
|
|
149
|
+
% `Name` must satisfy the rules for a Prolog variable.
|
|
150
|
+
% - {Name,Default}
|
|
151
|
+
% As above, but if `Name` does not appear in Map, use `Value`
|
|
152
|
+
% - {@Goal}
|
|
153
|
+
% Insert the output (to `current_output`) of `Goal` here.
|
|
154
|
+
% For safety reasons only accepted if Options contains
|
|
155
|
+
% `goals(true)`
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
interpolate_string(Module:In, Out, Map, Options) :-
|
|
159
|
+
comp_interpolate(In, Compiled, Map, [module(Module)|Options]),
|
|
160
|
+
exec_interpolate(Compiled, Out, Map).
|
|
161
|
+
|
|
162
|
+
comp_interpolate(In, Compiled, Map, Options) :-
|
|
163
|
+
string_codes(In, Codes),
|
|
164
|
+
phrase(interpolate(Compiled, [], Map, Options), Codes).
|
|
165
|
+
|
|
166
|
+
interpolate([PreS,Action|T0], T, Map, Options) -->
|
|
167
|
+
string(Pre),
|
|
168
|
+
"{", interpolate_pattern(Action, Options), "}",
|
|
169
|
+
!,
|
|
170
|
+
{ string_codes(PreS, Pre) },
|
|
171
|
+
interpolate(T0, T, Map, Options).
|
|
172
|
+
interpolate(T0, T, _Map, _Options) -->
|
|
173
|
+
string(Pre),
|
|
174
|
+
eos,
|
|
175
|
+
( { Pre == [] }
|
|
176
|
+
-> { T0 = T }
|
|
177
|
+
; { string_codes(PreS, Pre),
|
|
178
|
+
T0 = [PreS|T]
|
|
179
|
+
}
|
|
180
|
+
).
|
|
181
|
+
|
|
182
|
+
interpolate_pattern(Pattern, _) -->
|
|
183
|
+
prolog_var_name(Name),
|
|
184
|
+
!,
|
|
185
|
+
( ","
|
|
186
|
+
-> default_value(Default),
|
|
187
|
+
{ Pattern = var(Name, Default) }
|
|
188
|
+
; { Pattern = var(Name) }
|
|
189
|
+
).
|
|
190
|
+
interpolate_pattern(goal(Goal), Options) -->
|
|
191
|
+
{ option(goals(true), Options, false) },
|
|
192
|
+
"@",
|
|
193
|
+
!,
|
|
194
|
+
goal(Goal, Options).
|
|
195
|
+
|
|
196
|
+
default_value(String) -->
|
|
197
|
+
string_without("}", Codes),
|
|
198
|
+
{ string_codes(String, Codes) }.
|
|
199
|
+
|
|
200
|
+
goal(M:Goal, Options) -->
|
|
201
|
+
string_without("}", Codes),
|
|
202
|
+
{ option(module(M), Options, user),
|
|
203
|
+
string_codes(String, Codes),
|
|
204
|
+
term_string(Goal, String)
|
|
205
|
+
}.
|
|
206
|
+
|
|
207
|
+
exec_interpolate(Compiled, String, Map) :-
|
|
208
|
+
maplist(exec_interpolate1(Map), Compiled, Parts),
|
|
209
|
+
atomics_to_string(Parts, String).
|
|
210
|
+
|
|
211
|
+
exec_interpolate1(Map, var(Var), Out) :-
|
|
212
|
+
!,
|
|
213
|
+
( memberchk(Var = Value, Map)
|
|
214
|
+
-> format(string(Out), '~w', Value)
|
|
215
|
+
; existence_error(template_var, Var)
|
|
216
|
+
).
|
|
217
|
+
exec_interpolate1(Map, var(Var, Default), Out) :-
|
|
218
|
+
!,
|
|
219
|
+
( memberchk(Var = Value, Map)
|
|
220
|
+
-> true
|
|
221
|
+
; Value = Default
|
|
222
|
+
),
|
|
223
|
+
format(string(Out), '~w', Value).
|
|
224
|
+
exec_interpolate1(_Map, goal(Goal), Out) :-
|
|
225
|
+
!,
|
|
226
|
+
format(string(Out), '~@', [Goal]).
|
|
227
|
+
exec_interpolate1(_, String, String).
|
|
228
|
+
|
|
229
|
+
%! string_lines(?String, ?Lines) is det.
|
|
230
|
+
%
|
|
231
|
+
% True when String represents Lines. This follows the normal text
|
|
232
|
+
% convention that a line is defined as a possible empty string
|
|
233
|
+
% followed by a newline character ("\n"). E.g.
|
|
234
|
+
%
|
|
235
|
+
% ```
|
|
236
|
+
% ?- string_lines("a\nb\n", L).
|
|
237
|
+
% L = ["a", "b"].
|
|
238
|
+
% ?- string_lines(S, ["a", "b"]).
|
|
239
|
+
% S = "a\nb\n".
|
|
240
|
+
% ```
|
|
241
|
+
%
|
|
242
|
+
% This predicate is a true _relation_ if both arguments are in
|
|
243
|
+
% canonical form, i.e. all text is represented as strings and the
|
|
244
|
+
% first argument ends with a newline. The implementation tolerates
|
|
245
|
+
% non-canonical input: other types than strings are accepted and
|
|
246
|
+
% String does not need to end with a newline.
|
|
247
|
+
%
|
|
248
|
+
% @see split_string/4. Using split_string(String, "\n", "", Lines) on
|
|
249
|
+
% a string that ends in a newline adds an additional empty string
|
|
250
|
+
% compared to string_lines/2.
|
|
251
|
+
|
|
252
|
+
string_lines(String, Lines) :-
|
|
253
|
+
( var(String)
|
|
254
|
+
-> must_be(list, Lines),
|
|
255
|
+
append(Lines, [""], Lines1),
|
|
256
|
+
atomics_to_string(Lines1, "\n", String)
|
|
257
|
+
; split_string(String, "\n", "", Lines0),
|
|
258
|
+
( append(Lines, [""], Lines0)
|
|
259
|
+
-> true
|
|
260
|
+
; Lines = Lines0
|
|
261
|
+
)
|
|
262
|
+
).
|
|
263
|
+
|
|
264
|
+
%! dedent_lines(+In, -Out, +Options)
|
|
265
|
+
%
|
|
266
|
+
% Remove shared indentation for all lines in a string. Lines are separated
|
|
267
|
+
% by "\n" -- conversion to and from external forms (such as "\r\n") are
|
|
268
|
+
% typically done by the I/O predicates.
|
|
269
|
+
% A final "\n" is preserved.
|
|
270
|
+
%
|
|
271
|
+
% Options:
|
|
272
|
+
%
|
|
273
|
+
% - tab(N)
|
|
274
|
+
% Assume tabs at columns of with N. When omitted, tabs are
|
|
275
|
+
% taken literally and only exact matches are removed.
|
|
276
|
+
% - chars(CodesOrString)
|
|
277
|
+
% Characters to remove. This can notably be used to remove
|
|
278
|
+
% additional characters such as `*` or `|`. Default is
|
|
279
|
+
% `" \t"`.
|
|
280
|
+
|
|
281
|
+
dedent_lines(In, Out, Options) :-
|
|
282
|
+
option(tab(Tab), Options, 0),
|
|
283
|
+
option(chars(Chars), Options, "\s\t"),
|
|
284
|
+
string_codes(Sep, Chars),
|
|
285
|
+
How = s(Tab,Sep),
|
|
286
|
+
split_string(In, "\n", "", Lines),
|
|
287
|
+
foldl(common_indent(How), Lines, _, Indent0),
|
|
288
|
+
( prepare_delete(Indent0, Indent)
|
|
289
|
+
-> maplist(dedent_line(Tab, Indent), Lines, Dedented),
|
|
290
|
+
atomics_to_string(Dedented, "\n", Out)
|
|
291
|
+
; length(Lines, NLines),
|
|
292
|
+
NewLines is NLines - 1,
|
|
293
|
+
length(Codes, NewLines),
|
|
294
|
+
maplist(=(0'\n), Codes),
|
|
295
|
+
string_codes(Out, Codes)
|
|
296
|
+
).
|
|
297
|
+
|
|
298
|
+
prepare_delete(Var, _) :- % All blank lines
|
|
299
|
+
var(Var),
|
|
300
|
+
!,
|
|
301
|
+
fail.
|
|
302
|
+
prepare_delete(Width, Width) :-
|
|
303
|
+
integer(Width),
|
|
304
|
+
!.
|
|
305
|
+
prepare_delete(Codes, String) :-
|
|
306
|
+
string_codes(String, Codes).
|
|
307
|
+
|
|
308
|
+
common_indent(s(0,Sep), Line, Indent0, Indent) :-
|
|
309
|
+
!,
|
|
310
|
+
line_indent(Line, Indent1, Sep),
|
|
311
|
+
join_indent(Indent0, Indent1, Indent).
|
|
312
|
+
common_indent(s(Tab,Sep), Line, Indent0, Indent) :-
|
|
313
|
+
!,
|
|
314
|
+
line_indent_width(Line, Indent1, Tab, Sep),
|
|
315
|
+
join_indent_width(Indent0, Indent1, Indent).
|
|
316
|
+
|
|
317
|
+
%! line_indent(+Line, -Indent, +Sep) is det.
|
|
318
|
+
%
|
|
319
|
+
% Determine the indentation as a list of character codes. If the
|
|
320
|
+
% line only holds white space Indent is left unbound.
|
|
321
|
+
|
|
322
|
+
line_indent(Line, Indent, Sep) :-
|
|
323
|
+
string_codes(Line, Codes),
|
|
324
|
+
code_indent(Codes, Indent0, Sep),
|
|
325
|
+
( is_list(Indent0)
|
|
326
|
+
-> Indent = Indent0
|
|
327
|
+
; true
|
|
328
|
+
).
|
|
329
|
+
|
|
330
|
+
code_indent([H|T0], [H|T], Sep) :-
|
|
331
|
+
string_code(_, Sep, H),
|
|
332
|
+
!,
|
|
333
|
+
code_indent(T0, T, Sep).
|
|
334
|
+
code_indent([], _, _) :-
|
|
335
|
+
!.
|
|
336
|
+
code_indent(_, [], _).
|
|
337
|
+
|
|
338
|
+
join_indent(Var, Indent, Indent) :-
|
|
339
|
+
var(Var),
|
|
340
|
+
!.
|
|
341
|
+
join_indent(Indent, Var, Indent) :-
|
|
342
|
+
var(Var),
|
|
343
|
+
!.
|
|
344
|
+
join_indent(Indent1, Indent2, Indent) :-
|
|
345
|
+
shared_prefix(Indent1, Indent2, Indent).
|
|
346
|
+
|
|
347
|
+
shared_prefix(Var, Prefix, Prefix) :-
|
|
348
|
+
var(Var),
|
|
349
|
+
!.
|
|
350
|
+
shared_prefix(Prefix, Var, Prefix) :-
|
|
351
|
+
var(Var),
|
|
352
|
+
!.
|
|
353
|
+
shared_prefix([H|T0], [H|T1], [H|T]) :-
|
|
354
|
+
!,
|
|
355
|
+
shared_prefix(T0, T1, T).
|
|
356
|
+
shared_prefix(_, _, []).
|
|
357
|
+
|
|
358
|
+
%! line_indent_width(+Line, -Indent, +Tab, +Sep) is det.
|
|
359
|
+
%
|
|
360
|
+
% Determine the indentation as a column, compensating for the Tab
|
|
361
|
+
% width. This is used if the tab(Width) option is provided.
|
|
362
|
+
|
|
363
|
+
line_indent_width(Line, Indent, Tab, Sep) :-
|
|
364
|
+
string_codes(Line, Codes),
|
|
365
|
+
code_indent_width(Codes, 0, Indent, Tab, Sep).
|
|
366
|
+
|
|
367
|
+
code_indent_width([H|T], Indent0, Indent, Tab, Sep) :-
|
|
368
|
+
string_code(_, Sep, H),
|
|
369
|
+
!,
|
|
370
|
+
update_pos(H, Indent0, Indent1, Tab),
|
|
371
|
+
code_indent_width(T, Indent1, Indent, Tab, Sep).
|
|
372
|
+
code_indent_width([], _, _, _, _) :-
|
|
373
|
+
!.
|
|
374
|
+
code_indent_width(_, Indent, Indent, _, _).
|
|
375
|
+
|
|
376
|
+
join_indent_width(Var, Indent, Indent) :-
|
|
377
|
+
var(Var),
|
|
378
|
+
!.
|
|
379
|
+
join_indent_width(Indent, Var, Indent) :-
|
|
380
|
+
var(Var),
|
|
381
|
+
!.
|
|
382
|
+
join_indent_width(Indent0, Indent1, Indent) :-
|
|
383
|
+
Indent is min(Indent0, Indent1).
|
|
384
|
+
|
|
385
|
+
%! dedent_line(+Tab, +Indent, +String, -Dedented)
|
|
386
|
+
%
|
|
387
|
+
% Dedent a single line according to Tab and Indent. Indent is either
|
|
388
|
+
% an integer, deleting the first Indent characters or a string,
|
|
389
|
+
% deleting the string literally.
|
|
390
|
+
|
|
391
|
+
dedent_line(_Tab, Indent, String, Dedented) :-
|
|
392
|
+
string(Indent),
|
|
393
|
+
!,
|
|
394
|
+
( string_concat(Indent, Dedented, String)
|
|
395
|
+
-> true
|
|
396
|
+
; Dedented = "" % or ""?
|
|
397
|
+
).
|
|
398
|
+
dedent_line(Tab, Indent, String, Dedented) :-
|
|
399
|
+
string_codes(String, Codes),
|
|
400
|
+
delete_width(0, Indent, Codes, Codes1, Tab),
|
|
401
|
+
string_codes(Dedented, Codes1).
|
|
402
|
+
|
|
403
|
+
delete_width(Here, Indent, Codes, Codes, _) :-
|
|
404
|
+
Here =:= Indent,
|
|
405
|
+
!.
|
|
406
|
+
delete_width(Here, Indent, Codes0, Codes, _) :-
|
|
407
|
+
Here > Indent,
|
|
408
|
+
!,
|
|
409
|
+
NSpaces is Here-Indent,
|
|
410
|
+
length(Spaces, NSpaces),
|
|
411
|
+
maplist(=(0'\s), Spaces),
|
|
412
|
+
append(Spaces, Codes0, Codes).
|
|
413
|
+
delete_width(Here, Indent, [H|T0], T, Tab) :-
|
|
414
|
+
!,
|
|
415
|
+
update_pos(H, Here, Here1, Tab),
|
|
416
|
+
delete_width(Here1, Indent, T0, T, Tab).
|
|
417
|
+
delete_width(_, _, [], [], _).
|
|
418
|
+
|
|
419
|
+
update_pos(0'\t, Here0, Here, Tab) :-
|
|
420
|
+
!,
|
|
421
|
+
Here is ((Here0+Tab)//Tab)*Tab.
|
|
422
|
+
update_pos(_, Here0, Here, _) :-
|
|
423
|
+
Here is Here0 + 1.
|
|
424
|
+
|
|
425
|
+
%! indent_lines(+Prefix, +In, -Out) is det.
|
|
426
|
+
%
|
|
427
|
+
% Add Prefix to the beginning of lines in In. Lines are separated by
|
|
428
|
+
% "\n" -- conversion to and from external forms (such as "\r\n") are
|
|
429
|
+
% typically done by the I/O predicates. Lines that consist entirely of
|
|
430
|
+
% whitespace are left as-is.
|
|
431
|
+
|
|
432
|
+
indent_lines(Prefix, In, Out) :-
|
|
433
|
+
indent_lines(ignore_whitespace_line, Prefix, In, Out).
|
|
434
|
+
|
|
435
|
+
%! indent_lines(:Filter, +Prefix, +In, -Out) is det.
|
|
436
|
+
%
|
|
437
|
+
% Similar to indent_lines/3, but only adds Prefix to lines for which
|
|
438
|
+
% call(Filter, Line) succeeds.
|
|
439
|
+
|
|
440
|
+
indent_lines(Pred, Prefix, In, Out) :-
|
|
441
|
+
% Use split_string/4 rather than string_lines/2, to preserve final "\n".
|
|
442
|
+
split_string(In, "\n", "", Lines0),
|
|
443
|
+
( append(Lines, [""], Lines0)
|
|
444
|
+
-> maplist(concat_to_string(Pred, Prefix), Lines, IndentedLines0),
|
|
445
|
+
append(IndentedLines0, [""], IndentedLines),
|
|
446
|
+
atomics_to_string(IndentedLines, "\n", Out)
|
|
447
|
+
; Lines = Lines0,
|
|
448
|
+
maplist(concat_to_string(Pred, Prefix), Lines, IndentedLines),
|
|
449
|
+
atomics_to_string(IndentedLines, "\n", Out)
|
|
450
|
+
).
|
|
451
|
+
|
|
452
|
+
ignore_whitespace_line(Str) :-
|
|
453
|
+
\+ split_string(Str, "", " \t", [""]).
|
|
454
|
+
|
|
455
|
+
:- meta_predicate concat_to_string(:, +, +, -).
|
|
456
|
+
|
|
457
|
+
concat_to_string(Pred, Prefix, Line, Out) :-
|
|
458
|
+
( call(Pred, Line)
|
|
459
|
+
-> atomics_to_string([Prefix, Line], Out)
|
|
460
|
+
; Out = Line
|
|
461
|
+
).
|
|
462
|
+
|
|
463
|
+
/*******************************
|
|
464
|
+
* SANDBOX *
|
|
465
|
+
*******************************/
|
|
466
|
+
|
|
467
|
+
:- multifile sandbox:safe_primitive/1.
|
|
468
|
+
|
|
469
|
+
sandbox:safe_primitive(strings:string(_,_,_,_)).
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/* Part of SWI-Prolog
|
|
2
|
+
|
|
3
|
+
Author: Jan Wielemaker
|
|
4
|
+
E-mail: J.Wielemaker@vu.nl
|
|
5
|
+
WWW: http://www.swi-prolog.org
|
|
6
|
+
Copyright (c) 1985-2011, University of Amsterdam
|
|
7
|
+
VU University Amsterdam
|
|
8
|
+
All rights reserved.
|
|
9
|
+
|
|
10
|
+
Redistribution and use in source and binary forms, with or without
|
|
11
|
+
modification, are permitted provided that the following conditions
|
|
12
|
+
are met:
|
|
13
|
+
|
|
14
|
+
1. Redistributions of source code must retain the above copyright
|
|
15
|
+
notice, this list of conditions and the following disclaimer.
|
|
16
|
+
|
|
17
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
18
|
+
notice, this list of conditions and the following disclaimer in
|
|
19
|
+
the documentation and/or other materials provided with the
|
|
20
|
+
distribution.
|
|
21
|
+
|
|
22
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
25
|
+
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
26
|
+
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
27
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
28
|
+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
29
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
30
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
31
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
32
|
+
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
33
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
:- module(swi_system_utilities,
|
|
37
|
+
[ lock_predicate/1,
|
|
38
|
+
unlock_predicate/1,
|
|
39
|
+
system_mode/1,
|
|
40
|
+
system_module/0
|
|
41
|
+
]).
|
|
42
|
+
:- autoload(library(error),[must_be/2]).
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/** <module> System utilities
|
|
46
|
+
|
|
47
|
+
This module provides some tools to deal with system predicates. System
|
|
48
|
+
predicates cannot be traced or redefined.
|
|
49
|
+
|
|
50
|
+
@deprecated Use :- set_prolog_flag(generate_debug_info, false) to
|
|
51
|
+
hide predicate internals from the tracer.
|
|
52
|
+
@tbd Move this functionality to prolog flags.
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
%! system_mode(+Boolean) is det.
|
|
56
|
+
%
|
|
57
|
+
% Switch the system into system or user mode. When in system mode,
|
|
58
|
+
% system predicates loose most of their special properties, so it
|
|
59
|
+
% becomes possible to trace and even redefine them.
|
|
60
|
+
%
|
|
61
|
+
% @deprecated New code should use the prolog flag =access_level=.
|
|
62
|
+
|
|
63
|
+
system_mode(Val) :-
|
|
64
|
+
must_be(boolean, Val),
|
|
65
|
+
( Val == true
|
|
66
|
+
-> set_prolog_flag(access_level, system)
|
|
67
|
+
; set_prolog_flag(access_level, user)
|
|
68
|
+
).
|
|
69
|
+
|
|
70
|
+
%! system_module
|
|
71
|
+
%
|
|
72
|
+
% Any predicate defined after this declaraction uptil the end of
|
|
73
|
+
% the file will become a system predicate. Normally invoked by a
|
|
74
|
+
% directive immediately following the module declaration.
|
|
75
|
+
|
|
76
|
+
system_module :-
|
|
77
|
+
set_prolog_flag(generate_debug_info, false).
|
|
78
|
+
|
|
79
|
+
:- meta_predicate
|
|
80
|
+
lock_predicate(:),
|
|
81
|
+
unlock_predicate(:).
|
|
82
|
+
|
|
83
|
+
%! lock_predicate(+PredInd)
|
|
84
|
+
%
|
|
85
|
+
% Transform a predicate into a system predicate.
|
|
86
|
+
|
|
87
|
+
lock_predicate(PredInd) :-
|
|
88
|
+
'$set_predicate_attribute'(PredInd, system, true).
|
|
89
|
+
|
|
90
|
+
%! unlock_predicate(+PredInd)
|
|
91
|
+
%
|
|
92
|
+
% Transform a system predicate into a normal system predicate.
|
|
93
|
+
|
|
94
|
+
unlock_predicate(PredInd) :-
|
|
95
|
+
'$set_predicate_attribute'(PredInd, system, false).
|