1 line
3.0 KiB
JavaScript
1 line
3.0 KiB
JavaScript
"use strict";var e=function(e){return e&&e.__esModule?e["default"]:e},t=e(require("react")),i=void 0;try{i=require("jibo-parser")}catch(r){console.warn("Error importing jibo-parser. Simulator will not support robust parsing. "+r)}var s={};module.exports=t.createClass({displayName:"rule-tester-panel",addDisposable:function(e){this.disposables.push(e)},getInitialState:function(){return this.disposables=[],{result:"",compileTime:0,parseTime:0}},compile:function(){if(i){var e=t.findDOMNode(this.refs.json);this.parser=null,i.remove_from_memory("handle:1");try{var r=performance.now(),s=i.compile_fst_from_text(this.props.editor.getText(),"handle:1"),o=performance.now();this.parser=i.build_sentence_parser(s),this.setState({compileTime:o-r})}catch(n){e.getModel().setText("[]"),this.setState({compileTime:0,parseTime:0})}}},parse:function(){var e=t.findDOMNode(this.refs.json),i=t.findDOMNode(this.refs.editor);if(this.parser){var r=performance.now(),s=this.parser.parse_sentence(i.getModel().getText()),o=performance.now();this.setState({parseTime:o-r}),s=JSON.parse(s),s=JSON.stringify(s,null,4),e.getModel().setText(s)}else e.getModel().setText("[]"),this.setState({compileTime:0,parseTime:0})},render:function(){var e={width:"100%",height:"100%",display:"flex",flexDirection:"column"};return t.createElement("div",{style:e,ref:"container"},t.createElement("div",{className:"panel-heading",style:{padding:"0px"}},t.createElement("h2",{style:{textAlign:"center",marginTop:"6px",marginBottom:"6px"}},"Test ",this.props.editor.getTitle())),t.createElement("atom-text-editor",{ref:"editor",style:{marginLeft:10,marginRight:10,marginBottom:10,marginTop:20},mini:!0,"placeholder-text":"Enter test sentence here"}),t.createElement("div",{className:"text-info",style:{margin:10}},t.createElement("span",{className:"icon icon-graph"})," ","compile time: "+this.state.compileTime.toFixed(2)+"ms, parse time: "+this.state.parseTime.toFixed(2)+"ms"),t.createElement("div",{className:"json-container"},t.createElement("atom-text-editor",{"gutter-hidden":!0,ref:"json",style:{height:"100%"}})),t.createElement("div",{style:{height:26}}))},componentDidMount:function(){var e=this,i=t.findDOMNode(this.refs.editor),r=t.findDOMNode(this.refs.json),o=t.findDOMNode(this.refs.container);o.addResizeListener=function(){console.log(o.clientWidth,o.clientHeight)};for(var n=!1,a=atom.grammars.getGrammars(),l=0;l<a.length;l++){var m=a[l];if("JSON"===m.name){r.getModel().setGrammar(m),n=!0;break}}n||!function(){var e=atom.grammars.onDidAddGrammar(function(t){"JSON"===t.name&&(r.getModel().setGrammar(t),e.dispose())})}();var d=s[this.props.editor.getPath()];d?(i.getModel().setText(d),this.compile(),this.parse()):r.getModel().setText("[]"),this.addDisposable(this.props.editor.onDidStopChanging(function(){e.compile(),e.parse()})),this.addDisposable(i.getModel().onDidStopChanging(function(){s[e.props.editor.getPath()]=i.getModel().getText(),e.parse()}))},componentWillUnmount:function(){this.disposables.forEach(function(e){e.dispose()})}}); |