X-Git-Url: http://nitlanguage.org diff --git a/contrib/pep8analysis/src/pep8analysis_web.nit b/contrib/pep8analysis/src/pep8analysis_web.nit index 1415c77..e9a81d8 100644 --- a/contrib/pep8analysis/src/pep8analysis_web.nit +++ b/contrib/pep8analysis/src/pep8analysis_web.nit @@ -19,7 +19,10 @@ # Takes the entire Pep/8 source code as argument and prints out the # analysis results. The result graph will be sent to the JavaScript function # `show_graph` with the source of the graph in Graphviz's dot. -module pep8analysis_web +module pep8analysis_web is + cppflags "--std=c++11 --bind" + ldflags "--bind" +end import emscripten @@ -28,14 +31,26 @@ import ast import model import cfg import flow_analysis +intrude import core::stream +import cpp + +in "C++" `{ + #include + + using namespace emscripten; + + EMSCRIPTEN_BINDINGS(my_module) { + function("run_analysis", &CString_run_analysis, allow_raw_pointers()); + } +`} redef class AnalysisManager - fun run(src: String) + fun run_web(src: String) do sys.suggest_garbage_collection - var stream = new StringIStream(src) + var stream = new StringReader(src) var ast = build_ast("web", stream) if ast == null then return @@ -80,8 +95,8 @@ redef class AnalysisManager print_notes if notes.is_empty then print "Success: Nothing wrong detected" - var of = new StringOStream - cfg.print_dot(of, true) + var of = new StringWriter + cfg.print_dot(of, false) of.close show_graph(of.to_s) @@ -93,17 +108,11 @@ redef class AnalysisManager fun show_graph(content: String) do "show_graph('{content.escape_to_c}');".run_js end -class StringIStream - super BufferedIStream - - init(str: String) do _buffer = new FlatBuffer.from(str) - - redef fun fill_buffer do end_reached = true - redef var end_reached: Bool = false +redef class CString + fun run_analysis do manager.run_web to_s end -redef class Object - redef fun manager do return once new AnalysisManager -end +fun dummy_set_callbacks import CString.run_analysis in "C++" `{ +`} -manager.run args.first +dummy_set_callbacks