Last active
April 3, 2017 10:58
-
-
Save fson/c2d9657a34dabc6b4ca71df973c7738e to your computer and use it in GitHub Desktop.
Paluu.js – Redux
This file contains hidden or 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
tuo onPelkistettyOlio paikasta 'ala-ajatusviiva/onPelkistettyOlio' | |
tuo $$havaittava paikasta 'merkki-havaittava' | |
vie vakio TekoTyypit = { | |
ALUSTA: '@@redux/ALUSTA' | |
} | |
vie oletus funktio luoVarasto(vähentäjä, esikuormitettuTila, tehostaja) { | |
jos ( | |
sentyyppi esikuormitettuTila === 'funktio' && | |
sentyyppi tehostaja === 'määrittämätön' | |
) { | |
tehostaja = esikuormitettuTila | |
esikuormitettuTila = määrittämätön | |
} | |
jos (sentyyppi tehostaja !== 'määrittämätön') { | |
jos (sentyyppi tehostaja !== 'funktio') { | |
heitä uusi Virhe('Odotin tehostajan olevan funktio.') | |
} | |
palauta tehostaja(luoVarasto)(vähentäjä, esikuormitettuTila) | |
} | |
jos (sentyyppi vähentäjä !== 'funktio') { | |
heitä uusi Virhe('Odotin vähentäjän olevan funktio.') | |
} | |
olkoon nykyinenVähentäjä = vähentäjä | |
olkoon nykyinenTila = esikuormitettuTila | |
olkoon nykyisetKuuntelijat = [] | |
olkoon seuraavatKuuntelijat = nykyisetKuuntelijat | |
olkoon onLähettämässä = epätosi | |
funktio varmistaVoiMutatoidaSeuraavatKuuntelijat() { | |
jos (seuraavatKuuntelijat === nykyisetKuuntelijat) { | |
seuraavatKuuntelijat = nykyisetKuuntelijat.siivu() | |
} | |
} | |
funktio otaTila() { | |
palauta nykyinenTila | |
} | |
funktio tilaa(kuuntelija) { | |
jos (sentyyppi kuuntelija !== 'funktio') { | |
heitä uusi Virhe('Odotin kuuntelijan olevan funktio.') | |
} | |
olkoon onTilanut = tosi | |
varmistaVoiMutatoidaSeuraavatKuuntelijat() | |
seuraavatKuuntelijat.työnnä(kuuntelija) | |
palauta funktio peruTilaus() { | |
jos (!onTilanut) { | |
palauta | |
} | |
onTilanut = epätosi | |
varmistaVoiMutatoidaSeuraavatKuuntelijat() | |
vakio indeksi = seuraavatKuuntelijat.senIndeksi(kuuntelija) | |
seuraavatKuuntelijat.pleissaa(indeksi, 1) | |
} | |
} | |
funktio lähetä(teko) { | |
jos (!onPelkistettyOlio(teko)) { | |
heitä uusi Virhe( | |
'Tekojen pitää olla pelkistettyjä olioita. ' + | |
'Käytä mukautettua väliohjelmistoa tahdistamattomiin tekoihin.' | |
) | |
} | |
jos (sentyyppi teko.tyyppi === 'määrittämätön') { | |
heitä uusi Virhe( | |
'Teoilla ei voi olla määrittämätöntä "tyyppi" ominaisuutta.' | |
'Oletko kirjoittanut vakion väärin?' | |
) | |
} | |
jos (onLähettämässä) { | |
heitä uusi Virhe('Vähentäjät eivät voi lähettää tekoja.') | |
} | |
yritä { | |
onLähettämässä = tosi | |
nykyinenTila = nykyinenVähentäjä(nykyinenTila, teko) | |
} lopuksi { | |
onLähettämässä = epätosi | |
} | |
vakio kuuntelijat = nykyisetKuuntelijat = seuraavatKuuntelijat | |
kohti (olkoon i = 0; i < kuuntelijat.pituus; i++) { | |
vakio kuuntelija = kuuntelijat[i] | |
kuuntelija() | |
} | |
palauta teko | |
} | |
funktio vaihdaVähentäjä(seuraavaVähentäjä) { | |
jos (sentyyppi seuraavaVähentäjä !== 'funktio') { | |
heitä uusi Virhe('Odotin että seuraavaVähentäjä olisi funktio.') | |
} | |
nykyinenVähentäjä = seuraavaVähentäjä | |
lähetä({ tyyppi: TekoTyypit.ALUSTA }) | |
} | |
funktio havaittava() { | |
vakio ulompiTilaa = tilaa | |
palauta { | |
tilaa(havaitsija) { | |
jos (sentyyppi havaitsija !== 'olio') { | |
heitä uusi TyyppiVirhe('Odotin havaitsijan olevan olio.') | |
} | |
funktio havaitseTila() { | |
jos (havaitsija.seuraava) { | |
havaitsija.seuraava(otaTila()) | |
} | |
} | |
havaitseTila() | |
vakio peruTilaus = ulompiTilaa(havaitseTila) | |
palauta { peruTilaus } | |
}, | |
[$$havaittava]() { | |
palauta tämä | |
} | |
} | |
} | |
lähetä({ tyyppi: TekoTyypit.ALUSTA }) | |
palauta { | |
lähetä, | |
tilaa, | |
otaTila, | |
vaihdaVähentäjä, | |
[$$havaittava]: havaittava | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment