diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-12-24 13:54:03 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-12-24 13:54:03 +0900 |
| commit | 28e8bdf7f8286bd431b7f3b709e79f3827b31469 (patch) | |
| tree | 85b44eff6da4d8443198fb6e04dfb6ee55244588 /debian/.config/mpv/script-modules/utf8/begins/compiletime | |
| parent | 8470ff001befcfd0f626dea69a9e76d43aee0511 (diff) | |
updates
Diffstat (limited to 'debian/.config/mpv/script-modules/utf8/begins/compiletime')
| -rw-r--r-- | debian/.config/mpv/script-modules/utf8/begins/compiletime/parser.lua | 17 | ||||
| -rw-r--r-- | debian/.config/mpv/script-modules/utf8/begins/compiletime/vanilla.lua | 60 |
2 files changed, 77 insertions, 0 deletions
diff --git a/debian/.config/mpv/script-modules/utf8/begins/compiletime/parser.lua b/debian/.config/mpv/script-modules/utf8/begins/compiletime/parser.lua new file mode 100644 index 0000000..c54c0df --- /dev/null +++ b/debian/.config/mpv/script-modules/utf8/begins/compiletime/parser.lua @@ -0,0 +1,17 @@ +return function(utf8) + +utf8.config.begins = utf8.config.begins or { + utf8:require "begins.compiletime.vanilla" +} + +function utf8.regex.compiletime.begins.parse(regex, c, bs, ctx) + for _, m in ipairs(utf8.config.begins) do + local functions, move = m.parse(regex, c, bs, ctx) + utf8.debug("begins", _, c, bs, move, functions) + if functions then + return functions, move + end + end +end + +end diff --git a/debian/.config/mpv/script-modules/utf8/begins/compiletime/vanilla.lua b/debian/.config/mpv/script-modules/utf8/begins/compiletime/vanilla.lua new file mode 100644 index 0000000..bcafa17 --- /dev/null +++ b/debian/.config/mpv/script-modules/utf8/begins/compiletime/vanilla.lua @@ -0,0 +1,60 @@ +return function(utf8) + +local matchers = { + sliding = function() + return [[ + add(function(ctx) -- sliding + while ctx.pos <= ctx.len do + local clone = ctx:clone() + -- debug('starting from', clone, "start_pos", clone.pos) + clone.result.start = clone.pos + clone:next_function() + clone:get_function()(clone) + + ctx:next_char() + end + ctx:terminate() + end) +]] + end, + fromstart = function(ctx) + return [[ + add(function(ctx) -- fromstart + if ctx.byte_pos > ctx.len then + return + end + ctx.result.start = ctx.pos + ctx:next_function() + ctx:get_function()(ctx) + ctx:terminate() + end) +]] + end, +} + +local function default() + return matchers.sliding() +end + +local function parse(regex, c, bs, ctx) + if bs ~= 1 then return end + + local functions + local skip = 0 + + if c == '^' then + functions = matchers.fromstart() + skip = 1 + else + functions = matchers.sliding() + end + + return functions, skip +end + +return { + parse = parse, + default = default, +} + +end |
