====== Zim:Api ======

See the [[:man:Zim|Zim(3)]][[:man:3:Zim| ]]man page for more developer documentation.

===== Zim =====
repository object, also manages plugins etc.
public interface to be used by the gui
* new($namespace, $dir)
* load_page($name)
* save_page($obj)
	* $obj->write_file if obj ISA Zim::Page::File
	* warn otherwise
* move_page($name, $name) || ($obj, $name)
* delete_page($name) || ($obj)
* page_exists($name)
* list_pages($namespace)

* filename($page) # also returns dir and realname in list context
* pagename($file)

===== Zim::Formatter =====
* blocks2text(\@block1, \@block2)
* text2blocks($text)

===== Zim::Page =====
public interface to be used by the gui
* new($zim, $name)
* name()
* realname()  # case sensitive name
* basename()
* namespace()
* status($string)
* resolve_link($link)
* clear() # clears content, not meta data
* clean() # cleans data tree
* push_block(@block)
* push_blocks(\@block1, \@block2)
* unshift_block(@block)
* read_block()
	* rewind after undef
* rewind()
* save == parent->save_page($self)
* delete == parent->delete_page($self)
* move  == parent->move_page($self, @_)

===== Zim::Page::File =====
private interface for file based pages
* read_file()  # uses Zim::Formatter by default
* write_file()  # uses Zim::Formatter by default
* remove_file()
* _read_file
* _write_file
* _mkdir() # makes path
* _rmdir() # removes path if empty

