# 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 26
# self = https://watcher.sour.is/conv/bvykn5a
@lukem And this is even nicer reply to this twt.
@lukem And this is even nicer reply to this twt.
@lukem cc @prologic re [this](https://github.com/jointwt/twtxt/issues/167#)
@lukem cc @prologic re [this](https://github.com/jointwt/twtxt/issues/167#)
@lukem @lukem Thank you! 🙇‍♂️ It repro'd!
@lukem @lukem Thank you! 🙇‍♂️ It repro'd!
@lukem @lukem Thank you! 🙇‍♂️ It repro'd!
@prologic also, the heck happened to the GitHub link in my Twt. I spent whole 5 seconds of my life copy-pasting and markdowning it to the best of my skills and on my end it rendered as an empty anchor.
@prologic also, the heck happened to the GitHub link in my Twt. I spent whole 5 seconds of my life copy-pasting and markdowning it to the best of my skills and on my end it rendered as an empty anchor.
@lukem Hmmm bug in the Markdown parser?

It seems your raw Twt looks like this:


2020-09-05T12:01:08Z	@<lukem https://twtxt.net/user/lukem/twtxt.txt> (#<bvykn5a https://twtxt.net/search?tag=bvykn5a>) cc @<prologic https://twtxt.net/user/prologic/twtxt.txt> re [this](https://github.com/jointwt/twtxt/issues/167#<issuecomment-687589760 https://twtxt.net/search?tag=issuecomment-687589760>)
@lukem Hmmm bug in the Markdown parser?\n\nIt seems your raw Twt looks like this:\n\n
\n2020-09-05T12:01:08Z\t@<lukem https://twtxt.net/user/lukem/twtxt.txt> (#<bvykn5a https://twtxt.net/search?tag=bvykn5a>) cc @<prologic https://twtxt.net/user/prologic/twtxt.txt> re [this](https://github.com/jointwt/twtxt/issues/167#<issuecomment-687589760 https://twtxt.net/search?tag=issuecomment-687589760>)\n
@lukem Hmmm bug in the Markdown parser?

It seems your raw Twt looks like this:


2020-09-05T12:01:08Z	@<lukem https://twtxt.net/user/lukem/twtxt.txt> (#<bvykn5a https://twtxt.net/search?tag=bvykn5a>) cc @<prologic https://twtxt.net/user/prologic/twtxt.txt> re [this](https://github.com/jointwt/twtxt/issues/167#<issuecomment-687589760 https://twtxt.net/search?tag=issuecomment-687589760>)
@lukem Hmmm bug in the Markdown parser?\n\nIt seems your raw Twt looks like this:\n\n

2020-09-05T12:01:08Z\t@<lukem https://twtxt.net/user/lukem/twtxt.txt> (#<bvykn5a https://twtxt.net/search?tag=bvykn5a>) cc @<prologic https://twtxt.net/user/prologic/twtxt.txt> re [this](https://github.com/jointwt/twtxt/issues/167#<issuecomment-687589760 https://twtxt.net/search?tag=issuecomment-687589760>)
In fact now that I look at it, it looks like a bug in our code with some very eager regex matching on something that isn't a tag 😢
In fact now that I look at it, it looks like a bug in our code with some very eager regex matching on something that isn't a tag 😢
In fact now that I look at it, it looks like a bug in our code with some very eager regex matching on something that isn't a tag 😢
@prologic oh yeah, regex problems, that's what I love in my developer life 😂😅😆😁🙂😐🙁😢😭
@prologic oh yeah, regex problems, that's what I love in my developer life 😂😅😆😁🙂😐🙁😢😭
Only way I can think of to solve this (_because Go's regexp library doesn't have negative look behinds_) is to do something like this:


 func ExpandTag(conf *Config, db Store, user *User, text string) string {
-       re := regexp.MustCompile(`#([-\w]+)`)
+       re := regexp.MustCompile(`[( ,;]#([-\w]+)`)
Only way I can think of to solve this (_because Go's regexp library doesn't have negative look behinds_) is to do something like this:


 func ExpandTag(conf *Config, db Store, user *User, text string) string {
-       re := regexp.MustCompile(`#([-\w]+)`)
+       re := regexp.MustCompile(`[( ,;]#([-\w]+)`)
Only way I can think of to solve this (_because Go's regexp library doesn't have negative look behinds_) is to do something like this:\n\n
\n func ExpandTag(conf *Config, db Store, user *User, text string) string {\n-       re := regexp.MustCompile(
#([-\\w]+))\n+ re := regexp.MustCompile([( ,;]#([-\\w]+))\n
Only way I can think of to solve this (_because Go's regexp library doesn't have negative look behinds_) is to do something like this:\n\n

 func ExpandTag(conf *Config, db Store, user *User, text string) string {
-       re := regexp.MustCompile(`#([-\\w]+)`)
+       re := regexp.MustCompile(`[( ,;]#([-\\w]+)`)
Only way I can think of to solve this (_because Go's regexp library doesn't have negative look behinds_) is to do something like this:\n\n
\n func ExpandTag(conf *Config, db Store, user *User, text string) string {\n-       re := regexp.MustCompile(
#([-\\w]+))\n+ re := regexp.MustCompile([( ,;]#([-\\w]+))\n
Thoughts?
Thoughts?
Thoughts?