Git Product home page Git Product logo

respec's Introduction

ReSpec

Backers on Open Collective Sponsors on Open Collective Build Status Website status

ReSpec is a JS library that makes it easier to write technical specifications, or documents that tend to be technical in nature in general. It was originally designed for the purpose of writing W3C specifications, but has since grown to be able to support other outputs as well.

Getting started

If you are just interested in writing a spec, you can grab the starter spec.

We have extensive documentation on how to use ReSpec in our wiki, including:

You don't need to check-out or fork this repository.

If you are new to spec writing, we strongly encourage you to read:

Getting help

If you experience issues, please email [email protected] or if you think something is broken, file a bug.

Please note: ReSpec is not endorsed by W3C and nobody should expect the W3C Webmaster to provide advice on problems encountered with ReSpec, or on why it may be failing to produce pubrules-compliant content.

Bibliographical references

Bibliographical references have been moved out of ReSpec. You want to use specref.org.

Want to see complete documentation?

Documentation for ReSpec is available in our wiki.

Contribute

Please see our developer guide.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Contributors

This project exists thanks to all the people who contribute. [Contribute].

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

respec's People

Contributors

anssiko avatar cconcolato avatar darobin avatar deniak avatar dependabot[bot] avatar devanshbatra04 avatar dontcallmedom avatar g13e avatar github-actions[bot] avatar gkellogg avatar greenkeeper[bot] avatar greenkeeperio-bot avatar halindrome avatar johanna-hub avatar jyasskin avatar lanthaler avatar marcoscaceres avatar marcoscaceres-remote avatar plehegar avatar pradeepgangwar avatar ridhishjain avatar saschanaz avatar sidvishnoi avatar snyk-bot avatar suyashsalampuria avatar swapnilr1 avatar tidoust avatar tobie avatar xfq avatar yutakahirano avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

respec's Issues

Simpler callback entry

Cullen wrote:

I wish I could write HTML like

<dl title='callback IceCandidateCallback = void' class='idl'  >
   <dt>IceCandidate candidate</dt>
   <dd>The new ICE candidate. </dd>
</dl>

and have it generate some IDL that looked something like

callback IceCandidateCallback = void( IceCandidate candidate )

with text below breaking out that parameters and explanation text for them much like respec does for an interface IDL

Check to see if we support variadic args properly

Here is a patch from Mike[tm](against v2)

