Skip to content

Instantly share code, notes, and snippets.

Avatar

Fingercomp Fingercomp

View GitHub Profile
@Fingercomp
Fingercomp / dbg.lua
Created May 4, 2020
A better debug.debug()
View dbg.lua
local function insertNonNil(t, v)
if v then
v = tostring(v)
if #v > 0 then
table.insert(t, v)
end
end
end
local function backtrace(levelStart, shift)
@Fingercomp
Fingercomp / format.lua
Last active Mar 21, 2020
A slick formatter for the insane
View format.lua
local function format(arg)
local function expand(v)
if type(v) == "string" then
return v
elseif type(v) == "table" then
return tostring(v[1])
end
error("unsupported type")
end
@Fingercomp
Fingercomp / table-pack.md
Last active Jun 13, 2019
О функции `table.pack` и операторе `#` на примере REPL
View table-pack.md

Lua — прекрасный язык программирования. Прежде всего благодаря своей предельной простоте. Но даже в Lua есть свои нюансы.

Допустим, мы хотим создать свой Lua REPL. REPL — Read–Eval–Print Loop — также называется оболочкой (shell) или интерпретатором (interpreter). Из аббриевиатуры должно быть понятно, что эта прога будет делать:

  1. читать ввод
  2. интерпретировать его
  3. принтить выхлоп

Программа и так несложно выглядит, а в Lua ещё есть функция load, о которой

@Fingercomp
Fingercomp / stacktrace.lua
Last active Jun 20, 2019
A simple stacktracer for lua.
View stacktrace.lua
local function insertNonNil(t, v)
if v then
v = tostring(v)
if #v > 0 then
table.insert(t, v)
end
end
end
local function traceback(c)
@Fingercomp
Fingercomp / pcall-load.md
Created Aug 7, 2018
О `pcall` и `load` в Lua
View pcall-load.md

Познакомимся с load. Эта функция берёт первым аргументом строку и компилирует её.

local str = "Тест!"
print(load(str))
--> nil [string "Тест!"]:1: unexpected symbol near '<\208>'

Код выше вернёт странные идеограммы, но если присмотреться, то становится заметно, что именно там происходит.

@Fingercomp
Fingercomp / 00-sound-card-toc.md
Last active Jul 21, 2020
Guide to the Sound Card
View 00-sound-card-toc.md
View 00_weather_readme.markdown

Установка

  1. Скачать файлы unicodedata2.py, wttrin_png.py, parse_query.py и set-bg.sh в ~/.local/share/scripts/background/.
  2. Заменить $CITY_NAME в set-bg.sh на нужное имя города.
  3. Прописать pip3 install pyte pillow requests.
  4. В /usr/share/fonts/truetype создать ubuntu-font-family и запихать туда файл UbuntuMono-R.ttf [откуда-то отсюда][ubuntu-fonts].
  5. Там же должна быть директория ttf-dejavu с файлом DejaVuSansMono.ttf.
  6. Установить feh и imagemagick, если ещё не.
  7. Создать директорию ~/img/bg/ и поместить туда файл background.png с фоном.
  8. Сделать выполняемым файл: chmod +x ~/.local/share/scripts/background/set-bg.sh.
View particly-draw.lua
local com = require("component")
local event = require("event")
local p = com.particle
local image = [[
####...###....#...#####
....#.#...#...#.......#
.###..#...#...#......#.
#.....#...#...#.....#..
View eta.lua
local scale = 0.75
local avgs = {}
local function calcAvg(last)
if #avgs == 0 then
table.insert(avgs, last)
return last
end
local len = #avgs
local sum = 0
View hpm-0078181d8564e97a6cdd0d8510717d23c4707953.lua
local UlikV=load([===[
local rA5U=20160728.17
local Uc06="-[ JSON.lua package by Jeffrey Friedl (http://regex.info/blog/lua/json) version 20160728.17 ]-"local lcBL={VERSION=rA5U,AUTHOR_NOTE=Uc06}local DHPxI=" "
local dx={pretty=true,align_keys=false,indent=DHPxI}
local RRuSHnxf={__tostring=function()return"JSON array"end}RRuSHnxf.__index=RRuSHnxf
local mcYOuT={__tostring=function()return"JSON object"end}mcYOuT.__index=mcYOuT;function lcBL:newArray(iXxD6s)
return setmetatable(iXxD6s or{},RRuSHnxf)end;function lcBL:newObject(oiY)return
setmetatable(oiY or{},mcYOuT)end;local function Rr(FsYIVlkf)
return
You can’t perform that action at this time.