estree 0.0.1

A deserializer for the ESTree format.
use easter::id::{IdData, Id};
use unjson::ty::Object;
use joker::track::*;

use tag::{Tag, TagOf};
use error::Error;
use result::Result;

pub trait IntoId {
    fn into_id(self) -> Result<Id>;
}

impl IntoStmt for Object {
    fn into_stmt(self) -> Result<Stmt> {
        let tag = try!(self.tag());
        Ok(match tag {
            Tag::EmptyStatement      => StmtData::Empty,
            Tag::ExpressionStatement => unimplemented!(),
            Tag::IfStatement         => unimplemented!(),
            Tag::DoWhileStatement    => unimplemented!(),
            Tag::WhileStatement      => unimplemented!(),
            Tag::ForStatement        => unimplemented!(),
            Tag::ForInStatement      => unimplemented!(),
            Tag::ForOfStatement      => unimplemented!(),
            Tag::BlockStatement      => unimplemented!(),
            Tag::ReturnStatement     => unimplemented!(),
            Tag::LabeledStatement    => unimplemented!(),
            Tag::BreakStatement      => unimplemented!(),
            Tag::ContinueStatement   => unimplemented!(),
            Tag::SwitchStatement     => unimplemented!(),
            Tag::WithStatement       => unimplemented!(),
            Tag::ThrowStatement      => unimplemented!(),
            Tag::DebuggerStatement   => unimplemented!(),
            Tag::TryStatement        => unimplemented!(),
            _ => { return Err(Error::NodeTypeMismatch("statement", tag)); }
        }.tracked(None))
    }
}