Преглед изворни кода

Add a static method to populate the default factories

Steven Silvester пре 7 година
родитељ
комит
e0e16bf3bd

+ 3 - 1
examples/console/src/index.ts

@@ -69,7 +69,9 @@ function startApp(path: string, manager: ServiceManager.IManager) {
     commands.processKeydownEvent(event);
   });
 
-  let rendermime = new RenderMime({ items: RenderMime.getDefaultItems() });
+  let rendermime = new RenderMime();
+  RenderMime.addDefaultFactories(rendermime);
+
   let editorFactory = editorServices.factoryService.newInlineEditor.bind(
     editorServices.factoryService);
   let contentFactory = new ConsolePanel.ContentFactory({ editorFactory });

+ 2 - 1
examples/notebook/src/index.ts

@@ -94,7 +94,8 @@ function createApp(manager: ServiceManager.IManager): void {
     commands.processKeydownEvent(event);
   }, useCapture);
 
-  let rendermime = new RenderMime({ items: RenderMime.getDefaultItems() });
+  let rendermime = new RenderMime();
+  RenderMime.addDefaultFactories(rendermime);
   let opener = {
     open: (widget: Widget) => {
       // Do nothing for sibling widgets for now.

+ 2 - 33
packages/application/src/index.ts

@@ -10,9 +10,7 @@ import {
 } from '@jupyterlab/docregistry';
 
 import {
-  IRenderMime, RenderMime,
-  HTMLRenderer, LatexRenderer, ImageRenderer, TextRenderer,
-  JavaScriptRenderer, SVGRenderer, MarkdownRenderer, PDFRenderer
+  IRenderMime, RenderMime
 } from '@jupyterlab/rendermime';
 
 import {
@@ -69,7 +67,7 @@ class JupyterLab extends Application<ApplicationShell> {
       }
     };
     this.rendermime = new RenderMime({ linkHandler });
-    Private.populateRenderers(this.rendermime);
+    RenderMime.addDefaultFactories(this.rendermime);
 
     let registry = this.docRegistry = new DocumentRegistry();
     registry.addModelFactory(new TextModelFactory());
@@ -250,32 +248,3 @@ namespace JupyterLab {
     default: JupyterLabPlugin<any> | JupyterLabPlugin<any>[];
   }
 }
-
-
-/**
- * The namespace for module private data.
- */
-export
-namespace Private {
-  /**
-   * Get an array of the default renderer items.
-   */
-  export
-  function populateRenderers(rendermime: RenderMime): void {
-    let renderers = [
-      new JavaScriptRenderer(),
-      new HTMLRenderer(),
-      new MarkdownRenderer(),
-      new LatexRenderer(),
-      new SVGRenderer(),
-      new ImageRenderer(),
-      new PDFRenderer(),
-      new TextRenderer()
-    ];
-    for (let renderer of renderers) {
-      for (let mime of renderer.mimeTypes) {
-        rendermime.addFactory(renderer, mime);
-      }
-    }
-  }
-}

+ 31 - 31
packages/rendermime/src/renderers.ts → packages/rendermime/src/factories.ts

@@ -15,14 +15,14 @@ import {
  * A renderer for raw html.
  */
 export
-class HTMLRenderer implements IRenderMime.IRendererFactory {
+class HTMLRendererFactory implements IRenderMime.IRendererFactory {
   /**
-   * The mimeTypes this renderer accepts.
+   * The mimeTypes this factory accepts.
    */
   mimeTypes = ['text/html'];
 
   /**
-   * Whether the renderer can render given the render options.
+   * Whether the factory can create a renderer given the options.
    */
   canCreateRenderer(options: IRenderMime.IRendererOptions): boolean {
     return this.mimeTypes.indexOf(options.mimeType) !== -1;
@@ -47,17 +47,17 @@ class HTMLRenderer implements IRenderMime.IRendererFactory {
 
 
 /**
- * A renderer for `<img>` data.
+ * A renderer factory for `<img>` data.
  */
 export
-class ImageRenderer implements IRenderMime.IRendererFactory {
+class ImageRendererFactory implements IRenderMime.IRendererFactory {
   /**
-   * The mimeTypes this renderer accepts.
+   * The mimeTypes this factory accepts.
    */
   mimeTypes = ['image/png', 'image/jpeg', 'image/gif'];
 
   /**
-   * Whether the renderer can render given the render options.
+   * Whether the factory can create a renderer given the options.
    */
   canCreateRenderer(options: IRenderMime.IRendererOptions): boolean {
     return this.mimeTypes.indexOf(options.mimeType) !== -1;
@@ -82,18 +82,18 @@ class ImageRenderer implements IRenderMime.IRendererFactory {
 
 
 /**
- * A renderer for plain text and Jupyter console text data.
+ * A renderer factory for plain text and Jupyter console text data.
  */
 export
-class TextRenderer implements IRenderMime.IRendererFactory {
+class TextRendererFactory implements IRenderMime.IRendererFactory {
   /**
-   * The mimeTypes this renderer accepts.
+   * The mimeTypes this factory accepts.
    */
   mimeTypes = ['text/plain', 'application/vnd.jupyter.stdout',
                'application/vnd.jupyter.stderr'];
 
   /**
-   * Whether the renderer can render given the render options.
+   * Whether the factory can create a renderer given the options.
    */
   canCreateRenderer(options: IRenderMime.IRendererOptions): boolean {
     return this.mimeTypes.indexOf(options.mimeType) !== -1;
@@ -118,17 +118,17 @@ class TextRenderer implements IRenderMime.IRendererFactory {
 
 
 /**
- * A renderer for raw `<script>` data.
+ * A renderer factory for raw `<script>` data.
  */
 export
-class JavaScriptRenderer implements IRenderMime.IRendererFactory {
+class JavaScriptRendererFactory implements IRenderMime.IRendererFactory {
   /**
-   * The mimeTypes this renderer accepts.
+   * The mimeTypes this factory accepts.
    */
   mimeTypes = ['text/javascript', 'application/javascript'];
 
   /**
-   * Whether the renderer can render given the render options.
+   * Whether the factory can create a renderer given the options.
    */
   canCreateRenderer(options: IRenderMime.IRendererOptions): boolean {
     return (
@@ -156,17 +156,17 @@ class JavaScriptRenderer implements IRenderMime.IRendererFactory {
 
 
 /**
- * A renderer for `<svg>` data.
+ * A renderer factory for `<svg>` data.
  */
 export
-class SVGRenderer implements IRenderMime.IRendererFactory {
+class SVGRendererFactory implements IRenderMime.IRendererFactory {
   /**
-   * The mimeTypes this renderer accepts.
+   * The mimeTypes this factory accepts.
    */
   mimeTypes = ['image/svg+xml'];
 
   /**
-   * Whether the renderer can render given the render options.
+   * Whether the factory can create a renderer given the options.
    */
   canCreateRenderer(options: IRenderMime.IRendererOptions): boolean {
     return (
@@ -194,17 +194,17 @@ class SVGRenderer implements IRenderMime.IRendererFactory {
 
 
 /**
- * A renderer for PDF data.
+ * A renderer factory for PDF data.
  */
 export
-class PDFRenderer implements IRenderMime.IRendererFactory {
+class PDFRendererFactory implements IRenderMime.IRendererFactory {
   /**
-   * The mimeTypes this renderer accepts.
+   * The mimeTypes this factory accepts.
    */
   mimeTypes = ['application/pdf'];
 
   /**
-   * Whether the renderer can render given the render options.
+   * Whether the factory can create a renderer given the options.
    */
   canCreateRenderer(options: IRenderMime.IRendererOptions): boolean {
     return (
@@ -232,17 +232,17 @@ class PDFRenderer implements IRenderMime.IRendererFactory {
 
 
 /**
- * A renderer for LateX data.
+ * A renderer factory for LateX data.
  */
 export
-class LatexRenderer implements IRenderMime.IRendererFactory  {
+class LatexRendererFactory implements IRenderMime.IRendererFactory  {
   /**
-   * The mimeTypes this renderer accepts.
+   * The mimeTypes this factory accepts.
    */
   mimeTypes = ['text/latex'];
 
   /**
-   * Whether the renderer can render given the render options.
+   * Whether the factory can create a renderer given the options.
    */
   canCreateRenderer(options: IRenderMime.IRendererOptions): boolean {
     return this.mimeTypes.indexOf(options.mimeType) !== -1;
@@ -267,17 +267,17 @@ class LatexRenderer implements IRenderMime.IRendererFactory  {
 
 
 /**
- * A renderer for Jupyter Markdown data.
+ * A renderer factory for Jupyter Markdown data.
  */
 export
-class MarkdownRenderer implements IRenderMime.IRendererFactory {
+class MarkdownRendererFactory implements IRenderMime.IRendererFactory {
   /**
-   * The mimeTypes this renderer accepts.
+   * The mimeTypes this factory accepts.
    */
   mimeTypes = ['text/markdown'];
 
   /**
-   * Whether the renderer can render given the render options.
+   * Whether the factory can create a renderer given the options.
    */
   canCreateRenderer(options: IRenderMime.IRendererOptions): boolean {
     return this.mimeTypes.indexOf(options.mimeType) !== -1;

+ 1 - 1
packages/rendermime/src/index.ts

@@ -8,5 +8,5 @@ export * from './latex';
 export * from './mimemodel';
 export * from './outputmodel';
 export * from './rendermime';
-export * from './renderers';
+export * from './factories';
 export * from './widgets';

+ 28 - 0
packages/rendermime/src/rendermime.ts

@@ -21,6 +21,12 @@ import {
   IClientSession, ISanitizer, defaultSanitizer
 } from '@jupyterlab/apputils';
 
+import {
+  JavaScriptRendererFactory, HTMLRendererFactory, MarkdownRendererFactory,
+  LatexRendererFactory, SVGRendererFactory, ImageRendererFactory,
+  TextRendererFactory, PDFRendererFactory
+} from './factories';
+
 
 /**
  * A composite renderer.
@@ -274,4 +280,26 @@ namespace RenderMime {
      */
     contents: Contents.IManager;
   }
+
+  /**
+   * Add the default renderer factories to a rendermime instance.
+   */
+  export
+  function addDefaultFactories(rendermime: RenderMime): void {
+    let renderers = [
+      new JavaScriptRendererFactory(),
+      new HTMLRendererFactory(),
+      new MarkdownRendererFactory(),
+      new LatexRendererFactory(),
+      new SVGRendererFactory(),
+      new ImageRendererFactory(),
+      new PDFRendererFactory(),
+      new TextRendererFactory()
+    ];
+    for (let renderer of renderers) {
+      for (let mime of renderer.mimeTypes) {
+        rendermime.addFactory(renderer, mime);
+      }
+    }
+  }
 }

+ 5 - 9
test/src/utils.ts

@@ -183,16 +183,12 @@ namespace Private {
     }
   }
 
-  let renderers = [
-    new JSONRenderer(),
-    new InjectionRenderer()
-  ];
-  let items = RenderMime.getDefaultItems();
-  for (let renderer of renderers) {
-    items.push({ mimeType: renderer.mimeTypes[0], renderer });
-  }
   export
-  const rendermime = new RenderMime({ items });
+  const rendermime = new RenderMime();
+
+  RenderMime.addDefaultFactories(rendermime);
+  rendermime.addFactory(new JSONRenderer(), 'application/json');
+  rendermime.addFactory(new InjectionRenderer(), 'test/injector');
 }