-
-
Save gpittau/4132824 to your computer and use it in GitHub Desktop.
Portable Code for CanJS(frontend) & NodeJS(backend)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
( | |
function(fw) | |
{ | |
( | |
function(find,filter,spec) | |
{ | |
var results={} | |
fw.each( | |
spec | |
, function(source_transform,index) | |
{ | |
results[index] | |
= function(what) | |
{ | |
var transformed | |
= fw.clone(what) | |
, transformers | |
= fw.reduce( | |
source_transform | |
, function(result,field_t,key) | |
{ | |
var make_transformer | |
= function(field) | |
{ | |
var is_single | |
= field.key!=undefined | |
, is_linked | |
= field.linked!=undefined | |
, src | |
= index | |
, src_key | |
= is_single | |
?field.key | |
:'id' | |
, tgt | |
= is_linked | |
?field.linked | |
:field.embeded | |
, tgt_key | |
= is_linked | |
?field.linked_key | |
:field.embeded_key | |
return function(source_item,transform_key) | |
{ | |
var embed_single | |
= function() | |
{ | |
return find(tgt,tgt_key,source_item[src_key]) | |
} | |
, embed_list | |
= function() | |
{ | |
return filter(tgt,tgt_key,source_item[src_key]) | |
} | |
, link_single | |
= function() | |
{ | |
return {href:tgt+'/'+what[src_key]} | |
} | |
source_item[transform_key] | |
= is_single | |
?is_linked | |
?link_single() | |
:embed_single() | |
:embed_list() | |
} | |
} | |
result[key]=make_transformer(field_t) | |
return result | |
} | |
, {} | |
) | |
fw.each( | |
transformers | |
, function(t,k) | |
{ | |
t(transformed,k) | |
} | |
) | |
return transformed | |
} | |
} | |
) | |
return results | |
} | |
)(store_find,store_filter,transforms) | |
} | |
)(_) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment