Giter Site home page Giter Site logo

Validating nomnoml diagrams? about nomnoml HOT 2 CLOSED

rstudio avatar rstudio commented on May 18, 2024
Validating nomnoml diagrams?

from nomnoml.

Comments (2)

andrie avatar andrie commented on May 18, 2024

This is great, thank you!

I tried your code, and it works great for the example provided, but I can't get it to work for multi-line diagrams, e.g:

nomnoml_validate("[hello]
                [world]")

results in:

Error in rcpp_eval(code) : SyntaxError: unterminated string (line 19004) 

However, I was able to get the same idea to work using V8 instead of duktape:

nomnoml_validate <- function(diagram = "[test]") {
  ct <- v8()
  ct$source(system.file("htmlwidgets/lib/dagre/dagre.min.js", package = "nomnoml"))
  ct$source(system.file("htmlwidgets/lib/lodash/lodash.js",   package = "nomnoml"))
  ct$source(system.file("htmlwidgets/lib/nomnoml/nomnoml.js", package = "nomnoml"))
  ct$assign("diagram", diagram)
  ct$eval("nomnoml.parse(diagram)"),
}

An invalid diagram:

> nomnoml_validate("[hello")
<std::runtime_error in context_eval(join(src), private$context, serialize): Error: Parse error on line 1:
[hello
------^
Expecting 'SEP', '|', ']', got 'EOF'>

A valid multi-line diagram:

> nomnoml_validate("[hello]
+                 [world]")
[1] "[object Object]"

Is there any disadvantage to use V8 compared to duktape?

from nomnoml.

andrie avatar andrie commented on May 18, 2024

I implemented this in #21

from nomnoml.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.