class Manifest.ControllerModule.ActionModule.Base extends ManifestBase.TypeNameArgs set_default: () -> super() @args.item_name ||= Manifest.manifest().singularize(@parent.name) @args.param_id ||= 'prefix' init: () -> super() @action_name = @name @alias = @args.alias @item_name = @args.item_name @param_id = @args.param_id # source manifest of alias manifest @original = @args.original a_arg_names: () -> [] b_arg_names: () -> ['item_name', 'param_id'] controller: () -> @parent alias_action: () -> s = @alias.split('.') c = Manifest.manifest().controllers[s[0]] c.actions[s[1]] path_name: () -> @parent.name #Manifest.manifest().pluralize(@item_name) 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) -> controller_name = @path_name() c = controller_name a = if action_name == 'index' or action_name == 'show' or action_name == 'destroy' '' else '/' + action_name # f = if params['format'] # json request? so bad. html request as get rest api f = if params['format'] == 'prof' '.' + params['format'] else '' i = if params['id'] '/' + Pettanr.to_s(params['id']) else '' q = @encode_query(params) switch @param_id when 'prefix' c + i + a + f + q when 'suffix' c + a + i + f + q else c + a + f + q url: (params) -> @encode_url(@name, params)