diff -r 4b656ac82e6d js/core/webidl.js
--- a/js/core/webidl.js Mon Oct 25 05:43:27 2010 +0900
+++ b/js/core/webidl.js Tue Oct 26 05:52:02 2010 +0900
@@ -519,12 +519,14 @@
         for (var i = 0; i < meth.arguments.length; i++) {
             var it = meth.arguments[i];
             var optional = it.optional ? "optional " : "";
+            var variadic = it.variadic ? "..." : "";
             var inp = this.noIDLIn ? "" : " in ";
             var $prm = $("<span class='idlParam'>")
                 .append(this.writeExtAttrs(it.extAttrs, null))
                 .append(inp + optional);
             var $ptype = $("<span class='idlParamType'/>").append(this.writeDatatype(it.type));
             $prm.append($ptype)
+                .append(variadic)
                 .append(" ")
                 .append($("<span class='idlParamName'/>").text(it.name));
             $span.append($prm);

Find a batch option

PhantomJS isn't great but may be workable if we can track progress reliably.

Progress signalled through postMessage

It would be wonderful if all that happened inside RS were signalled using postMessage. This would make it possible to build "shells" in the same manner that they are built for DZSlides.

Make tool?

Would it make sense to use a make-like approach when defining a profile? It could increase parallel processing.

Enum support

I'm imaging something like being able to write:

<dt> enum SdpType { "offer", "pranswer", "answer" } </dt>
<dd> <p> blah blah blah </p> </dd>

but just wanted to let you Dan was going to be making some progress on this.

(from Cullen, DanB)

SOTD Paragraphs duplicated after TOC

If you look at http://json-ld.org/spec/latest/json-ld-syntax/, you'll see that the last two paragraphs of the SOTD are repeated right after the TOC. When I ran locally on my dev machine, it didn't seem to happen. This is with rev 3.1.1.

BTW, trying it with 3.1.2 or 3.1.3 resulted in most sections not being numbered, and not showing up in the TOC. Not sure this was a planned change.

FileSaver

It should be possible to properly support saving generated RS documents.

New templating system

RS1 had no templating (which was horrible), RS2 used successively TT (which is too buggy) and jqTmpl (which is deprecated). Switch to Handlebars.

Ability to create local references

Some references are best kept out of the main DB, at least temporarily. It would be useful to be able to specify a handful of those in the configuration.

localReferences: {
    FOO: {... ref definition ...}
}

Test System

We need to have a test system. The new development rule is that every single module that gets added is only added with tests and documentation. This should lead to progressive enhancement of the testing status.
Which test system to use?

W3C Pubrules issues

I'm trying to publish a W3C Working Group Note and pubrules flagged the following ReSpec-generated text issues:

  1. Validation error: "text/css" was not added to the first STYLE tag in the document.
  2. Document Metadata: The W3C style sheet should be http://www.w3.org/StyleSheets/TR/W3C-WG-NOTE. It is currently http://www.w3.org/StyleSheets/TR/W3C-NOTE.
  3. Title/Date: No appropriate document status found within h2. Did find the following: "W3C Note 28 June 2012", expected "W3C Working Group Note 28 June 2012".
  4. Document Status Section: Both check #11 and check #12 fail, but I can't figure out why... (document stability and patent policy statements).

Everything else seems to work fairly well.

Include the patches that Travis made to v2

These are:

changeset:   119:063b7e46bc1f
tag:         tip
user:        [email protected]
date:        Tue May 29 18:10:07 2012 -0700
files:       guide/index.html index.html js/core/base-runner.js js/core/tmpl.js js/respec-docs/profile-respec-docs.js
description:
Fixed some minor issues, and made the system IE10 compatible:
* Fixed links to allow proper pre-reqs to load for respec processing on
 the root index and guide pages. (These pages were not being styled correctly
 due to respec processing failures.)
* Added a few helps to make respec more robust to a lack of configuration file
 (base-runner.js)
* Implemented a cross-browser compatible workaround for loading HTML fragments,
 which unfortunately didn't work in IE because of a interop-bug in how
 "about:blank" documents are asynchronously initialized.
* Fixed usage of require.js to properly implement dependency chains as implied
 by the existing code comments. These would only work in IE when I "soft"
 refreshed the page because the needed dependencies were already in the cache;
 on a full refresh or cold visit, the tmpl.js file would load before the
 prereq code was done and mess things up. This was an accident waiting to
 happen in the other browsers as well, which I simulated by adding some
 network latency for base-runner.js and observing the failure in chrome and
 firefox too. Couldn't find the particular line in the require.js file that
 states this specificially, but the ONLY guarantee that require.js makes is
 that all of the required files in the list will be loaded before the callback
 --not that the files in the required list will all be loaded in the specified
 order. But now you know. :-)
 use simple async s


diff -r 43c64d5b5b73 -r 063b7e46bc1f guide/index.html
--- a/guide/index.html  Thu May 17 17:04:18 2012 +0200
+++ b/guide/index.html  Tue May 29 18:10:07 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>The Guide</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 43c64d5b5b73 -r 063b7e46bc1f index.html
--- a/index.html    Thu May 17 17:04:18 2012 +0200
+++ b/index.html    Tue May 29 18:10:07 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Welcome!</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='guide/docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='js/require.js' class='remove'></script>
  </head>
  <body>
@@ -13,8 +13,8 @@
      <h2>Welcome to ReSpec</h2>
      <p>
        This is the server from which ReSpec v2 is made available. Chances are you're looking for the
-        <a href='/js/'>actual Javascript code</a>, perhaps for <a href='/js/profiles/'>an existing profile</a>,
-        or if human-readable documentation is more your type, <a href='/guide/'>the guide</a> might be
+        <a href='js/'>actual Javascript code</a>, perhaps for <a href='js/profiles/'>an existing profile</a>,
+        or if human-readable documentation is more your type, <a href='guide/'>the guide</a> might be
        a better bet.
      </p>
      <p>
