Skip to content

Sluggo slug generator implemented in Lua

License

Notifications You must be signed in to change notification settings

bgkendall/sluaggo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sluaggo

Sluggo slug generator implemented in Lua. Primarily intended for (although not limited to) use in Pandoc filters.

References

  • sluggo.js
  • utf8data.lua — originally (?) from here, but more recently found here, and other locations.

Installation

Copy the following files to a directory in which Lua will look for packages:

  • sluaggo.lua
  • sluggo_ranges.lua
  • utf8case.lua
  • utf8data.lua

Notes:

  • utf8case.lua and utf8data.lua are not required when running inside Pandoc
  • utf8data.lua is not required if this file is already in the package path

Or, add the sluaggo directory to your shell’s LUA_PATH:

export LUA_PATH='$HOME/some/dir/sluaggo/?.lua;;'

(Note the double semicolon.)

Or, Lua’s package.path:

package.path = os.getenv('HOME')..'/some/dir/sluaggo/?.lua;'..package.path

Usage

local sluaggo = require('sluaggo')

s = sluaggo.sluaggo('@ monkey\'s are elab؉؉orate fools##')
print(s)

Outputs:

monkey-s-are-elab-orate-fools

Options

separator

Change the string separator by passing a string (usually one character) to separator.

local sluaggo = require('sluaggo')

s = sluaggo.sluaggo('monkey\'s are elaborate fools', { separator = ','})
print(s)

Outputs:

monkey,s,are,elaborate,fools

allow

Set a single-character string to allow in returned strings. Otherwise all punctuation characters are replaced by the separator.

local sluaggo = require('sluaggo')

s = sluaggo.sluaggo('@ monkey\'s are elab؉؉orate fools##', { allow = '؉'})
print(s)

Outputs:

monkey-s-are-elab؉؉orate-fools

Testing

Standalone

lua test/test.lua

Pandoc

pandoc --pdf-engine=xelatex -o test.pdf --lua-filter test/test.lua README.md