lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]




On 24/01/16 09:31 PM, Daurnimator wrote:
On 25 January 2016 at 05:58,  <chuckiels2011@gmail.com> wrote:
Hello,

I'm new to the mailing list, so let me know if I'm inadvertently doing anything wrong. If I am, sorry about that :P

I was wondering if there is a posiblity of expanding the Lua standard library (mostly the string and table library). There are a few basic utility functions that I was hoping could be added to improve usability out of the box:

Strings:
- capitalize
This is a simple string.gsub call.
See also: string.upper

- split (this one I think is much needed. I'm constently rewriting myself split functions).
Lua prefers iterators over table generation. You should too!
string.gmatch is your friend here.

- strip (also write myself a lot of whitespace striping functions)
Many implementations are possible. See http://lua-users.org/wiki/StringTrim
In general, I prefer trim12.

- insert
I don't know what this would do??


Tables:
- any (the same as any? in Ruby)
Had to look this up: any?: Passes each element of the collection to
the given block. The method returns true if the block ever returns a
value other than false or nil.

So equvalent to: local no_false = true; for i, v in ipairs(tbl) do if
v == false or v == nil then no_false = false; break end end return
no_false

I'm not sure why you would ever need this??
if next(t) then
  -- t is not empty
end

- join (same as split)
See table.concat

- select (a filter function that can either accept a value or a function)
Lua prefers iterators over table generation.
Possibly see libraries such as luafun: https://github.com/rtsisyk/luafun

- shuffle (can be used to get a random value too, i.e `({1,2,3}):shuffle[1]`)
I'd prefer to implement this myself.
Also, thats terribly inefficient to shuffle a whole table just to get
the first one.
You can select a random element with: t[math.random(1, #t)]


--
Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.