Ver Fonte

Update latex handling

Steven Silvester há 8 anos atrás
pai
commit
e3d3f9e21e
3 ficheiros alterados com 31 adições e 8 exclusões
  1. 24 2
      src/renderers/index.ts
  2. 1 1
      src/renderers/latex.ts
  3. 6 5
      test/src/renderers/renderers.spec.ts

+ 24 - 2
src/renderers/index.ts

@@ -114,6 +114,28 @@ class HTMLWidget extends Widget {
 }
 
 
+/**
+ * A widget for displaying LaTeX output.
+ */
+class LatexWidget extends Widget {
+  /**
+   * Construct a new latex widget.
+   */
+  constructor(text: string) {
+    super();
+    this.node.textContent = text;
+    this.addClass(RENDERED_CLASS);
+  }
+
+  /**
+   * A message handler invoked on an `'after-attach'` message.
+   */
+  onAfterAttach(msg: Message): void {
+    typeset(this.node);
+  }
+}
+
+
 /**
  * A renderer for raw html.
  */
@@ -404,7 +426,7 @@ class LatexRenderer implements RenderMime.IRenderer<Widget>  {
    * Whether the input is safe without sanitization.
    */
   isSafe(mimetype: string): boolean {
-    return false;
+    return true;
   }
 
   /**
@@ -418,7 +440,7 @@ class LatexRenderer implements RenderMime.IRenderer<Widget>  {
    * Render the transformed mime bundle.
    */
   render(mimetype: string, data: string): Widget {
-    return new HTMLWidget(data);
+    return new LatexWidget(data);
   }
 }
 

+ 1 - 1
src/renderers/latex.ts

@@ -203,7 +203,7 @@ function processMath(i: number, j: number, preProcess: (input: string) => string
     j--;
   }
   blocks[i] = '@@' + math.length + '@@'; // replace the current block text with a unique tag to find later
-  if (preProcess){
+  if (preProcess) {
     block = preProcess(block);
   }
   math.push(block);

+ 6 - 5
test/src/renderers/renderers.spec.ts

@@ -102,9 +102,9 @@ describe('renderers', () => {
 
     describe('#isSafe()', () => {
 
-      it('should be `false`', () => {
+      it('should be `true`', () => {
         let t = new LatexRenderer();
-        expect(t.isSafe('text/latex')).to.be(false);
+        expect(t.isSafe('text/latex')).to.be(true);
       });
 
     });
@@ -122,12 +122,13 @@ describe('renderers', () => {
 
     describe('#render()', () => {
 
-      it('should set the inner html of the widget', () => {
-        let mathJaxScript = '<script type="math/tex">\sum\limits_{i=0}^{\infty} \frac{1}{n^2}</script>';
+      it('should set the textContent of the widget', () => {
+        let mathJaxScript = '\sum\limits_{i=0}^{\infty} \frac{1}{n^2}';
         let t = new LatexRenderer();
         let widget = t.render('text/latex', mathJaxScript);
-        expect(widget.node.innerHTML).to.be(mathJaxScript);
+        expect(widget.node.textContent).to.be(mathJaxScript);
       });
+
     });
 
   });