SofuJS – Release Canidate 1

March 9, 2008

Got it to work today.

It can read and write Sofu files, just like the other libraries.

I made a example JavaScript (no AJAX or server needed) Sofu Editor with TreeView and Value-Editor (so you don’t need to escape your values).

The Value-Editor is active after you click on a value in the TreeView.

You can try it out here (Javascript required, of course)

It works (as I tested it) in Firefox 2.0 and IE 7 (maybe more).
Try this Sofu file (for a little more complex example)

List = (
	"1"
	"2"
	"3"
	"4"
)
Map = {
	Content = "This is some demo content"
	OtherContent = (
		{
			Content = "Some more content"
		}
		{
			Content = "Even more content"
		}
	)
	<> = "This Value has an empty key"
}
Advertisement

ECMAScript, Javascript, JScript and Sofu

March 8, 2008

Some say JavaScript is annoying and should be turned off in the Browser.
Some others say Javascript is a very ugly language to program with.I say they are both right.
I did one thing in Javascript till today (Plasma’s 3d map view to be exact), and I don’t liked it that much. Today I had one of those stupid ideas that take away your whole weekend (And more). After finishing the dokumentation of Sofu.Net (0.2.1), I thought: “Why not do Sofu in JavaScript?” and “How hard can it be?”.

Why Sofu in JavaScript: Sofu is a file format, JavaScript can’t access files. Makes not a lot of sense, does it….
Well there is one application. Since Perl and .net (escpecially ASP.NET) now can now work with sofu files, you can use it to send structured data to the client (Webbrowser). This is done mostly during AJAX calls to the server.
Lets review what other structured data formats are there for AJAX communication:

  1. XML: This is a big one, it has bindings to almost any language running on webservers, but it is quite slow to parse and it tends to get very big if you write understandable tags.
  2. JSON: (Java Script Object Notation) Its easy to generate in most, easy to parse for JS (unsecure if parsed wrong) but it doesn’t support references and circular data structures…
  3. YAML: (http://www.yaml.org/) This is the way to go, mostly. Its quite fast, a superset of JSON, safe and supports references. Has also bindings in almost every language (even .Net, but that one hasn’t been active for almost 2 years now).

So where does Sofu fit in?
Sofu also supports references and the same datastructures as YAML, and its smaller than XML. And there are bindings to .Net, Perl and D.

But mostly I’m doing it to see if I can do it.

Current progress:

  • Not documented for now (How do I document JavaScript anyway, is there a nice API doc tool like POD for perl or Sandcastle for .net)?
  • API is very much the same as SofuD or Data::Sofu::Object of sofu.pm (Or Sofu.Net if you write the first letter of each method in lowercase).
  • Still missing a way to overload “for (var x in SofuMap) {}”, but I guess there is none.
  • Output is also working. (Well into a textarea of the browser).
  • Parsing is due after I sleep.
  • No Binary Sofu (I don’t think its useful and/or needed).
  • No SofuML (SofuML output: maybe, Parsing: Nope, not needing the parsing problem again)
  • Rest is working fine.