Giter Club home page Giter Club logo

taskpaper-parser's Introduction

#taskpaper-parser

taskpaper-parser is simple TaskPaper file format parser.

##Installation

npm install taskpaper-parser

##Examples

###File parsing

This will parse taskpaper file, and log parsed output as JSON.

var fs = require("fs");
var Parser = require("taskpaper-parser").Parser;

var taskPaperFile = __dirname + "/todo.taskpaper";

fs.readFile(taskPaperFile, { encoding: "utf8" }, function(error, data) {
	if (error) {
		console.error(error);
	}
	else {
		var parsedContent = new Parser(data).parse();
		console.log(JSON.stringify(parsedContent, null, 2));
	}
});

###ToDo creation

This will create taskpaper project, and serialize it into a string.

var TaskPaperParser = require("taskpaper-parser");

var Root = TaskPaperParser.Root;
var Project = TaskPaperParser.Project;
var Task = TaskPaperParser.Task;
var Tag = TaskPaperParser.Tag;
var Comment = TaskPaperParser.Comment;

// root holds everything in the file
var root = new Root();

// create some projects
var projectMain = new Project("main thing to do");
var projectSub = new Project("other things");

// create some tasks
var task1 = new Task("task 1");
var task2 = new Task("task 2");

// and a tag
var important = new Tag("priority", 1);

// add tag to task
task1.addTag(important);

// add tag to project
projectMain.addTag(important);

// comment on one of the task
var commentFor2 = new Comment("don't forget this!");

// add comment to task
task2.addChild(commentFor2);

// add tasks to projects;
projectMain.addChild(task1);
projectSub.addChild(task2);

// add projectSub as suproject of projectMain
projectMain.addChild(projectSub);

// add everything to root
root.addChild(projectMain);

// how will this look like a taskpaper file?
console.log(root.serialize());

##API

###Root

Root() holds all the data about taskpaper file; methods:

  • addChild(child) - used for build tree structure, root can hold projects, tasks and comments
  • serialize() - serializes whole tree into proper string

###Project

Project(name, tags) represents TaskPaper project; methods:

  • addChild(child) - used for build tree structure, project can hold subprojects, tasks, and comments
  • addTag(tag) - adds tag to project
  • serialize() - serializes project tree into proper string

###Task

Task(name, tags) represents TaskPaper task (tags are optional); methods:

  • addChild(child) - used for building tree structure, task can hold comments as children
  • addTag(tag) - adds tag to task
  • serialize() - serializes task tree (including tags and comments) into proper string

###Tag

Tag(name, value) represents TaskPaper task tag (value is optional); methods:

  • serialize() - serializes tag into proper string

###Comment

Comment(name) represents TaskPaper comment; methods:

  • serialize() - serializes comment into proper string

##License

MIT

taskpaper-parser's People

Contributors

szymonkaliski avatar jmeischner avatar

Watchers

 avatar

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.