diff -r 43c64d5b5b73 -r 063b7e46bc1f js/core/base-runner.js
--- a/js/core/base-runner.js    Thu May 17 17:04:18 2012 +0200
+++ b/js/core/base-runner.js    Tue May 29 18:10:07 2012 -0700
@@ -14,6 +14,10 @@

    GLOBAL.error = function (str) {
        console.error("E: " + str);
+        // Since errors can not successfully continue execution (something will 
+        //  break downstream, for example not supplying an editor as in 
+        //  conf.editors in headers.js), throw to stop ReSpec processing.
+        throw new Error("ReSpec2 configuration error--please see console output for details");
    };

    GLOBAL.progress = function (str) {
@@ -29,7 +33,8 @@
            runAll:    function (plugs) {
                // the first in the plugs is going to be us
                plugs.shift();
-                if (!respecConfig) respecConfig = {};
+                // Use window.* to avoid a ReferenceError when respecConfig does not exist.
+                if (!window.respecConfig) respecConfig = {};

                // the base URL is used by some modules
                var $scripts = $("script"),
diff -r 43c64d5b5b73 -r 063b7e46bc1f js/core/tmpl.js
--- a/js/core/tmpl.js   Thu May 17 17:04:18 2012 +0200
+++ b/js/core/tmpl.js   Tue May 29 18:10:07 2012 -0700
@@ -24,14 +24,21 @@

            // loads templates as parsed HTML given a string
            loadFromHTML:     function (str, doc) {
-                var $body = $("body", doc), 
-                    $ifr = $("<iframe/>").css({display: "none"}).attr("src", "about:blank");
-                if ($body.length) $ifr.appendTo($body);
-                else              $("head", doc).after($ifr);
-                var iDoc = $ifr[0].contentWindow.document;
-                iDoc.documentElement.innerHTML = str;
-                this.loadAllTemplates(iDoc);
-                $ifr.remove();
+                // IE does not sychronously load a document element + head/body into about:blank. 
+                // There appeared to be [generally] a faster way to do this, so implementing that
+                // instead
+                var divorcedHTMLDoc = doc.implementation.createHTMLDocument("loading...");
+                divorcedHTMLDoc.documentElement.innerHTML = str;
+                this.loadAllTemplates(divorcedHTMLDoc);
+                // [OLD TECHNIQUE]
+                //var $body = $("body", doc),
+                //    $ifr = $("<iframe/>").css({display: "none"}).attr("src", "about:blank");
+                //if ($body.length) $ifr.appendTo($body);
+                //else              $("head", doc).after($ifr);
+                //var iDoc = $ifr[0].contentWindow.document;
+                //iDoc.documentElement.innerHTML = str;
+                //this.loadAllTemplates(iDoc);
+                //$ifr.remove();
            },
            ieDummy: 1
        };
diff -r 43c64d5b5b73 -r 063b7e46bc1f js/respec-docs/profile-respec-docs.js
--- a/js/respec-docs/profile-respec-docs.js Thu May 17 17:04:18 2012 +0200
+++ b/js/respec-docs/profile-respec-docs.js Tue May 29 18:10:07 2012 -0700
@@ -3,27 +3,36 @@
            "core/base-runner",
            "core/utils",
            "core/override-configuration",
-            
-            // modules that are used by the profile
-            "core/default-root-attr",
-            "respec-docs/style",
-            "core/style",
-            "respec-docs/headers",
-            "core/data-include",
-            "core/inlines",
-            // "core/webidl",
-            "core/examples",
-            "w3c/bibref",
-            "core/structure",
-            "core/dfn",
-            "robineko/add-container",
-            // these at the end
-            "core/remove-respec"
        ], 
