# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 61
# self = https://watcher.sour.is/conv/hrqg53a
@hirad @prologic make this a blog post plz

And I forgot, [Try It Online Again!](https://tio.run/##@JFrhgdr9c9WElZiInrFhGPsxcZPZPMkWW@yLgTs9wtmJDuh/ejD@/eexfn3h9uSiXhBSf4Hi4ZH3rDlA6Lik/TemduKbi7SKlL6CNsjnvgDaAjh2u4ba5uK73wTSkGF74STnK1pTaMR94FIm7SmNCYQCrg0ye4@nv41yVcOCMEX1/egOec4@rz/Dt8vr15PNfSvGBcgngR2pKzHGKWZSSWKaMCNncJ@VkSTRM2iARm9da0bPj3P01LyBIYJUVWClMgdgZz3FoTDfBJl0AZcnNZ7zdnGaEm6nMi/uPRgrMZjNtr9RQcnQf9u4h@kAnoMIAG7Y8C3OngL9OMgGSwIECeSVxKkgT6DokSIc@pND2r1U0LNJAVHf2@F9hgcKMF8)
@hirad @prologic [TIOA](https://tio.run/##@JFrhgdr9c9WElZiInrFhGPsxcZPZPMkWW@yLgTs9wtmJDuh/ejD@/eexfn3h9uSiXhBSf4Hi4ZH3rDlA6Lik/TemduKbi7SKlL6CNsjnvgDaAjh2u4ba5uK73wTSkGF74STnK1pTaMR94FIm7SmNCYQCrg0ye4@nv41yVcOCMEX1/egOec4@rz/Dt8vr15PNfSvGBcgngR2pKzHGKWZSSWKaMCNncJ@VkSTRM2iARm9da0bPj3P01LyBIYJUVWClMgdgZz3FoTDfBJl0AZcnNZ7zdnGaEm6nMi/uPRgrMZjNtr9RQcnQf9u4h@kAnoMIAG7Y8C3OngL9OMgGSwIECeSVxKkgT6DokSIc@pND2r1U0LNJAVHf2@F9hgcKMF8egJQQh1OIkSc0faiTMmyOaMZALNq@HoYnVWvVa5DXc2LIS04cqGOd77gQ)
@prologic @hirad This link does not work whatever https://tio.run/## https://twtxt.net/search?tag=jVVbb5tIFH7nV5zgB8DGYJxU7br2Q1IpVausFWXbhxUhCMO4RgszdGbIRZv97d4zYAy2Y7fIRnP5znfuh>@JFrhgdr9c9WElZiInrFhGPsxcZPZPMkWW@yLgTs9wtmJDuh/ejD@/eexfn3h9uSiXhBSf4Hi4ZH3rDlA6Lik/TemduKbi7SKlL6CNsjnvgDaAjh2u4ba5uK73wTSkGF74STnK1pTaMR94FIm7SmNCYQCrg0ye4@nv41yVcOCMEX1/egOec4@rz/Dt8vr15PNfSvGBcgngR2pKzHGKWZSSWKaMCNncJ@VkSTRM2iARm9da0bPj3P01LyBIYJUVWClMgdgZz3FoTDfBJl0AZcnNZ7zdnGaEm6nMi/uPRgrMZjNtr9RQcnQf9u4h@kAnoMIAG7Y8C3OngL9OMgGSwIECeSVxKkgT6DokSIc@pND2r1U0LNJAVHf2@F9hgcKMF8egJQQh1OIkSc0faiTMmyOaMZALNq@HoY
@hirad @prologic https://paste.ubuntu.com/p/YHmsCPnm2m/ also clean up this mess
Hmmm 🤔 you’ve hit a known bug with hash tag and link parsing
Hmmm 🤔 you’ve hit a known bug with hash tag and link parsing
Hmmm 🤔 you’ve hit a known bug with hash tag and link parsing
@prologic ooh I am adding that to my test suite
@prologic ooh I am adding that to my test suite
@prologic ooh I am adding that to my test suite
@prologic ooh I am adding that to my test suite
@xuu Nice!
@xuu Nice!
@xuu Nice!
@prologic as promised! https://github.com/JonLundy/twtxt/blob/xuu/integrate-lextwt/types/lextwt/lextwt_test.go# https://txt.sour.is/search?tag=L435-L461>\n\nthe lexer is nearing completion.. the tough part left is rooting out all the formatting code.
@prologic as promised! https://github.com/JonLundy/twtxt/blob/xuu/integrate-lextwt/types/lextwt/lextwt_test.go# https://txt.sour.is/search?tag=L435-L461>

the lexer is nearing completion.. the tough part left is rooting out all the formatting code.
@prologic as promised! https://github.com/JonLundy/twtxt/blob/xuu/integrate-lextwt/types/lextwt/lextwt_test.go# https://txt.sour.is/search?tag=L435-L461>

the lexer is nearing completion.. the tough part left is rooting out all the formatting code.
@prologic as promised! https://github.com/JonLundy/twtxt/blob/xuu/integrate-lextwt/types/lextwt/lextwt_test.go# https://txt.sour.is/search?tag=L435-L461>

the lexer is nearing completion.. the tough part left is rooting out all the formatting code.
@prologic as promised! https://github.com/JonLundy/twtxt/blob/xuu/integrate-lextwt/types/lextwt/lextwt_test.go# https://txt.sour.is/search?tag=L435-L461>\n\nthe lexer is nearing completion.. the tough part left is rooting out all the formatting code.
@xuu @prologic This is pretty cool, how were they parsed until now?
@xuu @prologic This is pretty cool, how were they parsed until now?
@xuu @prologic This is pretty cool, how were they parsed until now?
@xuu Nocr! Can we replace the regex parsers as-is now? 😁
@xuu Nocr! Can we replace the regex parsers as-is now? 😁
@xuu Nocr! Can we replace the regex parsers as-is now? 😁
@prologic kinda.. It can parse the twts into an AST.. but most of the formatting out expects a string to do regex over rather then the parsed AST. thats what i am working out next.
@prologic kinda.. It can parse the twts into an AST.. but most of the formatting out expects a string to do regex over rather then the parsed AST. thats what i am working out next.
@prologic kinda.. It can parse the twts into an AST.. but most of the formatting out expects a string to do regex over rather then the parsed AST. thats what i am working out next.
@prologic kinda.. It can parse the twts into an AST.. but most of the formatting out expects a string to do regex over rather then the parsed AST. thats what i am working out next.
@adi @prologic using regex. which can be a rather inexact science ;)
@adi @prologic using regex. which can be a rather inexact science ;)
@adi @prologic using regex. which can be a rather inexact science ;)
@adi @prologic using regex. which can be a rather inexact science ;)
@xuu And we'll still be able to apply Markdown over the result but still extract out the parts we need?
@xuu And we'll still be able to apply Markdown over the result but still extract out the parts we need?
@xuu And we'll still be able to apply Markdown over the result but still extract out the parts we need?
@prologic yep. it actually extracts everything at parse time. like mentions/tags/links/media. so they can be accessed and manipulated without additional parsing. it can then be output as MarkDown
@prologic yep. it actually extracts everything at parse time. like mentions/tags/links/media. so they can be accessed and manipulated without additional parsing. it can then be output as MarkDown
@prologic yep. it actually extracts everything at parse time. like mentions/tags/links/media. so they can be accessed and manipulated without additional parsing. it can then be output as MarkDown
@prologic yep. it actually extracts everything at parse time. like mentions/tags/links/media. so they can be accessed and manipulated without additional parsing. it can then be output as MarkDown
@prologic ah I need to add an edge case for naked urls with fragments.
@prologic ah I need to add an edge case for naked urls with fragments.
@prologic ah I need to add an edge case for naked urls with fragments.
@prologic ah I need to add an edge case for naked urls with fragments.
@xuu Very nice! 👌 Reminds me of the work I had to do in monkey-lang (_although that's a bit more exact as it has a proper grammar 🤣_)_
@xuu Very nice! 👌 Reminds me of the work I had to do in monkey-lang (_although that's a bit more exact as it has a proper grammar 🤣_)_
@xuu Very nice! 👌 Reminds me of the work I had to do in monkey-lang (_although that's a bit more exact as it has a proper grammar 🤣_)_
@prologic yep@some of the lexer is directly copied from monkey-lang. love that book series.
@prologic yep@some of the lexer is directly copied from monkey-lang. love that book series.
@prologic yep@some of the lexer is directly copied from monkey-lang. love that book series.
@prologic yep@some of the lexer is directly copied from monkey-lang. love that book series.
@xuu Me too! 😍
@xuu Me too! 😍
@xuu Me too! 😍
@prologic @xuu Closer! Last bit to finish is a beast. FormatTwtFactory
@prologic @xuu Closer! Last bit to finish is a beast. FormatTwtFactory
@prologic @xuu Closer! Last bit to finish is a beast. FormatTwtFactory
@prologic @xuu Closer! Last bit to finish is a beast. FormatTwtFactory
Ahh very nice! Have to say, really appreciate the hard work you've put into this! 🙇‍♂️
Ahh very nice! Have to say, really appreciate the hard work you've put into this! 🙇‍♂️
Ahh very nice! Have to say, really appreciate the hard work you've put into this! 🙇‍♂️