Skip to content

Instantly share code, notes, and snippets.

@codecalypso
Last active July 23, 2017 04:22
Show Gist options
  • Save codecalypso/b21d8ac668885c38c23a82225d5963b4 to your computer and use it in GitHub Desktop.
Save codecalypso/b21d8ac668885c38c23a82225d5963b4 to your computer and use it in GitHub Desktop.
Ramda Examples
var xLens = R.lensProp('x');
R.view(xLens, {x: 'Jerry', y: 'Tom'}); //“Jerry"
R.set(xLens, "Tweety", {x: 1, y: "Tom"}); //{"x": "Tweety", "y": "Tom"}
R.over(xLens, R.toUpper, {x: "jerry", y: "Tom"}); // {"x": "JERRY", "y": "Tom”}
const person = {
firstName: "Bruce",
lastName: "Wayne"
}
const flens = R.lens(R.prop("firstName"), R.assoc("firstName"))
const result = R.view(flens, person)
//"Bruce"
const superStars = [
{ name: "Beyonce", grammys: 22, birthYear: 1981 },
{ name: "Britney Spears", grammys: 1, birthyear: 1981},
{ name: "James Brown", grammys: 6, birthYear: 1933},
{ name: "Michal Jackson", grammys: 13, birthYear: 1958},
{ name: "Prince", grammys: 8, birthYear: 1958},
{ name: "Janet Jackson", grammys: 5, birthYear: 1966}
]
const names = superStars.map(n => ({name: n.name}))
const names = superStars.map(n => R.pick(['name'], n))
//[{"name":"Beyonce"},{"name":"Britney Spears"},{"name":"James Brown"},{"name":"Michal Jackson"},{"name":"Prince"},{"name":"Janet Jackson”}]
const superStars = [
{ name: "Beyonce", grammys: 22, birthYear: 1981 },
{ name: "Britney Spears", grammys: 1, birthyear: 1981},
{ name: "James Brown", grammys: 6, birthYear: 1933},
{ name: "Michal Jackson", grammys: 13, birthYear: 1958},
{ name: "Prince", grammys: 8, birthYear: 1958},
{ name: "Janet Jackson", grammys: 5, birthYear: 1966}
]
//[{"name":"Beyonce","grammys":22,"birthYear":1981},{"name":"Michal Jackson","grammys":13,"birthYear":1958},{"name":"Prince","grammys":8,"birthYear":1958},{"name":"James Brown","grammys":6,"birthYear":1933},{"name":"Janet Jackson","grammys":5,"birthYear":1966},{"name":"Britney Spears","grammys":1,"birthyear":1981}]
const beforeEighty = year => year.birthYear < 1980
//[{"birthYear": 1933, "grammys": 6, "name": "James Brown"}, {"birthYear": 1958, "grammys": 13, "name": "Michal Jackson"}, {"birthYear": 1958, "grammys": 8, "name": "Prince"}, {"birthYear": 1966, "grammys": 5, "name": "Janet Jackson”}]
const eightyAndAfter = R.reject(beforeEighty, superStars)
//[{"birthYear": 1981, "grammys": 22, "name": "Beyonce"}, {"birthyear": 1981, "grammys": 1, "name": "Britney Spears”}]
const schools = [
{ name: "King", rating: 6, type: "public"},
{ name: "Kenwood", rating: 6, type: "public"},
{ name: "Lane", rating: 10, type: "public"},
{ name: "Bogan", rating: 3, type: "public"},
{ name: "Jones", rating: 10, type: "public"},
{ name: "Payton", rating: 10, type: "public"},
]
const highRating = score => score.rating > 8
const result = R.partition(highRating, schools)
//[[{"name": "Lane", "rating": 10, "type": "public"}, {"name": "Jones", "rating": 10, "type": "public"}, {"name": "Payton", "rating": 10, "type": "public"}],
//[{"name": "King", "rating": 6, "type": "public"}, {"name": "Kenwood", "rating": 6, "type": "public"}, {"name": "Bogan", "rating": 3, "type": "public"}]]
const state ={a:
{
b:{
c: [1,2,3]
}
}
}
const path = lensPath(["a","b", "c"])
const append = (data) => data.concat(4)
over(path, append)(state)
//{"a": {"b": {"c": [1, 2, 3, 4]}}}
let EmptylaundryBasket = []
let laundryBasket = ["towels", "pants", "socks"]
var fn = R.cond([
[R.isEmpty, R.always('Work on art project')],
[R.complement(isEmpty), R.always('Head to nearest laundromat')],
[R.T, always('Nothing to see here')]
]);
fn(laundryBasket) //Head to nearest laundromat
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment