idea for ycr2js demo, actually meant for an in-house project. is this realistic?

As I mentioned in a previous post, I've been spending quite some time trying to get live with ycr2js because there's a project it would be useful for for my day job, as well as making another nice demo to add to the list. Basically, I have some functionality that does client-side filtering of large html tables. It's pretty smart -- it can filter on multiple columns, and the filter can be any javascript expression from String -> Bool (to use haskell terminology in a javascript context). The filter works by hiding rows that don't match the filter; it's built on mochikit. Unfortunately this is rather ugly from the user's perspective. You have to type something like x.match("my string") into the search string or (x > 5 && x < 7) where x is some variable buried in the javascript. I would like for the user to be able to enter search criteria in a more intuitive "google" style =skittles or (=~"mr. goodbar" and =~"15 grams") so you need a parser that takes the search criteria and converts it into a function from (String -> Bool) This parser is relatively easy to build in haskell; I built it. It's surely also doable in javascript, but not as nicely, easily, and cleanly, and being a better haskell than javascript programmer as well, I would rather generate the javascript from haskell. So at any rate what I have is -- parser from String -> (String -> Bool) (haskell) -- working html/javascript built on mochikit that filters a multicolumn table with multiple filter expressions. There is a function here that takes a string and returns a bool, but it's icky, doesn't recognize quoted strings, doesn't recognize boolean and/or or parentheses. I want to replace it with a function generated from haskell that does all of these things. What I need is to combine these two components. I'll try and post some minimal source code for the parser and the javascript/mochikit stuff soon, and if this problem is tractable it can become another example for ycr2js. A possible reason why this wouldn't work is that when you're using the ycr2js stuff, *everything* has to be generated; it doesn't play well plugging in an existing javascript function with a generated one. I'd be surprised if that was the case, but since I haven't actually successfully generated any code yet i guess anything possible. At any rate, if this sort of thing could cause issues please someone in the know give me fair warning. thomas.
participants (1)
-
Thomas Hartman