@krautzource/sre-to-tree
Advanced tools
Comparing version 3.0.0 to 3.0.1
@@ -5,2 +5,10 @@ # Changelog | ||
### [3.0.1](https://github.com/krautzource/sre-to-tree/compare/v3.0.0...v3.0.1) (2023-11-09) | ||
### Bug Fixes | ||
* selection of "semantic root" ([25bf789](https://github.com/krautzource/sre-to-tree/commit/25bf789e6e483d5f48a8c8117b69b509e405cb04)), closes [Speech-Rule-Engine/speech-rule-engine#729](https://github.com/Speech-Rule-Engine/speech-rule-engine/issues/729) [#37](https://github.com/krautzource/sre-to-tree/issues/37) | ||
* upgrade mahtjax, sre ([0eee365](https://github.com/krautzource/sre-to-tree/commit/0eee365e7cb01d9b23c819b55875ce5255dd7620)) | ||
## [3.0.0](https://github.com/krautzource/sre-to-tree/compare/v2.0.2...v3.0.0) (2022-09-22) | ||
@@ -7,0 +15,0 @@ |
@@ -125,3 +125,3 @@ /** | ||
const rewrite = (node) => { | ||
const skeletonNode = node.querySelector('[data-semantic-speech]'); | ||
const skeletonNode = node.querySelector('[data-semantic-id]:not([data-semantic-parent])'); | ||
if (!skeletonNode) { | ||
@@ -128,0 +128,0 @@ console.warn('sre-to-tree: no SRE markup found', node); |
{ | ||
"name": "@krautzource/sre-to-tree", | ||
"version": "3.0.0", | ||
"version": "3.0.1", | ||
"description": "Rewritig speech-rule-engine enriched DOM nodes to a labeled WAI ARIA tree", | ||
@@ -28,5 +28,5 @@ "main": "lib.js", | ||
"devDependencies": { | ||
"jsdom": "^18.0.1", | ||
"mathjax-full": "github:amermathsoc/MathJax-src#991fda683aedc6bd81247f2681392f93ef9cb640", | ||
"speech-rule-engine": "4.0.6", | ||
"linkedom": "0.16.1", | ||
"mathjax-full": "v4.0.0-beta.4", | ||
"speech-rule-engine": "4.1.0-beta.7", | ||
"standard-version": "^9.3.2", | ||
@@ -33,0 +33,0 @@ "tape": "^5.3.1" |
@@ -11,3 +11,2 @@ const test = require('tape'); | ||
const theLink = svg.querySelector('a[href]'); | ||
console.log(svg.outerHTML); | ||
t.equal(theLink.getAttribute('role'), 'treeitem' , 'Anchor gets role from "real" SRE node'); | ||
@@ -17,3 +16,3 @@ t.equal(theLink.getAttribute('data-owns-id'), '9', 'Anchor gets data-owns-id from "real" SRE node'); | ||
t.equal(theLink.getAttribute('data-owns'), '2 6 3 7 4 8 5', 'Anchor gets data-owns from "real" SRE node'); | ||
t.equal(theLink.getAttribute('aria-label'), 'l i n k link', 'Anchor gets aria-label from "real" SRE node'); | ||
t.equal(theLink.getAttribute('aria-label'), 'link link', 'Anchor gets aria-label from "real" SRE node'); | ||
}); |
const test = require('tape'); | ||
const sre2tree = require('../lib'); | ||
const jsdom = require('jsdom'); | ||
const { JSDOM } = jsdom; | ||
const { parseHTML } = require('linkedom'); | ||
test('failure tests', async (t) => { | ||
t.plan(3); | ||
const dom = new JSDOM( | ||
`<!DOCTYPE html><p>Hello world</p><div> <span data-semantic-speech="bla" data-semantic-owns="2"></span</div>` | ||
const { document } = parseHTML( | ||
`<!DOCTYPE html><p>Hello world</p><div> <span data-semantic-id data-semantic-speech="bla" data-semantic-owns="2"></span</div>` | ||
); | ||
const p = dom.window.document.querySelector('p'); | ||
const p = document.querySelector('p'); | ||
const result = sre2tree(p); | ||
t.equal(result, p, 'Noop when no SRE markup'); | ||
const div = dom.window.document.querySelector('div'); | ||
const div = document.querySelector('div'); | ||
const processedDiv = await sre2tree(div) | ||
@@ -16,0 +15,0 @@ t.equal(processedDiv.getAttribute('data-owns'), '', 'Graceful failure with unexpected markup: cut off tree'); |
const sre = require('speech-rule-engine'); | ||
const { parseHTML } = require('linkedom'); | ||
@@ -30,9 +31,4 @@ // TeX to MathML | ||
const SVG = require('mathjax-full/js/output/svg.js').SVG; | ||
const jsdom = require('jsdom'); | ||
const { JSDOM } = jsdom; | ||
const jsdomadaptor = require('mathjax-full/js/adaptors/jsdomAdaptor.js') | ||
.jsdomAdaptor; | ||
const RegisterHTMLHandler = require('mathjax-full/js/handlers/html.js') | ||
.RegisterHTMLHandler; | ||
const adaptor = jsdomadaptor(JSDOM); | ||
const RegisterHTMLHandler = require('mathjax-full/js/handlers/html.js').RegisterHTMLHandler; | ||
const adaptor = liteAdaptor(); | ||
RegisterHTMLHandler(adaptor); | ||
@@ -79,10 +75,11 @@ const mml = new MathML(); | ||
const enrichedMmlBraille = await sre.toEnriched(mml).toString(); | ||
const dom = new JSDOM(`<!DOCTYPE html>${enrichedMmlBraille}`); | ||
const brailleDoc = dom.window.document; | ||
const { document } = parseHTML(`<!DOCTYPE html><div>${adaptor.outerHTML(mjx)}</div><div>${enrichedMmlBraille}</div>`); | ||
const mjxWrapper = document.firstElementChild; | ||
const brailleWrapper = document.lastElementChild; | ||
// crossing the streams... cf. zorkow/speech-rule-engine#438 | ||
mjx.querySelectorAll('[data-semantic-speech]').forEach((node) => { | ||
mjxWrapper.querySelectorAll('[data-semantic-speech]').forEach((node) => { | ||
node.setAttribute( | ||
'data-semantic-braille', | ||
brailleDoc | ||
brailleWrapper | ||
.querySelector( | ||
@@ -95,5 +92,5 @@ '[data-semantic-id="' + node.getAttribute('data-semantic-id') + '"]' | ||
return mjx; | ||
return mjxWrapper; | ||
}; | ||
module.exports = mjenrich; |
97918
17
336