yaml-blog
this is a small module that tries to be a blog engine.
it reads from the file system and uses yaml, markdown and promises
API
the module is composed by three classes:
FileRepository
PostRepository
Blog
this is the schema of classes
-
Blog
-
PostRepository @post
FileRepository @fs
-
the three classes are created with dependency injection and defaults. they share the same configuration object.
the post
object is the yaml-front-matter
result. The post.body
is HTML
Blog
Constructor
blog = new Blog
path: <string>,<required>
post_per_page: <int>,<default:5>
post: <class>,<default:PostRepository>
fs: <class>,<default:FileRepository>
Methods
-
.getTags()
: returns a list of tagblog.getTags() ->
blog.getTags().then (tags) -> ...
-
.getPosts(o)
: returns different object based on the queryblog.getPosts from: , to: #slices the list title: #gets a post by title slug: #gets a post by slug page: #pages the collection based on the value from the constructor : #gets all posts
blog.getPosts() ->
blog.getPosts().then (posts) -> ...
-
.getTree()
: return a tree of the posts divided by year and monthblog.getTree() ->
blog.getTree().then (tree) -> tree[year:string] #the posts from the year tree[][month:string] #the posts from the month tree[][][index:int] #a post object ...
-
.save(post)
: saves the post through the @fs objectblog.save(post) ->
blog.save(post).then () -> ...
PostRepository
the PostRepository
instance is accessible via the .post
property of Blog
Constructor
postRep = new PostRepository
fs: <class>, <default:FileRepository>
path: <string>
Methods
-
.parse(data = null)
: parses in or out the datapostRep.parse() -> promise
postRep.parse().then (posts) -> ... #array with the posts
postRep.parse(post).then -> ... #saves the post in the filesystem
-
.delete(post)
: deletes the postpostRep.delete(post) ->
postRep.delete(post).then () -> ...
FileRepository
the FileRepository
instance is accessible via the .fs
property of PostRepository
Constructor
fileRep = new FileRepository(path <string>)
Methods
-
.getAllPath(dir = @dir)
: gets all the directory recursively. the optional argument is the path given from the constructorfileRep.getAllPath() ->
fileRep.getAllPath().then (paths) -> ...
-
.pathify(dir, file)
: unites the dir and the filenamefileRep.pathify(dir , file ) ->
-
.read(file)
: reads the filefileRep.read(file).then (content) -> ...
-
.write(file, data)
: writes the file on the filesystemfileRep.write(file , data ) -> promise
fileRep.write(file, data).then () -> ...
-
.delete(file)
: deletes the filefileRep.delete(file ) ->
fileRep.delete(file).then () -> ...