RDF-Endpoint-0.09/000755 000765 000024 00000000000 13156323556 013733 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/Changes000644 000765 000024 00000010615 13156323540 015222 0ustar00gregstaff000000 000000 RDF-Endpoint ============ Created: 2010-06-19 Home page: Bug tracker: Maintainer: Gregory Todd Williams 0.09 2017-09-13 - (Update) Switch from HTML::HTML5::Parser to XML::LibXML parser for RDFa SD generation (#153 from Kjetil Kjernsmo). 0.08 2017-01-05 - (Addition) Replaced use of Config::JFDI with Config::ZOMG (github issue #142). 0.07 2014-08-04 - (Addition) Added Plack::App::RDF::Endpoint. - (Update) Updated RDF::Endpoint to quote raw-value ETag values (github issue #106). - (Update) Updated endpoint.psgi to look for PERLRDF_STORE environment variable. - (Update) Use base64 encoding of tags to get shorter strings (patch from Kjetil Kjernsmo). 0.06 2014-07-01 - (Addition) Add Server header (from Kjetil Kjernsmo via github pull request #93). - (Addition) Added initial support for application/json-problem errors. - (Update) Added Allow header to HTTP 405 responses. - (Update) Added SPARQL 1.1 WG protocol tests. - (Update) Fixed config bug in t/psgi.t. - (Update) Made RDF::Endpoint->new die on invalid config (when both load_data and update options are specified). - (Update) The load_data and update configuration flags cannot both be true at the same time. - (Update) Updated RDF::Endpoint to return a 400 error when datasets are specified both in protocol and query. 0.05 2012-05-28 - (Addition) Let RDF_ENDPOINT_FILE env variable override the Config::JFDI default. - (Addition) Use a default in-memory store if no config file is available. - (Update) Added Service Description resultFormat triples for SPARQL XML and JSON Results. - (Update) Added use of Plack::Builder and Plack::Middleware::AccessLog in default configuration. - (Update) Croak when unable to open file handles - (Update) Fixed bug in handling of update requests. - (Update) Improved HTTP error status code messages. - (Update) Improved conformance with SPARQL 1.1 Protocol spec. - (Update) Removed custom logging code (should be done with Plack middleware). - (Update) Renamed Service Description sd:defaultDatasetDescription property to sd:defaultDataset. - (Update) Require a recent version (0.99) of Plack::Request with support for logging. - (Update) Updated see also link to SPARQL Protocol (1.1). 0.04 2011-07-19 - (Addition) Added RDFa serialization tests (from KjetilK). - (Update) Allow the service description default graph to be a URI or a blank node (based on config value). - (Update) Fixed bug introduced by commit 3fb5e48 causing query results to disappear from HTML results page. - (Update) Require RDF::RDFa::Generator 0.102 (fixes RDFa service description serialization bug). 0.03 2011-06-07 - (Update) Actually dereference correctly endpoint_path, and make the test use root (from kjetilk). - (Update) Add merging of namespace hashes (from kjetilk). - (Update) Make endpoint path configurable (from kjetilk). - (Update) Removed duplicated, hard-coded HTML to allow better customization of HTML (from nichtich). - (Update) Replace new_with_string with new and change docs (from kjetilk). - (Update) Updated service description RDF to use sd:endpoint instead of sd:url (tracking updates in the SD spec). - (Update) style element must go in head (from kjetilk). 0.02 2011-04-16 - (Addition) Added CodeMirror files for syntax highlighting SPARQL query form markup. - (Addition) Added ETag support for query results, varying based on Accept and Accept-Encoding headers, and query string. - (Addition) Added support for POSTing queries and updates directly using the appropriate media types. - (Update) Changes to align with SPARQL Protocol 1.1. - (Update) Fixed caching bug in which browsers would use cached results across endpoint instantiations. - (Update) Moved endpoint-specific configuration variables into top-level 'endpoint' hash. - (Update) Service description is now cached in the RDF::Endpoint object. - (Update) Updated RDF::Endpoint to use a persistent model object across run() calls. - (Update) Updated content negotiation quality values. - (Update) Updated endpoint.psgi to move config parsing and endpoint object construction outside of the request handler. - (Update) Updated tests to test functionality directly via PSGI. 0.01 2010-07-14 - (Addition) First release. RDF-Endpoint-0.09/Changes.ttl000644 000765 000024 00000017134 13156323433 016030 0ustar00gregstaff000000 000000 # -*-n3-*- @prefix dc: . @prefix dcterms: . @prefix foaf: . @prefix doap: . @prefix xsd: . @prefix asc: . @prefix my: . <> dc:title "Changes" ; dc:description "Changes for RDF::Endpoint" ; dc:subject my:project ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.09" ; doap:created "2017-09-13" ; ] ; asc:changes [ asc:update "Switch from HTML::HTML5::Parser to XML::LibXML parser for RDFa SD generation (#153 from Kjetil Kjernsmo)." ; ] ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.08" ; doap:created "2017-01-05" ; ] ; asc:changes [ asc:addition "Replaced use of Config::JFDI with Config::ZOMG (github issue #142)." ; ] ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.07" ; doap:created "2014-08-04" ; ] ; asc:changes [ asc:addition "Added Plack::App::RDF::Endpoint." ; asc:update "Updated RDF::Endpoint to quote raw-value ETag values (github issue #106)." ; asc:update "Use base64 encoding of tags to get shorter strings (patch from Kjetil Kjernsmo)." ; asc:update "Updated endpoint.psgi to look for PERLRDF_STORE environment variable." ; ] ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.06" ; doap:created "2014-07-01" ; ] ; asc:changes [ asc:addition "Add Server header (from Kjetil Kjernsmo via github pull request #93)." ; asc:addition "Added initial support for application/json-problem errors." ; asc:update "Fixed config bug in t/psgi.t." ; asc:update "Added SPARQL 1.1 WG protocol tests." ; asc:update "The load_data and update configuration flags cannot both be true at the same time." ; asc:update "Updated RDF::Endpoint to return a 400 error when datasets are specified both in protocol and query." ; asc:update "Made RDF::Endpoint->new die on invalid config (when both load_data and update options are specified)." ; asc:update "Added Allow header to HTTP 405 responses." ; ] ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.05" ; doap:created "2012-05-28" ; ] ; asc:changes [ asc:addition "Use a default in-memory store if no config file is available." ; asc:addition "Let RDF_ENDPOINT_FILE env variable override the Config::JFDI default." ; asc:update "Fixed bug in handling of update requests." ; asc:update "Improved conformance with SPARQL 1.1 Protocol spec." ; asc:update "Added use of Plack::Builder and Plack::Middleware::AccessLog in default configuration." ; asc:update "Improved HTTP error status code messages." ; asc:update "Added Service Description resultFormat triples for SPARQL XML and JSON Results." ; asc:update "Renamed Service Description sd:defaultDatasetDescription property to sd:defaultDataset." ; asc:update "Croak when unable to open file handles" ; asc:update "Removed custom logging code (should be done with Plack middleware)." ; asc:update "Require a recent version (0.99) of Plack::Request with support for logging." ; asc:update "Updated see also link to SPARQL Protocol (1.1)." ; ] ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.04" ; doap:created "2011-07-19" ; ] ; asc:changes [ asc:addition "Added RDFa serialization tests (from KjetilK)." ; asc:update "Allow the service description default graph to be a URI or a blank node (based on config value)." ; asc:update "Require RDF::RDFa::Generator 0.102 (fixes RDFa service description serialization bug)." ; asc:update "Fixed bug introduced by commit 3fb5e48 causing query results to disappear from HTML results page." ; ] ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.03" ; doap:created "2011-06-07" ; ] ; asc:changes [ asc:update "Removed duplicated, hard-coded HTML to allow better customization of HTML (from nichtich)." ; asc:update "Actually dereference correctly endpoint_path, and make the test use root (from kjetilk)." ; asc:update "Make endpoint path configurable (from kjetilk)." ; asc:update "style element must go in head (from kjetilk)." ; asc:update "Updated service description RDF to use sd:endpoint instead of sd:url (tracking updates in the SD spec)." ; asc:update "Add merging of namespace hashes (from kjetilk)." ; asc:update "Replace new_with_string with new and change docs (from kjetilk)." ; ] ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.02" ; doap:created "2011-04-16" ; ] ; asc:changes [ asc:addition "Added ETag support for query results, varying based on Accept and Accept-Encoding headers, and query string." ; asc:addition "Added support for POSTing queries and updates directly using the appropriate media types." ; asc:addition "Added CodeMirror files for syntax highlighting SPARQL query form markup." ; asc:update "Changes to align with SPARQL Protocol 1.1." ; asc:update "Updated tests to test functionality directly via PSGI." ; asc:update "Updated content negotiation quality values." ; asc:update "Moved endpoint-specific configuration variables into top-level 'endpoint' hash." ; asc:update "Fixed caching bug in which browsers would use cached results across endpoint instantiations." ; asc:update "Service description is now cached in the RDF::Endpoint object." ; asc:update "Updated endpoint.psgi to move config parsing and endpoint object construction outside of the request handler." ; asc:update "Updated RDF::Endpoint to use a persistent model object across run() calls." ; ] ; . dcterms:isVersionOf my:project ; doap:Version [ doap:revision "0.01" ; doap:created "2010-07-14" ; ] ; asc:changes [ asc:addition "First release." ; ] ; . my:project a doap:Project ; doap:name "RDF-Endpoint" ; doap:shortdesc "A SPARQL Protocol Endpoint implementation"@en ; doap:programming-language "Perl" ; doap:homepage ; doap:download-page ; doap:bug-database ; doap:maintainer ; doap:developer ; doap:documenter ; doap:tester ; doap:created "2010-06-19"^^xsd:date ; doap:license ; . a foaf:Person ; foaf:name "Gregory Todd Williams" ; foaf:homepage ; foaf:page ; foaf:mbox ; ; . RDF-Endpoint-0.09/Changes.xml000644 000765 000024 00000027627 13156323540 016034 0ustar00gregstaff000000 000000 2017-09-13 0.09 Switch from HTML::HTML5::Parser to XML::LibXML parser for RDFa SD generation (#153 from Kjetil Kjernsmo). 2011-07-19 0.04 Added RDFa serialization tests (from KjetilK). Allow the service description default graph to be a URI or a blank node (based on config value). Fixed bug introduced by commit 3fb5e48 causing query results to disappear from HTML results page. Require RDF::RDFa::Generator 0.102 (fixes RDFa service description serialization bug). 2011-06-07 0.03 Actually dereference correctly endpoint_path, and make the test use root (from kjetilk). Add merging of namespace hashes (from kjetilk). Make endpoint path configurable (from kjetilk). Removed duplicated, hard-coded HTML to allow better customization of HTML (from nichtich). Replace new_with_string with new and change docs (from kjetilk). Updated service description RDF to use sd:endpoint instead of sd:url (tracking updates in the SD spec). style element must go in head (from kjetilk). 2011-04-16 0.02 Added CodeMirror files for syntax highlighting SPARQL query form markup. Added ETag support for query results, varying based on Accept and Accept-Encoding headers, and query string. Added support for POSTing queries and updates directly using the appropriate media types. Changes to align with SPARQL Protocol 1.1. Fixed caching bug in which browsers would use cached results across endpoint instantiations. Moved endpoint-specific configuration variables into top-level 'endpoint' hash. Service description is now cached in the RDF::Endpoint object. Updated RDF::Endpoint to use a persistent model object across run() calls. Updated content negotiation quality values. Updated endpoint.psgi to move config parsing and endpoint object construction outside of the request handler. Updated tests to test functionality directly via PSGI. 2010-07-14 0.01 First release. 2017-01-05 0.08 Replaced use of Config::JFDI with Config::ZOMG (github issue #142). 2014-08-04 0.07 Added Plack::App::RDF::Endpoint. Updated RDF::Endpoint to quote raw-value ETag values (github issue #106). Updated endpoint.psgi to look for PERLRDF_STORE environment variable. Use base64 encoding of tags to get shorter strings (patch from Kjetil Kjernsmo). 2014-07-01 0.06 Add Server header (from Kjetil Kjernsmo via github pull request #93). Added initial support for application/json-problem errors. Added Allow header to HTTP 405 responses. Added SPARQL 1.1 WG protocol tests. Fixed config bug in t/psgi.t. Made RDF::Endpoint->new die on invalid config (when both load_data and update options are specified). The load_data and update configuration flags cannot both be true at the same time. Updated RDF::Endpoint to return a 400 error when datasets are specified both in protocol and query. 2012-05-28 0.05 Let RDF_ENDPOINT_FILE env variable override the Config::JFDI default. Use a default in-memory store if no config file is available. Added Service Description resultFormat triples for SPARQL XML and JSON Results. Added use of Plack::Builder and Plack::Middleware::AccessLog in default configuration. Croak when unable to open file handles Fixed bug in handling of update requests. Improved HTTP error status code messages. Improved conformance with SPARQL 1.1 Protocol spec. Removed custom logging code (should be done with Plack middleware). Renamed Service Description sd:defaultDatasetDescription property to sd:defaultDataset. Require a recent version (0.99) of Plack::Request with support for logging. Updated see also link to SPARQL Protocol (1.1). Changes for RDF::Endpoint Changes Gregory Todd Williams 2010-06-19 RDF-Endpoint Perl A SPARQL Protocol Endpoint implementation RDF-Endpoint-0.09/inc/000755 000765 000024 00000000000 13156323554 014502 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/lib/000755 000765 000024 00000000000 13156323554 014477 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/LICENSE000644 000765 000024 00000005331 11552456153 014740 0ustar00gregstaff000000 000000 Except as described below, all contents of this package are Copyright (c) 2010 Gregory Todd Williams. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. With the exception of the CodeMirror files enumerated below, the files in this package may also be redistributed and/or modified under the same terms as Perl itself. -------------------------------------------------------------------------------- The following license applies to the CodeMirror (Javascript and CSS) files contained in this package and retrieved from http://codemirror.net/: share/www/css/docs.css share/www/css/sparqlcolors.css share/www/js/codemirror.js share/www/js/editor.js share/www/js/highlight.js share/www/js/mirrorframe.js share/www/js/parsecss.js share/www/js/parsedummy.js share/www/js/parsehtmlmixed.js share/www/js/parsejavascript.js share/www/js/parsesparql.js share/www/js/parsexml.js share/www/js/select.js share/www/js/sparql_form.js share/www/js/stringstream.js share/www/js/tokenize.js share/www/js/tokenizejavascript.js share/www/js/undo.js share/www/js/unittests.js share/www/js/util.js Copyright (c) 2007-2010 Marijn Haverbeke This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Marijn Haverbeke marijnh@gmail.com RDF-Endpoint-0.09/Makefile.PL000644 000765 000024 00000002200 13155015254 015667 0ustar00gregstaff000000 000000 use strict; use warnings; use inc::Module::Install; name 'RDF-Endpoint'; all_from 'lib/RDF/Endpoint.pm'; author 'Gregory Todd Williams '; license 'zlib'; test_requires 'Test::More' => '0.61'; test_requires 'Test::WWW::Mechanize::PSGI' => 0; requires 'JSON' => 0; requires 'Carp' => 0; requires 'File::ShareDir' => 0; requires 'RDF::Trine' => 0.134; requires 'RDF::Query' => 2.905; requires 'RDF::RDFa::Generator' => 0.102; requires 'Plack::Request' => 0.99; requires 'Plack::Response' => 0; requires 'Plack::Middleware::AccessLog' => 0; requires 'Data::Dumper' => 0; requires 'Config::ZOMG' => 0; requires 'HTTP::Negotiate' => 0; requires 'IO::Compress::Gzip' => 0; requires 'XML::LibXML' => 1.70; requires 'HTML::HTML5::Writer' => 0; requires 'Hash::Merge::Simple' => 0; resources( 'homepage' => "http://search.cpan.org/dist/RDF-Endpoint/", 'repository' => "http://github.com/kasei/perlrdf/", ); write_doap_changes; write_doap_changes_xml; install_share; install_script glob('scripts/*'); sign; WriteAll; RDF-Endpoint-0.09/MANIFEST000644 000765 000024 00000002267 13156323554 015071 0ustar00gregstaff000000 000000 README Changes Changes.ttl Changes.xml inc/Module/Install.pm inc/Module/Install/Base.pm inc/Module/Install/Can.pm inc/Module/Install/DOAPChangeSets.pm inc/Module/Install/Fetch.pm inc/Module/Install/Makefile.pm inc/Module/Install/Metadata.pm inc/Module/Install/Scripts.pm inc/Module/Install/Share.pm inc/Module/Install/Win32.pm inc/Module/Install/WriteAll.pm lib/RDF/Endpoint.pm LICENSE Makefile.PL MANIFEST This list of files META.yml rdf_endpoint.json scripts/endpoint.psgi share/index.html share/results.html share/www/favicon.ico share/www/css/docs.css share/www/css/sparqlcolors.css share/www/js/codemirror.js share/www/js/editor.js share/www/js/highlight.js share/www/js/mirrorframe.js share/www/js/parsecss.js share/www/js/parsedummy.js share/www/js/parsehtmlmixed.js share/www/js/parsejavascript.js share/www/js/parsesparql.js share/www/js/parsexml.js share/www/js/select.js share/www/js/sparql_form.js share/www/js/stringstream.js share/www/js/tokenize.js share/www/js/tokenizejavascript.js share/www/js/undo.js share/www/js/unittests.js share/www/js/util.js t/00-load.t t/etag.t t/pod.t t/pod_coverage.t t/psgi.t SIGNATURE Public-key signature (added by MakeMaker) RDF-Endpoint-0.09/META.yml000644 000765 000024 00000002120 13156323540 015170 0ustar00gregstaff000000 000000 --- abstract: 'A SPARQL Protocol Endpoint implementation' author: - 'Gregory Todd Williams ' - 'Gregory Todd Williams ' build_requires: ExtUtils::MakeMaker: 6.59 Test::More: '0.61' Test::WWW::Mechanize::PSGI: 0 configure_requires: ExtUtils::MakeMaker: 6.59 distribution_type: module dynamic_config: 1 generated_by: 'Module::Install version 1.17' license: zlib meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: RDF-Endpoint no_index: directory: - inc - share - t requires: Carp: 0 Config::ZOMG: 0 Data::Dumper: 0 File::ShareDir: 0 HTML::HTML5::Writer: 0 HTTP::Negotiate: 0 Hash::Merge::Simple: 0 IO::Compress::Gzip: 0 JSON: 0 Plack::Middleware::AccessLog: 0 Plack::Request: 0.99 Plack::Response: 0 RDF::Query: 2.905 RDF::RDFa::Generator: 0.102 RDF::Trine: 0.134 XML::LibXML: 1.7 perl: 5.8.0 resources: homepage: http://search.cpan.org/dist/RDF-Endpoint/ license: http://dev.perl.org/licenses/ repository: http://github.com/kasei/perlrdf/ version: '0.09' RDF-Endpoint-0.09/rdf_endpoint.json000644 000765 000024 00000002026 12370032672 017272 0ustar00gregstaff000000 000000 { # "store": "Memory", # "store": "Memory;file:///Users/samofool/foaf.xrdf", # "store" : "DBI;basic;DBI:SQLite:t/data/basic.db;user;pass", "store": "DBI;endpoint;DBI:SQLite:dbname=endpoint.sqlite;;", "endpoint": { "update": true, # allow SPARQL Update operations "load_data": false, # allow loading RDF data via SPARQL Protocol or FROM/FROM NAMED clauses "html": { "resource_links": true, # turn resources into links in HTML query result pages "embed_images": false, # display foaf:Images as images in HTML query result pages "image_width": 200, # with 'embed_images', scale images to this width }, "service_description": { "default": true, # generate dataset description of the default graph "named_graphs": true, # generate dataset description of the available named graphs "related": ["http://dbpedia.org/sparql", "http://kasei.us/sparql"], "software": "http://kasei.us/code/rdf-query/#rdf-query-2.909", "namespaces": { "foaf": "http://xmlns.com/foaf/0.1/", }, }, } } RDF-Endpoint-0.09/README000644 000765 000024 00000002126 13155015254 014604 0ustar00gregstaff000000 000000 RDF::Endpoint - A SPARQL Protocol Endpoint implementation This modules implements the SPARQL Protocol for RDF using the PSGI interface provided by Plack. It may be run with any Plack handler. REQUIREMENTS To install RDF::Endpoint you'll need the following perl modules installed: * JSON * Carp * File::ShareDir * RDF::Trine * RDF::Query * RDF::RDFa::Generator * Plack::Request * Plack::Response * Plack::Middleware::AccessLog * Data::Dumper * Config::ZOMG * HTTP::Negotiate * IO::Compress::Gzip * XML::LibXML * HTML::HTML5::Writer * Hash::Merge::Simple The following additional modules are required for testing the installation: * Test::More * Test::WWW::Mechanize::PSGI INSTALLATION To install, run: perl Makefile.PL make make test make install COPYRIGHT Copyright (C) 2010-2014 Gregory Williams. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. AUTHOR Gregory Williams RDF-Endpoint-0.09/scripts/000755 000765 000024 00000000000 13156323554 015420 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/share/000755 000765 000024 00000000000 13156323554 015033 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/SIGNATURE000644 000765 000024 00000010054 13156323556 015217 0ustar00gregstaff000000 000000 This file contains message digests of all files listed in MANIFEST, signed via the Module::Signature module, version 0.81. To verify the content in this distribution, first make sure you have Module::Signature installed, then type: % cpansign -v It will check each file's integrity, as well as the signature's validity. If "==> Signature verified OK! <==" is not displayed, the distribution may already have been compromised, and you should not run its Makefile.PL or Build.PL. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 SHA1 b0bc9b31f974621704f22946a4a138149c05b845 Changes SHA1 f6e708b2108ba080ca41a9bc8a81069a64972a27 Changes.ttl SHA1 e713d133a95f0d9360cdcd14b2d71e57fa3777c9 Changes.xml SHA1 14a506260237169ed443ed15a269369cee605be3 LICENSE SHA1 a880a04c60560af52246e3e4014b68a1c29e4e36 MANIFEST SHA1 cbd7759d9ee3fc640b7e146ab46b5fca15d2f252 META.yml SHA1 ecf59b06da7774ff442c352f8e9eaffd209e48a7 Makefile.PL SHA1 aa41899f8d0b06e1cac0e5f6b465a0fe46f017b7 README SHA1 05a17c51aceb6435a1eac17137f19911a09e5050 inc/Module/Install.pm SHA1 dc73c2baf4357ad1cc884146147f557a50a29300 inc/Module/Install/Base.pm SHA1 c7f311a5bc5a7f96e9105d5f16a0e13fc596899d inc/Module/Install/Can.pm SHA1 470809a1dbe03e197e74dde79c6af40b5f7f9b26 inc/Module/Install/DOAPChangeSets.pm SHA1 8c8f9ff5b0a536af59814e16a901ce39fbc23299 inc/Module/Install/Fetch.pm SHA1 4f77eb02e104324b08a047585c498146b045613b inc/Module/Install/Makefile.pm SHA1 2f5be6af6098acf6d786a4a7299a34d0c6c04ef9 inc/Module/Install/Metadata.pm SHA1 fa532ce949d1c607589aded93d5ea1d49a27e5d8 inc/Module/Install/Scripts.pm SHA1 f7882569ead92975e7559e169c2a2e86c3de1e57 inc/Module/Install/Share.pm SHA1 aa6723cc4a8d4475026f6ceb28e1f16459e8a11b inc/Module/Install/Win32.pm SHA1 6661285caedfe012cb5a1ca915a422ffc292ae2b inc/Module/Install/WriteAll.pm SHA1 a26945da61ef18683098dbd763602baee5731ce3 lib/RDF/Endpoint.pm SHA1 084485f2e97af1bc0e8e74a72d5f14a57348a368 rdf_endpoint.json SHA1 e9be4ad1506ad066ef2a5efb5b11b6cfacee90fd scripts/endpoint.psgi SHA1 19ac766464ef05698ac985e2a42e87dbb7912f3f share/index.html SHA1 6dd0cf355b49dcb0fdfe9203c68917d5320584f8 share/results.html SHA1 c40ebad09f7e1d92ad0228a0625d730ba2f57b84 share/www/css/docs.css SHA1 398bae2ae66a19ab8976036b50a2d20041b67fe5 share/www/css/sparqlcolors.css SHA1 aa6874f2bad5f0b75b0ff52760f5e6b48ec933ae share/www/favicon.ico SHA1 13fece7654a01193013d3d96528c851bfc79a300 share/www/js/codemirror.js SHA1 d372c911fcc2bd030da800fdeedfbcd6b0100c83 share/www/js/editor.js SHA1 551ff99056361eebfba2a32ea7445502a6eb4f21 share/www/js/highlight.js SHA1 5bff996ab2564db1a998de30cb9e1ae07cbe62b5 share/www/js/mirrorframe.js SHA1 d7540f8390913afc0d58484bf5161cf9b9aad9f8 share/www/js/parsecss.js SHA1 a0028275114eaedf7ddcf57976c99c32ecb2c1d3 share/www/js/parsedummy.js SHA1 39383cdfc93568cc5673e2b71f681e2811fb5463 share/www/js/parsehtmlmixed.js SHA1 d5319247a4b26cafccfd4f26621918f0f4d22ef4 share/www/js/parsejavascript.js SHA1 c6597fb9a5c7969237f7f039f2d0bc6968ef7ce7 share/www/js/parsesparql.js SHA1 ae75f537ad61277a21a8ec423f5deffed8454e22 share/www/js/parsexml.js SHA1 85cdbc16cd1581f441480d91fa5c0a50f234ff0b share/www/js/select.js SHA1 d3261a5ddb7e5835c7abed5d5c343f0ef98637a5 share/www/js/sparql_form.js SHA1 19cc324cce7165c868a60d523b2462c648f20887 share/www/js/stringstream.js SHA1 5fdb14f3db575d0ce6a7113f96ea5a530f4f1941 share/www/js/tokenize.js SHA1 7f581a2b4647f1214d1bc3160eb4e166a1261e4f share/www/js/tokenizejavascript.js SHA1 9bba7456d4a25b23e805bc2d1d5bde61371c4e82 share/www/js/undo.js SHA1 26ff15a8f6c196e8bd9f5d7e7b628a6ee9b0dfaa share/www/js/unittests.js SHA1 201409b1d00a8df0b65b00a1b92ab62d9e0bbd7a share/www/js/util.js SHA1 ab27c130ce49175526943d0ca34d6f7a1197a630 t/00-load.t SHA1 fab81470801945cedad194024a801a99af4e6b2a t/etag.t SHA1 6387af7a5fde0747be5bc9ad2ec15ca9759bd95a t/pod.t SHA1 9115f7ffe1933ad736dc292f3c89595b36ed6aa2 t/pod_coverage.t SHA1 9eb5c0dd1f1e99ad3d05afaae4d3179b714f94a5 t/psgi.t -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org iEYEARECAAYFAlm5p2wACgkQhPK6VMqoyC06OwCeIUgmJ/wAcQt5Cq0dtc5uwrEP j8cAoK5PTiINBybdc3dRGiVEGW7kGMoI =j4Gj -----END PGP SIGNATURE----- RDF-Endpoint-0.09/t/000755 000765 000024 00000000000 13156323554 014174 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/t/00-load.t000755 000765 000024 00000000222 13071772037 015514 0ustar00gregstaff000000 000000 #!perl use Test::More tests => 1; BEGIN { use_ok( 'RDF::Endpoint' ); } diag( "Testing RDF::Endpoint $RDF::Endpoint::VERSION, Perl $], $^X" ); RDF-Endpoint-0.09/t/etag.t000755 000765 000024 00000003320 13071772037 015302 0ustar00gregstaff000000 000000 #!perl use strict; use warnings; use Test::More; use URI::QueryParam; use URI::Escape; use LWP::UserAgent; use HTTP::Request::Common; use Test::WWW::Mechanize::PSGI; use RDF::Endpoint; use RDF::Trine qw(iri); use RDF::Trine::Namespace; my $sd = RDF::Trine::Namespace->new('http://www.w3.org/ns/sparql-service-description#'); my $config = { endpoint => { endpoint_path => '/', update => 1, load_data => 0, html => { resource_links => 1, # turn resources into links in HTML query result pages embed_images => 0, # display foaf:Images as images in HTML query result pages image_width => 200, # with 'embed_images', scale images to this width }, service_description => { default => 1, # generate dataset description of the default graph named_graphs => 1, # generate dataset description of the available named graphs }, }, }; my $model = RDF::Trine::Model->new(); my $end = RDF::Endpoint->new( $model, $config ); my $mech = Test::WWW::Mechanize::PSGI->new( app => sub { my $env = shift; my $req = Plack::Request->new($env); my $resp = $end->run( $req ); return $resp->finalize; }, ); { my $query = 'PREFIX : SELECT ?o WHERE { :rdf_endpoint_test :p ?o }'; my $uri = '/?query=' . uri_escape($query); $mech->get_ok($uri, {Accept => 'application/sparql-results+xml'}, 'got success from query GET'); is( $mech->ct, 'application/sparql-results+xml', 'results are application/sparql-results+xml' ); my $etag = $mech->response->header('ETag'); ok($etag, 'Response has ETag header'); # Valid ETag syntax is from http://tools.ietf.org/html/rfc7232#section-2.3 like($etag, qr[^(W/)?"[\x{21}\x{23}-\x{7e}\x{80}-\x{FF}]*"$], 'ETag is properly quoted'); } done_testing(); RDF-Endpoint-0.09/t/pod.t000644 000765 000024 00000000233 11760736733 015147 0ustar00gregstaff000000 000000 use strict; use warnings; use Test::More; eval "use Test::Pod 1.14"; plan skip_all => "Test::Pod 1.14 required for testing POD" if $@; all_pod_files_ok(); RDF-Endpoint-0.09/t/pod_coverage.t000644 000765 000024 00000000273 11412402225 017002 0ustar00gregstaff000000 000000 use strict; use warnings; use Test::More; eval "use Test::Pod::Coverage 1.04"; plan skip_all => "Test::Pod::Coverage 1.04 required for testing POD coverage" if $@; all_pod_coverage_ok(); RDF-Endpoint-0.09/t/psgi.t000755 000765 000024 00000011150 13071772037 015324 0ustar00gregstaff000000 000000 #!perl use strict; use warnings; use Test::More; use URI::QueryParam; use URI::Escape; use LWP::UserAgent; use HTTP::Request::Common; use Test::WWW::Mechanize::PSGI; use RDF::Endpoint; use RDF::Trine qw(iri); use RDF::Trine::Namespace; my $sd = RDF::Trine::Namespace->new('http://www.w3.org/ns/sparql-service-description#'); my $config = { endpoint => { endpoint_path => '/', update => 1, load_data => 0, html => { resource_links => 1, # turn resources into links in HTML query result pages embed_images => 0, # display foaf:Images as images in HTML query result pages image_width => 200, # with 'embed_images', scale images to this width }, service_description => { default => 1, # generate dataset description of the default graph named_graphs => 1, # generate dataset description of the available named graphs }, }, }; my $model = RDF::Trine::Model->new(); my $end = RDF::Endpoint->new( $model, $config ); my $mech = Test::WWW::Mechanize::PSGI->new( app => sub { my $env = shift; my $req = Plack::Request->new($env); my $resp = $end->run( $req ); return $resp->finalize; }, ); { $mech->get_ok('/'); is( $mech->ct, 'text/html', 'main page text/html' ); $mech->content_lacks('xmlns:http://www.w3.org/1999/02/22-rdf-syntax-ns#="rdf"', 'No broken NS declaration'); $mech->content_contains('xmlns:sd="http://www.w3.org/ns/sparql-service-description#"', 'Correct service description NS declaration'); like($mech->response->header('Server'), qr|RDF::Endpoint/$RDF::Endpoint::VERSION|, 'Server header is there' ); } { $mech->get_ok('/', { Accept => 'application/rdf+xml' }); is( $mech->ct, 'application/rdf+xml', 'RDF/XML service description' ); my $sd_content = $mech->content; my $sdmodel = RDF::Trine::Model->new(); my $e = 'http://endpoint.local/'; RDF::Trine::Parser::RDFXML->parse_into_model( $e, $sd_content, $sdmodel ); ok( $sdmodel->size, 'parsed triples' ); my @st = $sdmodel->get_statements( iri($e), $sd->url, undef ); cmp_ok( scalar(@st), '>', 0, 'expected sd:url triple' ); } { my $query = "select * where {}"; my $uri = '/?query=' . uri_escape($query); $mech->get_ok($uri, {Accept => 'application/sparql-results+xml'}, 'got success from empty query'); is( $mech->ct, 'application/sparql-results+xml', 'SRX media type' ); my $content = $mech->content; my $i = RDF::Trine::Iterator->from_string( $content ); isa_ok( $i, 'RDF::Trine::Iterator::Bindings' ); my $iter = $i->materialize; is( $iter->length, 1, 'expected result count' ); } my $before = $model->size; { my $update = 'PREFIX : INSERT DATA { :rdf_endpoint_test :p "FoooooBAR", 1, _:a }'; my $resp = $mech->post_ok('/', { update => $update }, 'got success from insert POST' ); } my $after = $model->size; is( ($after - $before), 3, 'expected model size after INSERT' ); { my $query = 'PREFIX : SELECT ?o WHERE { :rdf_endpoint_test :p ?o }'; my $uri = '/?query=' . uri_escape($query); $mech->get_ok($uri, {Accept => 'application/sparql-results+xml'}, 'got success from query GET'); my $content = $mech->content; my $iter = RDF::Trine::Iterator->from_string( $content ); my @values; while (my $r = $iter->next) { my $o = $r->{o}; if ($o->isa('RDF::Trine::Node::Blank')) { push(@values, '_'); } else { push(@values, $o->value); } } is_deeply( [sort @values], [qw(1 FoooooBAR _)], 'expected values after INSERT' ); } { my $query = 'PREFIX : SELECT * WHERE { ?s ?p ?o }'; $mech->get_ok("/", "Returns 200"); $mech->title_like(qr/SPARQL/, "Title contains the word SPARQL"); $mech->submit_form_ok( { form_id => 'queryform', fields => { query => $query, 'media-type' => 'text/html' }, }, 'Submitting SELECT query.' ); $mech->title_like(qr/SPARQL/, "Title contains the word SPARQL"); $mech->has_tag('textarea', $query, 'Query is in a textarea in the response'); $mech->has_tag('td', 'FoooooBAR', 'Literal string is in the response'); } { my $update = 'PREFIX : DELETE { :rdf_endpoint_test :p ?o } WHERE { :rdf_endpoint_test ?p ?o }'; my $resp = $mech->post_ok('/', { update => $update }, 'got success from delete POST' ); } { my $query = 'PREFIX : SELECT ?o WHERE { :rdf_endpoint_test ?p ?o }'; my $uri = '/?query=' . uri_escape($query); $mech->get_ok($uri, {Accept => 'application/sparql-results+xml'}, 'got success from query GET'); my $content = $mech->content; my $iter = RDF::Trine::Iterator->from_string( $content ); my $count = 0; while (my $r = $iter->next) { $count++; } is( $count, 0, 'expected count after delete' ); } done_testing(); RDF-Endpoint-0.09/share/index.html000644 000765 000024 00000002661 12370032672 017030 0ustar00gregstaff000000 000000 SPARQL


RDF-Endpoint-0.09/share/results.html000644 000765 000024 00000001432 11712064116 017412 0ustar00gregstaff000000 000000 SPARQL Results

Query


RDF-Endpoint-0.09/share/www/000755 000765 000024 00000000000 13156323554 015657 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/share/www/css/000755 000765 000024 00000000000 13156323554 016447 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/share/www/favicon.ico000644 000765 000024 00000026451 11411730762 020003 0ustar00gregstaff000000 000000 PNG  IHDR@@iqJiCCPICC ProfilexYy8V]ܣ}yy S]U?3h}wWozGFZG`H@~D29BC҅z@`M/7yDHHAL&{L~'2~@Tx09~ AA`0!7Y r ]!2O-BaMHC#}!h37B16@pGTYþ&e`h؀+3 |@ DP =W+ |"(> 8 C0_rzF1y"GA3x#۱.=?cѷkL̜Bh9"ZD4 H*hZC0hczؼx5aW: -6-h8;@/,<>2?Gr}$xLB$xddevo9뷱lv"?47@QJ؊ J @ͬWLdo} 5 =%08H#1 C(H,2 jP] 0fX&A8C7$Cr @{!P(:ҡl(**:4 A_ aaX6`7d8΃K*ńEITPz(K JDrQ%T+5ZD@ch$h{:>G_G7{Oѓe/ ÁǨaL0N?L &S<`cX&0VkubbOc/akvñq8KK]UqOp3u<%/7ĻC{'M  A 5 K oxLRV3Z0A`G$%jo|֔Iy7)SNR ňzDWb 1XN "~#HB$m )A uHTTRT&TTG P-QSP RPNΥn~LHCA#DGCI)iyAJKO+KkIB{,N΀Λ.*]7=^ދ8})}/ A!!aaQс1q $d̔T4ʴɬÜ\yEŇ%9+kkk;645"^Evvuv/4z0 A9V9889/rvs.r1qisr5Mϭ}{G''gט7wwOϞ_-;~ /y.ensC)U/ 9 jf6N~+B)y&U $:,)=ŕ/H`$T%B%J$^H%u$c%+%'JjZvΒ%(,S*FNTlW919/g$yC#_|^*++TRT4,\BAJ}Uջ?ԔԢ>KP#gO) > FƄ& -^-V{m~mo2:::U:K2uu + uc͌_pxT,*61#ٚ国+7ro9lnj~EE%4u&.N=I>2dt(hGde[9x539)yщȔ'O^>>pj(U>b42[N?8#{&voPRfYгYZY׳iΙkJ{@B 1&5_xV݂BµKޗi\漜~yJFō%B%WWc~(u(r,gyhu=78ndV•1sUU55ŵL7͘uuf] * 5oަ57.77M4;7t޾#u.݂6ƶ{{W;;;:ܻt;u?5gݯ~_**>H!ʏU[G{Ӿg&[<}K_}yzM[۴w4r8JEk'&&'}fkja:jzk&CGrw ,/l.|T$tN3_"l=[Jתkipy` Sg/_oCɑݽ ia__#93; @SJ EA -TsY(FTÇYG)(.j|:~*F-6+#4^{~v7BWE$OIsɏ+F+S\QST0ֶ341*0Au3[Y6[mf=vsq:w{];/țG/?%063qxRzIb<`tχKJr9r88>ܚZ:ۺz⏨ ͚_ۻއ!/, QMy0-|3#1\'Rp)['ZHN{37ded=s>4/kE|BKEvە^/fYf^nrݪ"FYPF wͰ Oo6267۴fܩ;ڶ.ay{pwc=n.)x4YQ/_q&^y3]۸DSSߧ;gN}Hlw%8$jJie9+nW>RV']o2%M-V;wU{݁םp_njpБǭß=bG8{T4۾haU+a011?"XGIl3vǁB26 ^/QpP('7 ?(()'2$R*iJ /j>I6vΎ>};Fuv&#'n HӲV鱍 d||҄EDe$x$)%KMJ?i-;.`ħLP^QST޿ƒͪ#gnix(ϸƤ٦9~7m^;pq༽U{Dzwόl@oSpXHo[xt`PtR̋2qS#'Ov,4Y=j3͙Yes/T_+h}x4| I ƛ.ڵ1w={?q0|H̳w^CMLϦ|]b֫ew&d0pG*-$ ( A2L`MF_PhJ:*Buޣha): @pc1ɘ&d=-.W[ċ% YX6`I( R*Q|C"I\*=U35Q.Zr:zt"C:#cS%*}},ˬll]qspqep+s*Z%V(~J"VKZZ[FZOABRXS4<2){T/_1db佧̫,F68P:;9'Wz-&WwϼM@Z`W0z !|9Rc^3?0~ڑ̣ړN8Y6y:#cO槬+sXsgj P*)s}խ;0(ݜ}nuU{}/{TLMf.Z*\Jڭ] "U8pER\$4}Y`- (&*u 5/<L!K/5,VlpŸx|9E%JxFN$aII_TI0u 3M $m [JkLYX.A:ˡ̱y0>%(e ~  A!1a>NQ1Nq. aI))5igpSe ݊U/5 moH0X¤}E][3 0_'ѹ^ٯ>H. H ~1cw=pӤc 'ޞ<*w:(Ye=y>1_ 3/wK6KsʔʟTUb.ԯihiqk]~O}ӯSgchp#x0HSg~/Zp\ `eajbϖz[jw_NsqcC`h|%urk'O?7~j .R~&.Yۛ%?"#a,Rs/LA~GT6l! pHYs  IDATx[ tUՙ#7 $<!QD`QPSk yutI3c̚$ZZhKhK:-AQy(/ ${{{.7ls?{uWkbCK8^.i?4T O،tھs6`ZaUi}[wgoR=)۽_=rEe|۫p~ eF!3T[k{{}>v^cºRM&[DŽn||Ծܽ}rzK1\ή!h ʶɮ_~!%E#,G^[Ayur9t;zWoGj6|ď=z'~lD>XLdT}Z$A9sXa^QS3wMa@nIPiט'c|9N2 v31^0 da =tO? y#1WbYHqrLdFa@hDqCt}c ]xxs {oH8HZ44xB ʅ ؽxK\8t?b'us` \nIqD<%^i&!JFp&xM_ÿtxhSg))#%]cy?MUuQ%}륿s+ \>zPsҟvoPxT{7Q<5G F1 ʯC9 ^Qmw:#ZPVIa#ާ Iڰ5|+B(icZa@PV&!;\Uʽ* ):yݵ&X"tpRؙ(Fk~mE e=c۾"qK:d4RPY=Օ#Ym-1 cOH rne?)ѾID%\ʐts>Bx.GO@RIkwR!䧥, gSҊKi-^M䭏v$4\sv 1vRT n6bW$f>`R`\$NL TCߨ)ֆqEj) :4\=||N *= OЮ!RUJ,#ִAU&|ukoME/dj4D8(`avSUe/ -)XE>uc/싖u\o$H6w.J6`ɀ\K',Hj^_^ 'A\QLH0Q7wU]zpT! w # qIjG.ܺ(~R"ME (d N('IG{X&11pLGոn~db3hcxv]>J`'XʺʟC?Z=o81Ş`;4S{SEKFހ ‡9qf(Pw{+?RkHU%ruU#iNxK.^[ MM˶Y~1dzTO|q^b3Lk6VIW4TXHI~\Pos?yToGହ *I$r_@o5aCevs \Fc7 b*We]Ƃ 8de1&[@ '$WYd07*兦 x`]q.9=~-ceS)1 HZZ_6XD2q ԓ4i}fԮ⢼k"IES[:x)cy񇤙hFBPyqqc |#S.o# #ϛ梔>DɈz쒒x*Hc. N\*"_XGȌV >k˕B@9h'kSeSoY8QU)u/x2ii!Oc;_ 2b+8클GWԈdט&{i5N! )<$Pom5_q9FZ7v LД^=c p;a;v"K~Co0[^ WXMjӄB#k5_iFvXSP.Fiߤ]CP hpom UrdŲ&n h@t/n1'Qrdwͬ?[R{Z=τH qB| AUKjM;_ HaLT`9Lxj}HLo7!, +e6LnU YA:J9 Ht8w&p8uHytx ЙT#Fw6MZpb*dJ-|Ҩ4#"z Mm&UcQyrJl2%AS;5h\P&K޸\ ,ַl30]׽7 ]V!%x\T}\ % '{4jyG$!:w< e5Kdg_ d1~٫F6^+7s<YDҊژY%aг )CalS{JHu}Pbw ןt 0R5 ե]牁HrJHؙޓe@e[T|yEh'Ţz3EՐz6 }$(`K> >AH#9 L?GIQx=;iiec yU~T/cpmAIo=q٫Q M`g34#١3הb iJ'v\SۊKG- +-iH(tHX]@1z$=ݰqw!&IR"Duz:#2vAUiFb)Mפwڋ#z@P62s 'D| Ad2\UeQܴQPބ5O϶/rVg̫"b(=W{mU#20<3 k 13 mw ~2~b~Sk%S^mc!*֑pqdhHF')jG:E;]ARBwQdю#1B7AAu/,~@NPYR0))Bb TZTi1 #{K&CoZ},ri+VH| :Ӣ 9!МQ $ߨjUH̖Ҹ9 Ӽ'_uєÙWVJ& EչIu|c(3հS=A"}:vhKKF@9!1=JE-fsa^p@ϥ Ӂl}ەn[SvrPa2UR mR 1Bb,M7lTӒ_ Iy=+ƼL /`כ Y'yi %]KC3[!=3:}~&&(ل-GzvK<˽J[}z  `|gvįla\#6&dZAvͱW `Xy]czcF݂EE*U)j(]^8p] ^"'E-\WyƩP.{w0^-%x6"ɘ2 t[@0*j#_!o~A^TG*+xKL5FGz.b@v2cWfUgVӮHqeIu.bJ%%GdGײ0k̮n\.uT=Gc>ZҼ =+״{VۜbOIb>}o[4+,Hۆi02jk7̀3&}78bZH]K X}yKҚHsluA8;$|=ȓW ֥`Q۠5GBwHm웟OZU[ 4EX:ZővHOHwX5Xl{[1@"E9FIpzp/2/JGpVR e`ү*cӇ*" L`J Vd2R̒\̻r+~1tc dwgM>-pnnFSFM;% ۾rʁv48O@Ya $S0E幽"h&JTړTfiU[+ϨN =BZ[砙ݖ9.AY:6hN F~AJhIx } a4{둯ݳzJbT .>Sϵ(܈6q^b㿆y:2H h'*^FXyujgG'D4]^SK_]DU^F msArp[s`(`=qIENDB`RDF-Endpoint-0.09/share/www/js/000755 000765 000024 00000000000 13156323554 016273 5ustar00gregstaff000000 000000 RDF-Endpoint-0.09/share/www/js/codemirror.js000644 000765 000024 00000051243 11552456153 021003 0ustar00gregstaff000000 000000 /* CodeMirror main module (http://codemirror.net/) * * Implements the CodeMirror constructor and prototype, which take care * of initializing the editor frame, and providing the outside interface. */ // The CodeMirrorConfig object is used to specify a default // configuration. If you specify such an object before loading this // file, the values you put into it will override the defaults given // below. You can also assign to it after loading. var CodeMirrorConfig = window.CodeMirrorConfig || {}; var CodeMirror = (function(){ function setDefaults(object, defaults) { for (var option in defaults) { if (!object.hasOwnProperty(option)) object[option] = defaults[option]; } } function forEach(array, action) { for (var i = 0; i < array.length; i++) action(array[i]); } // These default options can be overridden by passing a set of // options to a specific CodeMirror constructor. See manual.html for // their meaning. setDefaults(CodeMirrorConfig, { stylesheet: [], path: "", parserfile: [], basefiles: ["util.js", "stringstream.js", "select.js", "undo.js", "editor.js", "tokenize.js"], iframeClass: null, passDelay: 200, passTime: 50, lineNumberDelay: 200, lineNumberTime: 50, continuousScanning: false, saveFunction: null, onChange: null, undoDepth: 50, undoDelay: 800, disableSpellcheck: true, textWrapping: true, readOnly: false, width: "", height: "300px", minHeight: 100, autoMatchParens: false, parserConfig: null, tabMode: "indent", // or "spaces", "default", "shift" enterMode: "indent", // or "keep", "flat" electricChars: true, reindentOnLoad: false, activeTokens: null, cursorActivity: null, lineNumbers: false, firstLineNumber: 1, indentUnit: 2, domain: null, noScriptCaching: false }); function addLineNumberDiv(container, firstNum) { var nums = document.createElement("DIV"), scroller = document.createElement("DIV"); nums.style.position = "absolute"; nums.style.height = "100%"; if (nums.style.setExpression) { try {nums.style.setExpression("height", "this.previousSibling.offsetHeight + 'px'");} catch(e) {} // Seems to throw 'Not Implemented' on some IE8 versions } nums.style.top = "0px"; nums.style.left = "0px"; nums.style.overflow = "hidden"; container.appendChild(nums); scroller.className = "CodeMirror-line-numbers"; nums.appendChild(scroller); scroller.innerHTML = "
" + firstNum + "
"; return nums; } function frameHTML(options) { if (typeof options.parserfile == "string") options.parserfile = [options.parserfile]; if (typeof options.basefiles == "string") options.basefiles = [options.basefiles]; if (typeof options.stylesheet == "string") options.stylesheet = [options.stylesheet]; var html = [""]; // Hack to work around a bunch of IE8-specific problems. html.push(""); forEach(options.stylesheet, function(file) { html.push(""); }); forEach(options.basefiles.concat(options.parserfile), function(file) { if (!/^https?:/.test(file)) file = options.path + file; html.push("