-        function (runner) {
-            var args = arguments;
-            require.ready(function () {
-                runner.runAll(Array.prototype.slice.call(args));
+        function preReqsComplete() {
+            var preReqObjectsArray = Array.prototype.slice.call(arguments);
+            require([
+                // modules that are used by the profile
+                "core/default-root-attr",
+                "respec-docs/style",
+                "core/style",
+                "respec-docs/headers",
+                "core/data-include",
+                "core/inlines",
+                // "core/webidl",
+                "core/examples",
+                "w3c/bibref",
+                "core/structure",
+                "core/dfn",
+                "robineko/add-container",
+            ],
+            function reqsComplete() {
+                var reqObjectsArray = Array.prototype.slice.call(arguments);
+                require([
+                    // these at the end
+                    "core/remove-respec"
+                ],
+                function postReqsComplete() {
+                    var postReqObjectsArray = Array.prototype.slice.call(arguments);
+                    require.ready(function() {
+                        preReqObjectsArray[0].runAll(preReqObjectsArray.concat(reqObjectsArray,postReqObjectsArray));
+                    });
+                });
            });
        }
);

And:

changeset:   120:ce9f0cc50fed
tag:         tip
user:        [email protected]
date:        Tue May 29 18:19:29 2012 -0700
files:       guide/basic-layout.html guide/building-static.html guide/dev-basics.html guide/dev-plugins.html guide/dev-profiles.html guide/essential-boilerplate.html guide/inline.html guide/structure.html guide/upgrade-from-v1.html guide/webidl.html
description:
Removed the "/guide/" prefix to the respec reqs documents from these files so
they all load correctly.


diff -r 063b7e46bc1f -r ce9f0cc50fed guide/basic-layout.html
--- a/guide/basic-layout.html   Tue May 29 18:10:07 2012 -0700
+++ b/guide/basic-layout.html   Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Basic Layout</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/building-static.html
--- a/guide/building-static.html    Tue May 29 18:10:07 2012 -0700
+++ b/guide/building-static.html    Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Static Snapshots</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/dev-basics.html
--- a/guide/dev-basics.html Tue May 29 18:10:07 2012 -0700
+++ b/guide/dev-basics.html Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Development Basics</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/dev-plugins.html
--- a/guide/dev-plugins.html    Tue May 29 18:10:07 2012 -0700
+++ b/guide/dev-plugins.html    Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Plugins</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/dev-profiles.html
--- a/guide/dev-profiles.html   Tue May 29 18:10:07 2012 -0700
+++ b/guide/dev-profiles.html   Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Profiles</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/essential-boilerplate.html
--- a/guide/essential-boilerplate.html  Tue May 29 18:10:07 2012 -0700
+++ b/guide/essential-boilerplate.html  Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Boilerplate</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/inline.html
--- a/guide/inline.html Tue May 29 18:10:07 2012 -0700
+++ b/guide/inline.html Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Inlines</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/structure.html
--- a/guide/structure.html  Tue May 29 18:10:07 2012 -0700
+++ b/guide/structure.html  Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Structure</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/upgrade-from-v1.html
--- a/guide/upgrade-from-v1.html    Tue May 29 18:10:07 2012 -0700
+++ b/guide/upgrade-from-v1.html    Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>Upgrading</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>
diff -r 063b7e46bc1f -r ce9f0cc50fed guide/webidl.html
--- a/guide/webidl.html Tue May 29 18:10:07 2012 -0700
+++ b/guide/webidl.html Tue May 29 18:19:29 2012 -0700
@@ -1,9 +1,9 @@
-<!DOCTYPE html>
+<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    <title>WebIDL</title>
-    <script src='/guide/docs-config.js' class='remove'></script>
+    <script src='docs-config.js' class='remove'></script>
    <script data-main='respec-docs/profile-respec-docs' src='../js/require.js' class='remove'></script>
  </head>
  <body>

Change reference system

Remove the current reference system which is too clunky and slow. Instead, use as many files as there are references, all of which are JSON-P calling a ref("FOO", "Foo Specification...") function.

Port documentation

The RS2 documentation is much nicer than the v1 docs where it exists, but less complete. Port it over, and start integrating new content. Include the old doc as part of it, only deleting bits that have been properly ported over (using the same Evol method).

array dictionary members have their [] eaten

dictionary foo {
DOMString[] bar;
};
gets properly counted as array in the generated prose, but the pretty-printed Web IDL appears as
dictionary foo {
DOMString bar;
};
(where the [] is eaten)

For array of arrays ([][]) only the first pair of [] is eaten (but the generated prose doesn't say array of array of ..., but array of ...[])

Stringifier support

respec doesn't support stringifier in the following WebIDL fragments:
interface foo {
stringifier attribute DOMString bar;
};
(that one seems to prevent further WebIDL processing?)

interface foo {
stringifier DOMString ();
}
(this one is shown as if DOMString was the name of the method, and stringifier its type)

Check rules for XGR support

There are differences between v1 and v2 here, and I need to check what the status is for XGR support is (low-priority though, since XGRs are gone). Below is what DanB had to say:

  1. (The status section) must begin with:
    Include this source code:

    This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of Final Incubator Group Reports is available. See also the W3C technical reports index at http://www.w3.org/TR/.

  2. Regarding stability,
    Include this source code:

    Publication of this document by W3C as part of the W3C Incubator Activity indicates no endorsement of its content by W3C, nor that W3C has, is, or will be allocating any resources to the issues addressed by it. Participation in Incubator Groups and publication of Incubator Group Reports at the W3C site are benefits of W3C Membership.

Instead it appears that you include the more generic text for a working draft. And yes, I have told reSpec that this is an Incubator Group report.

Additionally, there is recommended text about text regarding patent policy requirements. For us, the sample text provided is fine:
Include this source code:

<p>Incubator Groups have as a <a href="http://www.w3.org/2005/Incubator/procedures.html#Patent">goal</a> to 
produce work that can be implemented on a Royalty Free basis, as defined in the W3C Patent Policy. Participants in 
this Incubator Group have made no statements about whether they will offer licenses according to the 
<a href="http://www.w3.org/Consortium/Patent-Policy-20030520.html#sec-Requirements">licensing 
requirements of the W3C Patent Policy</a> for portions of this Incubator Group Report that are subsequently 
incorporated in a W3C Recommendation.</p>

But I can add that as a custom paragraph as long as you don't include any statements about patent policy.

If you want to see all of this in context, here's the document I ran through pubrules: http://www.w3.org/2005/Incubator/htmlspeech/finalreport/tempdoc.html
(the reSpec master is http://www.w3.org/2005/Incubator/htmlspeech/finalreport/XGR-htmlspeech.html)

There are other errors, of course, which I am working on, but the boilerplate is inserted automatically by reSpec and is thus outside of my control.

Create a Datatype encapsulation

We have lots of type related operations in WebIDL, and they should all be centralised and encapsulated because right now it's a total mess.

Make sure partial support is in

As part of the WebIDL bugs that will be fixed by the introduction of WebIDL.js plus templates, this one is particularly useful.

Switch to RequireJS loader and build

Swap in the loader and the build tools.
Generate a specific build that can be referred to so that documents include specific versions and not the latest (though it would be nice to have a -latest version as well for those who like the bleeding edge).
Use grunt to run the build.
Build two first modules: one that just does the small basic things, and the other that does all the rest. Make a profile out of it.
Once that works, this becomes the canonical version of RS.

WebIDL-generated subsections have h2-headings

For subsections generated by respec for WebIDL fragments (e.g. "Attributes", "Methods"), the headings generated for "HTML4" compatibility are all h2 (where other subsections get a heading in function of their nesting level).

Add linter

Hanging off the new UI menu, the option to lint a document should be included (from w3c/lint). This would notice things like having to force-wrap the abstract, not having a customised SotD paragraph, duplicate IDs, failed internal anchors, and whatever is simple to bring over from pubrules.

We could grab the generated source and send it to validator.nu if it has an API.

It might be useful to always run this when the user tries to save a snapshot.

Navigation to fragment identifiers is busted

We typically have "live" documents that represent the latest editor's draft, like so:

http://json-ld.org/spec/latest/json-ld-syntax/

Often, we would like to link people to a section of the document, like so:

http://json-ld.org/spec/latest/json-ld-syntax/#iris

You will note that the link to the fragment identifier above doesn't work if you click on the link above, but will work if you wait for ReSpec to do it's thing and then go to the Table of Contents and click on the "IRI" link. I'm guessing it's because when the browser hits the page, the fragment identifier doesn't exist because the ReSpec code hasn't run yet. Could we have a bit of code that runs after the entire document has been rendered to navigate to any fragment identifier that exists in the URL bar?

Mailing list subject prefix

Add a configuration option to specify the prefix to use when providing feedback to a mailing list (and presumable include the proper ?subject= link).

If you wish to make comments regarding this document, please send 
them to [email protected]?subject=[foo] (subscribe, archives) 
with <code>[foo]</code> at the start of the subject header.

(From mounir, ArtB)

Add a UI system

Currently warnings and errors go to an inconvenient overlay in the corner. This should be replaced with a little box that a) tells you when processing has terminated (steps done/steps total) b) gives a discreet indication of the number of errors and warnings that can be expanded. This would make it possible to add more linting without getting in the way of casual reading.

The save-as box also needs to be revised. It should be possible for arbitrary parts of the system to register themselves to be in that toolbox (in fact, the toolbox should be linked from the aforementioned little corner overlay box so that you don't need to learn barbarian shortcuts).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.