class Manifest.ControllerModule.ActionModule.Base extends ManifestBase.TypeNameArgs set_default: () -> super() @args.item_name ||= @parent.item_name # not parent.name. follow singularized name @args.param_id ||= 'prefix' init: () -> super() @item_name = @args.item_name @param_id = @args.param_id encode_query: (params) -> q = [] q.push('page=' + Pettanr.to_s(params['page'])) if params['page'] q.push('page_size=' + Pettanr.to_s(params['page_size'])) if params['page_size'] if q.length > 0 '?' + q.join('&') else '' encode_url: (action_name, params) -> c = @parent.name a = if action_name != 'index' '/' + action_name else '' i = if params['id'] '/' + Pettanr.to_s(params['id']) else '' q = @encode_query(params) switch @param_id when 'prefix' c + i + a + q when 'suffix' c + a + i + q else c + a + q url: (params) -> @encode_url(@name, params)