Skip to content

Instantly share code, notes, and snippets.

View rodoabad's full-sized avatar
😝
Changing the world through JavaScript (and TypeScript)!

Rodo Abad rodoabad

😝
Changing the world through JavaScript (and TypeScript)!
View GitHub Profile
import {UserGreeting} from './user-greeting';
import {connect} from 'react-redux';
const mapStateToProps = ({user}) => ({
firstName: user.firstName,
lastName: user.lastName
});
export const UserGreeetingConnector = connect(mapStateToProps)(UserGreeting);
import React from 'react';
import UserGreeting from './user-greeting-connector';
export const UserDashboard = () => (
<UserGreeting/>
);
import React, {Fragment} from 'react';
export const UserGreeting = ({firstName, lastName}) => (
<Fragment>{`Hello, ${firstName} ${lastName}!`}</Fragment>
);
import {UserGreeting} from './user-greeting';
import {connect} from 'react-redux';
const mapStateToProps = ({user}) => ({
firstName: user.firstName,
lastName: user.lastName
});
export default connect(mapStateToProps)(UserGreeting);
export const adjustDividendAmountForSplits = (dividend, splits) => {
const applicableSplits = findApplicableSplitsAgainstDividendYear(dividend.exDate, splits);
const divAmountWithAppliedSplitRatios = applySplitsRatiosToMatchingDividendAmount(dividend.amount, applicableSplits);
return new BigNumber(divAmountWithAppliedSplitRatios).decimalPlaces(defaultDecimalPlaces).toNumber();
};
export const applySplitsRatiosToMatchingDividendAmount = (dividendAmount, applicableSplits) => applicableSplits.reduce((acc, ratio) => {
return new BigNumber(acc).multipliedBy(ratio).toNumber();
}, dividendAmount);
export const adjustDividendAmountForSplits = (dividend, splits) => {
const dividendAmount = new BigNumber(dividend.amount);
const applicableSplits = findApplicableSplitsAgainstDividendYear(dividend.exDate, splits);
const divAmountWithAppliedSplitRatios = applySplitsRatiosToMatchingDividendAmount(dividendAmount, applicableSplits);
return divAmountWithAppliedSplitRatios.decimalPlaces(defaultDecimalPlaces).toNumber();
};
export const applySplitsRatiosToMatchingDividendAmount = (dividendAmount, applicableSplits) => applicableSplits.reduce((acc, ratio) => {
const amountWithAppliedSplitRatio = acc.multipliedBy(ratio);
return amountWithAppliedSplitRatio;
}, dividendAmount);
export const findApplicableSplitsAgainstDividendYear = (dividendYear, splits) => {
const formattedDividendYear = Number(moment(dividendYear).format('X'));
return splits.reduce((acc, split) => {
const formattedExDate = Number(moment(split.exDate).format('X'));
return formattedExDate > formattedDividendYear ?
[
...acc,
split.ratio
import BigNumber from 'bignumber.js';
import moment from 'moment';
const defaultDecimalPlaces = 10;
const findApplicableSplitsAgainstDividendYear = (dividendYear, splits) => {
const formattedDividendYear = Number(moment(dividendYear).format('X'));
return splits.reduce((acc, split) => {
const formattedExDate = Number(moment(split.exDate).format('X'));