0.3.9 • Published 8 years ago

patch-maker v0.3.9

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

Patch Maker

Rapidly build HTTP PATCH endpoints for you mongo-backed restful resources.

Getting Started

Install Patch Maker:

npm install patch-maker --save

Overview

Patch Maker is a PATCH submission parser builder/dsl. It allows you to quickly and concisely describe a mutable mongo-backed restful resource.

Examples

Build a Parser (with the help of the 'accurized' module):

{ field } = require 'accurize'
{ patch } = require 'patch-maker'
app.patch '/types', (req, res, next) ->
  parser = patch.parser ->
    @prop 'types', ->
      @oper 'set', (types, pass, fail) ->
        return fail 'Types must be a list of strings.' unless is_array types
        return fail 'Types cannot be empty.' if is_empty types
        for type in types
          return fail 'Each type must be a string' unless is_string type
          return fail 'A type cannot be empty.' if is_empty type
        Type(req).find(name: $in: types).all (actual) ->
          return fail 'Unrecognized type(s) specified.' unless types.length is actual.length
          pass types
      @oper 'add', (types, pass, fail) ->
        for type in types
          return fail 'A type cannot be empty.' if is_empty type
        Type(req).find(name: $in: types).all (actual) ->
          return fail 'Unrecognized type(s) specified.' unless types.length is actual.length
          pass types
      @oper 'rem', (types, pass, fail) ->
        if is_empty difference(grant.types, types)
          return fail 'The update must leave the grant with at least one type.'
        pass types
  updates.parse req.body,
    (updates) ->
      Grant(req).find_and_modify _id: id_for(grant), [['_id','asc']], updates, new: true, (grant) ->
        res.json Grant.grant_for(grant, res)
    (errors) ->
      res.json 400, { errors }

Parse a Patch:

 = require 'patch-maker'
parser =

Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality.

Release History

(Nothing yet)

0.3.9

8 years ago

0.3.8

9 years ago

0.3.7

9 years ago

0.3.6

9 years ago

0.3.5

9 years ago

0.3.4

9 years ago

0.3.3

10 years ago

0.3.2

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

11 years ago

0.1.0

11 years ago

0.0.1

11 years ago