Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. require 'json'
  2. require 'transproc/all'
  3.  
  4. # create your own local registry for transformation functions
  5. module Functions
  6. extend Transproc::Registry
  7. end
  8.  
  9. # import necessary functions from other transprocs...
  10. module Functions
  11. # import all singleton methods from a module/class
  12. import Transproc::HashTransformations
  13. import Transproc::ArrayTransformations
  14. end
  15.  
  16. def t(*args)
  17. Functions[*args]
  18. end
  19.  
  20. # The original one (broken)
  21. transformation = t(:map_array, t(:symbolize_keys)
  22. .>> t(:rename_keys, user_name: :user))
  23. .>> t(:wrap, :address, [:city, :street, :zipcode])
  24.  
  25. ## version 1
  26. # transformation = t(:map_array, (
  27. # t(:symbolize_keys).>> t(:rename_keys, user_name: :user)
  28. # )).>> t(:wrap, :address, [:city, :street, :zipcode])
  29.  
  30. ## version 2
  31. # transformation = t(:map_array,
  32. # (t(:symbolize_keys).>> t(:rename_keys, user_name: :user))
  33. # ).>> t(:wrap, :address, [:city, :street, :zipcode])
  34.  
  35. ## version 3
  36. # symbolize_and_rename = t(:symbolize_keys).>> t(:rename_keys, user_name: :user)
  37. # transformation = t(:map_array, symbolize_and_rename)
  38. # .>> t(:wrap, :address, [:city, :street, :zipcode])
  39.  
  40. result = transformation.call(
  41. [
  42. { 'user_name' => 'Jane',
  43. 'city' => 'NYC',
  44. 'street' => 'Street 1',
  45. 'zipcode' => '123' }
  46. ]
  47. )
  48.  
  49. puts result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement