From 090574ec8faa117eca7fb6d79994dbfe1d20d428 Mon Sep 17 00:00:00 2001 From: bendtherules Date: Sat, 25 Jan 2020 07:40:27 +0530 Subject: [PATCH] CodeOutput - Add component to show stringified AST, has versions for initial and current AST --- src/components/CodeOutput/CodeOutput.css | 0 src/components/CodeOutput/CodeOutput.tsx | 40 ++++++++++++++++++++++++ src/components/CodeOutput/index.tsx | 1 + 3 files changed, 41 insertions(+) create mode 100644 src/components/CodeOutput/CodeOutput.css create mode 100644 src/components/CodeOutput/CodeOutput.tsx create mode 100644 src/components/CodeOutput/index.tsx diff --git a/src/components/CodeOutput/CodeOutput.css b/src/components/CodeOutput/CodeOutput.css new file mode 100644 index 0000000..e69de29 diff --git a/src/components/CodeOutput/CodeOutput.tsx b/src/components/CodeOutput/CodeOutput.tsx new file mode 100644 index 0000000..19fa43b --- /dev/null +++ b/src/components/CodeOutput/CodeOutput.tsx @@ -0,0 +1,40 @@ +import React from "react"; +import { connect } from "react-redux"; +import * as ts from "typescript"; + +import { AppState } from "../../store"; + +interface CodeOutputProps { + sourceFile?: ts.SourceFile; +} + +function CodeOutput(props: CodeOutputProps) { + const { sourceFile } = props; + if (sourceFile === undefined) { + return null; + } + + const printer = ts.createPrinter(); + const codeString = printer.printFile(sourceFile); + + return
{codeString}
; +} + +type CodeOutputStateProps = CodeOutputProps; + +const mapStateToPropsForInitial = (state: AppState): CodeOutputStateProps => ({ + sourceFile: state.sourceFiles.inititalSourceFile +}); +const mapStateToPropsForCurrent = (state: AppState): CodeOutputStateProps => ({ + sourceFile: state.sourceFiles.currentSourceFile +}); + +const CodeOutputForInitial = connect(mapStateToPropsForInitial)(CodeOutput); +const CodeOutputForCurrent = connect(mapStateToPropsForCurrent)(CodeOutput); + +export { + CodeOutputForInitial, + CodeOutputForCurrent, + CodeOutput as CodeOutputUnconnected, + CodeOutputProps +}; diff --git a/src/components/CodeOutput/index.tsx b/src/components/CodeOutput/index.tsx new file mode 100644 index 0000000..ed0ae32 --- /dev/null +++ b/src/components/CodeOutput/index.tsx @@ -0,0 +1 @@ +export * from "./CodeOutput";