Ruby modules in TypeScript
TypeScript implementations of 44 Ruby standard library functions across 3 modules. Each function is individually importable and tree-shakeable.
Array- bsearch
- bsearch_index
- compact
- filter_map
- first
- flatten
- group_by
- last
- permutation
- sample
- slice_when
- tally
- uniq
- zip
- capitalize
- chomp
- chop
- delete_prefix
- delete_suffix
- downcase
- end_with
- gsub
- include
- length
- reverse
- start_with
- strip
- tr
- upcase
We have 44 Ruby functions so far - help us add more
Got a rainy Sunday afternoon and a taste for a porting puzzle?
- Get inspiration from the Ruby core documentation.
- Click "New file" in the appropriate folder on GitHub. This will fork the project to your account, directly add the file to it, and send a Pull Request to us.
We will then review it. If it's useful to the project and in line with our contributing guidelines your work will become part of Locutus and you'll be automatically credited in the authors section accordingly.
Upstream Surface Inventory 44/290 shipped • 217 next 15%
Locutus tracks the upstream Ruby catalog and sorts it into what is already shipped, what we still want, what we intentionally keep, and what still needs a decision.
44 of 290 upstream entries are already shipped; 217 are explicitly on the shortlist; 29 are explicit non-goals.
14 shipped • 109 next • 11 explicit non-goals.
Next
-
-Most Ruby Array methods map naturally onto JS arrays and plain objects. -
[]Most Ruby Array methods map naturally onto JS arrays and plain objects. -
[]=Most Ruby Array methods map naturally onto JS arrays and plain objects. -
*Most Ruby Array methods map naturally onto JS arrays and plain objects. -
&Most Ruby Array methods map naturally onto JS arrays and plain objects. -
+Most Ruby Array methods map naturally onto JS arrays and plain objects. -
<<Most Ruby Array methods map naturally onto JS arrays and plain objects. -
|Most Ruby Array methods map naturally onto JS arrays and plain objects. -
all?Most Ruby Array methods map naturally onto JS arrays and plain objects. -
any?Most Ruby Array methods map naturally onto JS arrays and plain objects. -
appendMost Ruby Array methods map naturally onto JS arrays and plain objects. -
assocMost Ruby Array methods map naturally onto JS arrays and plain objects. -
atMost Ruby Array methods map naturally onto JS arrays and plain objects. -
chunkMost Ruby Array methods map naturally onto JS arrays and plain objects. -
chunk_whileMost Ruby Array methods map naturally onto JS arrays and plain objects. -
clearMost Ruby Array methods map naturally onto JS arrays and plain objects. -
collectMost Ruby Array methods map naturally onto JS arrays and plain objects. -
collect_concatMost Ruby Array methods map naturally onto JS arrays and plain objects. -
collect!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
combinationMost Ruby Array methods map naturally onto JS arrays and plain objects. -
compact!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
concatMost Ruby Array methods map naturally onto JS arrays and plain objects. -
countMost Ruby Array methods map naturally onto JS arrays and plain objects. -
cycleMost Ruby Array methods map naturally onto JS arrays and plain objects. -
deconstructMost Ruby Array methods map naturally onto JS arrays and plain objects. -
deleteMost Ruby Array methods map naturally onto JS arrays and plain objects. -
delete_atMost Ruby Array methods map naturally onto JS arrays and plain objects. -
delete_ifMost Ruby Array methods map naturally onto JS arrays and plain objects. -
detectMost Ruby Array methods map naturally onto JS arrays and plain objects. -
differenceMost Ruby Array methods map naturally onto JS arrays and plain objects. -
digMost Ruby Array methods map naturally onto JS arrays and plain objects. -
dropMost Ruby Array methods map naturally onto JS arrays and plain objects. -
drop_whileMost Ruby Array methods map naturally onto JS arrays and plain objects. -
empty?Most Ruby Array methods map naturally onto JS arrays and plain objects. -
entriesMost Ruby Array methods map naturally onto JS arrays and plain objects. -
fetchMost Ruby Array methods map naturally onto JS arrays and plain objects. -
fillMost Ruby Array methods map naturally onto JS arrays and plain objects. -
filterMost Ruby Array methods map naturally onto JS arrays and plain objects. -
filter!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
findMost Ruby Array methods map naturally onto JS arrays and plain objects. -
find_allMost Ruby Array methods map naturally onto JS arrays and plain objects. -
find_indexMost Ruby Array methods map naturally onto JS arrays and plain objects. -
flat_mapMost Ruby Array methods map naturally onto JS arrays and plain objects. -
flatten!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
grepMost Ruby Array methods map naturally onto JS arrays and plain objects. -
grep_vMost Ruby Array methods map naturally onto JS arrays and plain objects. -
include?Most Ruby Array methods map naturally onto JS arrays and plain objects. -
indexMost Ruby Array methods map naturally onto JS arrays and plain objects. -
injectMost Ruby Array methods map naturally onto JS arrays and plain objects. -
insertMost Ruby Array methods map naturally onto JS arrays and plain objects. -
intersect?Most Ruby Array methods map naturally onto JS arrays and plain objects. -
intersectionMost Ruby Array methods map naturally onto JS arrays and plain objects. -
joinMost Ruby Array methods map naturally onto JS arrays and plain objects. -
keep_ifMost Ruby Array methods map naturally onto JS arrays and plain objects. -
lengthMost Ruby Array methods map naturally onto JS arrays and plain objects. -
mapMost Ruby Array methods map naturally onto JS arrays and plain objects. -
map!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
maxMost Ruby Array methods map naturally onto JS arrays and plain objects. -
max_byMost Ruby Array methods map naturally onto JS arrays and plain objects. -
member?Most Ruby Array methods map naturally onto JS arrays and plain objects. -
minMost Ruby Array methods map naturally onto JS arrays and plain objects. -
min_byMost Ruby Array methods map naturally onto JS arrays and plain objects. -
minmaxMost Ruby Array methods map naturally onto JS arrays and plain objects. -
minmax_byMost Ruby Array methods map naturally onto JS arrays and plain objects. -
none?Most Ruby Array methods map naturally onto JS arrays and plain objects. -
one?Most Ruby Array methods map naturally onto JS arrays and plain objects. -
partitionMost Ruby Array methods map naturally onto JS arrays and plain objects. -
popMost Ruby Array methods map naturally onto JS arrays and plain objects. -
prependMost Ruby Array methods map naturally onto JS arrays and plain objects. -
productMost Ruby Array methods map naturally onto JS arrays and plain objects. -
pushMost Ruby Array methods map naturally onto JS arrays and plain objects. -
rassocMost Ruby Array methods map naturally onto JS arrays and plain objects. -
reduceMost Ruby Array methods map naturally onto JS arrays and plain objects. -
rejectMost Ruby Array methods map naturally onto JS arrays and plain objects. -
reject!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
repeated_combinationMost Ruby Array methods map naturally onto JS arrays and plain objects. -
repeated_permutationMost Ruby Array methods map naturally onto JS arrays and plain objects. -
replaceMost Ruby Array methods map naturally onto JS arrays and plain objects. -
reverseMost Ruby Array methods map naturally onto JS arrays and plain objects. -
reverse_eachMost Ruby Array methods map naturally onto JS arrays and plain objects. -
reverse!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
rindexMost Ruby Array methods map naturally onto JS arrays and plain objects. -
rotateMost Ruby Array methods map naturally onto JS arrays and plain objects. -
rotate!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
selectMost Ruby Array methods map naturally onto JS arrays and plain objects. -
select!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
shiftMost Ruby Array methods map naturally onto JS arrays and plain objects. -
shuffleMost Ruby Array methods map naturally onto JS arrays and plain objects. -
shuffle!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
sizeMost Ruby Array methods map naturally onto JS arrays and plain objects. -
sliceMost Ruby Array methods map naturally onto JS arrays and plain objects. -
slice_afterMost Ruby Array methods map naturally onto JS arrays and plain objects. -
slice_beforeMost Ruby Array methods map naturally onto JS arrays and plain objects. -
slice!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
sortMost Ruby Array methods map naturally onto JS arrays and plain objects. -
sort_byMost Ruby Array methods map naturally onto JS arrays and plain objects. -
sort_by!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
sort!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
sumMost Ruby Array methods map naturally onto JS arrays and plain objects. -
takeMost Ruby Array methods map naturally onto JS arrays and plain objects. -
take_whileMost Ruby Array methods map naturally onto JS arrays and plain objects. -
to_aMost Ruby Array methods map naturally onto JS arrays and plain objects. -
to_aryMost Ruby Array methods map naturally onto JS arrays and plain objects. -
to_hMost Ruby Array methods map naturally onto JS arrays and plain objects. -
transposeMost Ruby Array methods map naturally onto JS arrays and plain objects. -
unionMost Ruby Array methods map naturally onto JS arrays and plain objects. -
uniq!Most Ruby Array methods map naturally onto JS arrays and plain objects. -
unshiftMost Ruby Array methods map naturally onto JS arrays and plain objects. -
values_atMost Ruby Array methods map naturally onto JS arrays and plain objects.
Explicit non-goals (11)
-
chainLazy enumerator chaining is not a stable plain-value target. -
eachEnumerator-driven iteration APIs are better expressed directly in JS. -
each_consEnumerator-driven iteration APIs are better expressed directly in JS. -
each_entryEnumerator-driven iteration APIs are better expressed directly in JS. -
each_indexEnumerator-driven iteration APIs are better expressed directly in JS. -
each_sliceEnumerator-driven iteration APIs are better expressed directly in JS. -
each_with_indexEnumerator-driven iteration APIs are better expressed directly in JS. -
each_with_objectEnumerator-driven iteration APIs are better expressed directly in JS. -
lazyLazy enumerators do not fit Locutus' plain-value model. -
packBinary packing semantics do not map cleanly to JS plain values. -
to_setRuby Set values are not a stable plain-value target for Locutus.
15 shipped • 11 next.
Next
-
acoshRuby Math helpers map cleanly to JS numbers. -
asinhRuby Math helpers map cleanly to JS numbers. -
atan2Ruby Math helpers map cleanly to JS numbers. -
atanhRuby Math helpers map cleanly to JS numbers. -
erfRuby Math helpers map cleanly to JS numbers. -
erfcRuby Math helpers map cleanly to JS numbers. -
frexpRuby Math helpers map cleanly to JS numbers. -
gammaRuby Math helpers map cleanly to JS numbers. -
hypotRuby Math helpers map cleanly to JS numbers. -
ldexpRuby Math helpers map cleanly to JS numbers. -
lgammaRuby Math helpers map cleanly to JS numbers.
15 shipped • 97 next • 18 explicit non-goals.
Next
-
-@Most Ruby String methods are strong plain-value portability targets. -
[]Most Ruby String methods are strong plain-value portability targets. -
[]=Most Ruby String methods are strong plain-value portability targets. -
*Most Ruby String methods are strong plain-value portability targets. -
%Most Ruby String methods are strong plain-value portability targets. -
+Most Ruby String methods are strong plain-value portability targets. -
+@Most Ruby String methods are strong plain-value portability targets. -
<Most Ruby String methods are strong plain-value portability targets. -
<<Most Ruby String methods are strong plain-value portability targets. -
<=Most Ruby String methods are strong plain-value portability targets. -
=~Most Ruby String methods are strong plain-value portability targets. -
>Most Ruby String methods are strong plain-value portability targets. -
>=Most Ruby String methods are strong plain-value portability targets. -
ascii_only?Most Ruby String methods are strong plain-value portability targets. -
between?Most Ruby String methods are strong plain-value portability targets. -
capitalize!Most Ruby String methods are strong plain-value portability targets. -
casecmpMost Ruby String methods are strong plain-value portability targets. -
casecmp?Most Ruby String methods are strong plain-value portability targets. -
centerMost Ruby String methods are strong plain-value portability targets. -
charsMost Ruby String methods are strong plain-value portability targets. -
chomp!Most Ruby String methods are strong plain-value portability targets. -
chop!Most Ruby String methods are strong plain-value portability targets. -
chrMost Ruby String methods are strong plain-value portability targets. -
clampMost Ruby String methods are strong plain-value portability targets. -
clearMost Ruby String methods are strong plain-value portability targets. -
codepointsMost Ruby String methods are strong plain-value portability targets. -
concatMost Ruby String methods are strong plain-value portability targets. -
countMost Ruby String methods are strong plain-value portability targets. -
dedupMost Ruby String methods are strong plain-value portability targets. -
deleteMost Ruby String methods are strong plain-value portability targets. -
delete_prefix!Most Ruby String methods are strong plain-value portability targets. -
delete_suffix!Most Ruby String methods are strong plain-value portability targets. -
delete!Most Ruby String methods are strong plain-value portability targets. -
downcase!Most Ruby String methods are strong plain-value portability targets. -
dumpMost Ruby String methods are strong plain-value portability targets. -
empty?Most Ruby String methods are strong plain-value portability targets. -
getbyteMost Ruby String methods are strong plain-value portability targets. -
grapheme_clustersMost Ruby String methods are strong plain-value portability targets. -
gsub!Most Ruby String methods are strong plain-value portability targets. -
hexMost Ruby String methods are strong plain-value portability targets. -
indexMost Ruby String methods are strong plain-value portability targets. -
insertMost Ruby String methods are strong plain-value portability targets. -
linesMost Ruby String methods are strong plain-value portability targets. -
ljustMost Ruby String methods are strong plain-value portability targets. -
lstripMost Ruby String methods are strong plain-value portability targets. -
lstrip!Most Ruby String methods are strong plain-value portability targets. -
matchMost Ruby String methods are strong plain-value portability targets. -
match?Most Ruby String methods are strong plain-value portability targets. -
nextMost Ruby String methods are strong plain-value portability targets. -
next!Most Ruby String methods are strong plain-value portability targets. -
octMost Ruby String methods are strong plain-value portability targets. -
ordMost Ruby String methods are strong plain-value portability targets. -
partitionMost Ruby String methods are strong plain-value portability targets. -
prependMost Ruby String methods are strong plain-value portability targets. -
replaceMost Ruby String methods are strong plain-value portability targets. -
reverse!Most Ruby String methods are strong plain-value portability targets. -
rindexMost Ruby String methods are strong plain-value portability targets. -
rjustMost Ruby String methods are strong plain-value portability targets. -
rpartitionMost Ruby String methods are strong plain-value portability targets. -
rstripMost Ruby String methods are strong plain-value portability targets. -
rstrip!Most Ruby String methods are strong plain-value portability targets. -
scanMost Ruby String methods are strong plain-value portability targets. -
scrubMost Ruby String methods are strong plain-value portability targets. -
scrub!Most Ruby String methods are strong plain-value portability targets. -
setbyteMost Ruby String methods are strong plain-value portability targets. -
sizeMost Ruby String methods are strong plain-value portability targets. -
sliceMost Ruby String methods are strong plain-value portability targets. -
slice!Most Ruby String methods are strong plain-value portability targets. -
splitMost Ruby String methods are strong plain-value portability targets. -
squeezeMost Ruby String methods are strong plain-value portability targets. -
squeeze!Most Ruby String methods are strong plain-value portability targets. -
strip!Most Ruby String methods are strong plain-value portability targets. -
subMost Ruby String methods are strong plain-value portability targets. -
sub!Most Ruby String methods are strong plain-value portability targets. -
succMost Ruby String methods are strong plain-value portability targets. -
succ!Most Ruby String methods are strong plain-value portability targets. -
sumMost Ruby String methods are strong plain-value portability targets. -
swapcaseMost Ruby String methods are strong plain-value portability targets. -
swapcase!Most Ruby String methods are strong plain-value portability targets. -
to_cMost Ruby String methods are strong plain-value portability targets. -
to_fMost Ruby String methods are strong plain-value portability targets. -
to_iMost Ruby String methods are strong plain-value portability targets. -
to_rMost Ruby String methods are strong plain-value portability targets. -
to_strMost Ruby String methods are strong plain-value portability targets. -
to_symMost Ruby String methods are strong plain-value portability targets. -
tr_sMost Ruby String methods are strong plain-value portability targets. -
tr_s!Most Ruby String methods are strong plain-value portability targets. -
tr!Most Ruby String methods are strong plain-value portability targets. -
undumpMost Ruby String methods are strong plain-value portability targets. -
unicode_normalizeMost Ruby String methods are strong plain-value portability targets. -
unicode_normalize!Most Ruby String methods are strong plain-value portability targets. -
unicode_normalized?Most Ruby String methods are strong plain-value portability targets. -
unpackMost Ruby String methods are strong plain-value portability targets. -
unpack1Most Ruby String methods are strong plain-value portability targets. -
upcase!Most Ruby String methods are strong plain-value portability targets. -
uptoMost Ruby String methods are strong plain-value portability targets. -
valid_encoding?Most Ruby String methods are strong plain-value portability targets.
Explicit non-goals (18)
-
bRuby's binary-string clone helper adds little value in JS. -
byteindexByte-oriented string APIs do not fit Locutus' current plain-value model. -
byterindexByte-oriented string APIs do not fit Locutus' current plain-value model. -
bytesByte-oriented string APIs do not fit Locutus' current plain-value model. -
bytesizeByte-oriented string APIs do not fit Locutus' current plain-value model. -
bytesliceByte-oriented string APIs do not fit Locutus' current plain-value model. -
bytespliceByte-oriented string APIs do not fit Locutus' current plain-value model. -
cryptPassword-hash wrappers are security-sensitive and not a good Locutus target. -
each_byteEnumerator-driven iteration APIs are better expressed directly in JS. -
each_charEnumerator-driven iteration APIs are better expressed directly in JS. -
each_codepointEnumerator-driven iteration APIs are better expressed directly in JS. -
each_grapheme_clusterEnumerator-driven iteration APIs are better expressed directly in JS. -
each_lineEnumerator-driven iteration APIs are better expressed directly in JS. -
encodeEncoding-object semantics do not fit Locutus' plain-value model. -
encode!Encoding-object semantics do not fit Locutus' plain-value model. -
encodingEncoding objects are not a stable plain-value target. -
force_encodingEncoding mutation does not fit Locutus' plain-value model. -
internSymbol-table interning does not fit Locutus' plain-value model.