Merge pull request #49 from kikito/fix-del-escape

escape DEL character. fixes #40
This commit is contained in:
Enrique García Cota 2021-11-12 12:58:38 +01:00 committed by GitHub
commit a74242cdac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 43 deletions

29
.github/workflows/test.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: test
on: [push]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
luaVersion: ["5.1.5", "5.2.4", "luajit-2.1.0-beta3", "luajit-openresty"]
steps:
- uses: actions/checkout@master
- uses: leafo/gh-actions-lua@v8.0.0
with:
luaVersion: ${{ matrix.luaVersion }}
- uses: leafo/gh-actions-luarocks@v4.0.0
- name: build
run: |
luarocks install busted
luarocks make
- name: test
run: |
busted -o utfTerminal

View File

@ -1,36 +0,0 @@
language: python
sudo: false
env:
- LUA="lua=5.1"
- LUA="lua=5.2"
- LUA="lua=5.3"
- LUA="luajit=2.0"
- LUA="luajit=2.1"
before_install:
- pip install hererocks
- hererocks lua_install -r^ --$LUA
- export PATH=$PATH:$PWD/lua_install/bin # Add directory with all installed binaries to PATH
install:
- luarocks install luacheck
- luarocks install busted
- luarocks install luacov
- luarocks install luacov-coveralls
script:
- luacheck --std max+busted *.lua spec
- busted --verbose --coverage
after_success:
- luacov-coveralls --exclude $TRAVIS_BUILD_DIR/lua_install
branches:
except:
- gh-pages
notifications:
email:
on_success: change
on_failure: always

View File

@ -1,9 +1,6 @@
inspect.lua
===========
[![Build Status](https://travis-ci.org/kikito/inspect.lua.png?branch=master)](https://travis-ci.org/kikito/inspect.lua)
[![Coverage Status](https://coveralls.io/repos/github/kikito/inspect.lua/badge.svg?branch=master)](https://coveralls.io/github/kikito/inspect.lua?branch=master)
This library transforms any Lua value into a human-readable representation. It is especially useful for debugging errors in tables.

View File

@ -46,12 +46,12 @@ local function smartQuote(str)
return '"' .. str:gsub('"', '\\"') .. '"'
end
-- \a => '\\a', \0 => '\\0', 31 => '\31'
-- \a => '\\a', \0 => nil
local shortControlCharEscapes = {
["\a"] = "\\a", ["\b"] = "\\b", ["\f"] = "\\f", ["\n"] = "\\n",
["\r"] = "\\r", ["\t"] = "\\t", ["\v"] = "\\v"
["\r"] = "\\r", ["\t"] = "\\t", ["\v"] = "\\v", ["\127"] = "\\127",
}
local longControlCharEscapes = {} -- \a => nil, \0 => \000, 31 => \031
local longControlCharEscapes = {["\127"]="\127"} -- \a => nil, \0 => \000, 31 => \031
for i=0, 31 do
local ch = string.char(i)
if not shortControlCharEscapes[ch] then
@ -59,6 +59,7 @@ for i=0, 31 do
longControlCharEscapes[ch] = string.format("\\%03d", i)
end
end
--longControlCharEscapes["\127"]="\\127"
local function escape(str)
return (str:gsub("\\", "\\\\")

View File

@ -43,7 +43,12 @@ describe( 'inspect', function()
inspect('Here are some control characters: \0 \1 \6 \17 \27 \31'))
end)
it('escapes unnamed control characters with 3 digits when they are followed by numbers', function()
it('escapes DEL', function()
assert.equals('"DEL: \\127"',
inspect('DEL: \127'))
end)
it('escapes unnamed control characters with 4 digits when they are followed by numbers', function()
assert.equals('"Control chars followed by digits \\0001 \\0011 \\0061 \\0171 \\0271 \\0311"',
inspect('Control chars followed by digits \0001 \0011 \0061 \0171 \0271 \0311'))
end)