Skip to content

A tab-structured tree markup language. Inspired by Python, Markdown, and YAML

Notifications You must be signed in to change notification settings

antyakushev/tabdown

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 

Repository files navigation

#tabdown tabdown is for humans!

Write trees with as little syntactic overhead as possible!

Read trees with as little linguistic overhead as possible!

###what Tabdown is an ultra-minimalist markup language for describing trees. It uses leading tabs as a structuring character.

###examples ####a contrived todo list

I need to
	eat
		lunch
		dinner
	sleep

I want to
	browse the web
	read a book

####finding prime factorizations

72
	12
		4
			2
			2
		3
	6
		3
		2

###inspiration

  • whitespace as information carriers: inspired by Python
  • markup for humans, by humans: inspired by Markdown and YAML

###install

npm install tabdown

###usage

var tabdown = require('tabdown');
var lines = [ 
  '#shopping list',
  '\tsoy sauce',
  '\tonions',
  '\teggs',
  '',
  '#todo',
  '\teat',
  '\tsleep',
  '\tplay/work',
  '\t',
  '' ];


var tree = tabdown.parse(lines, '\t');
console.log(tree);
/*
{ data: null,
  depth: -1,
  parent: null,
  children: 
   [ { data: '#shopping list',
       depth: 0,
       parent: [Circular],
       children: [Object],
       tabcount: 0 },
     { data: '#todo',
       depth: 0,
       parent: [Circular],
       children: [Object],
       tabcount: 0 } ] }
*/
tabdown.print(tree);
/*
#shopping list
	soy sauce
	onions
	eggs
#todo
	eat
	sleep
	play/work
*/

tabdown.traverse(tree, function(node) { console.log(node.depth, node.data)});
/*
0 '#shopping list'
1 'soy sauce'
1 'onions'
1 'eggs'
0 '#todo'
1 'eat'
1 'sleep'
1 'play/work'
*/

About

A tab-structured tree markup language. Inspired by Python, Markdown, and YAML

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published