# Lua

To use this language, use the class "language-lua".

## Comments

    #!/usr/local/bin/lua
    --
    -- Single line comment
    --[[ Multi line
    comment ]]
    --[====[ Multi line
    comment ]====]

## Strings

    ""
    "Foo\"bar"
    "Foo\
    bar \z
    baz"
    ''
    'Foo\'bar'
    'Foo\
    bar \z
    baz'
    [[Multi "line"
    string]]
    [==[Multi [["line"]]
    string]==]

## Numbers

    3
    345
    0xff
    0xBEBADA
    3, 3., 3.1, .3,
    3e12, 3.e-41, 3.1E+1, .3e1
    0x0.1E
    0xA23p-4
    0X1.921FB54442D18P+1

## Full example

    function To_Functable(t, fn)
      return setmetatable(t,
        {
         __index = function(t, k) return fn(k) end,
         __call = function(t, k) return t[k] end
        })
    end

    -- Functable bottles of beer implementation

    spell_out = {
      "One", "Two", "Three", "Four", "Five",
      "Six", "Seven", "Eight", "Nine", "Ten",
      [0] = "No more",
      [-1] = "Lots more"
    }

    spell_out = To_Functable(spell_out, function(i) return i end)

    bottles = To_Functable({"Just one bottle of beer"},
                           function(i)
                             return spell_out(i) .. " bottles of beer"
                           end)

    function line1(i)
      return bottles(i) .. " on the wall, " .. bottles(i) .. "\n"
    end

    line2 = To_Functable({[0] = "Go to the store, Buy some more,\n"},
                         function(i)
                           return "Take one down and pass it around,\n"
                         end)

    function line3(i)
      return bottles(i) .. " on the wall.\n"
    end

    function song(n)
      for i = n, 0, -1 do
        io.write(line1(i), line2(i), line3(i - 1), "\n")
      end
    end

## Known failures

There are certain edge cases where Prism will fail. There are always such cases in every regex-based syntax highlighter. However, Prism dares to be open and honest about them. If a failure is listed here, it doesn’t mean it will never be fixed. This is more of a “known bugs” list, just with a certain type of bug.

### Comment-like substrings

    "foo -- bar";

### Functions with a single string parameter not using parentheses are not highlighted

    foobar"param";