diff options
author | Philipp Gesang <pgesang@ix.urz.uni-heidelberg.de> | 2010-09-15 16:46:47 +0200 |
---|---|---|
committer | Philipp Gesang <pgesang@ix.urz.uni-heidelberg.de> | 2010-09-15 16:46:47 +0200 |
commit | be4f91df9499f6a6db891afbc680438795ce0606 (patch) | |
tree | a263fded7699ea9eea2832d751db914ef0016f2e | |
parent | 32b085252affd98e0c4ed4bb2ec0748579e6bb56 (diff) | |
download | context-rst-be4f91df9499f6a6db891afbc680438795ce0606.tar.gz |
substitutions now support hyperlinking
-rw-r--r-- | rst_context.lua | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/rst_context.lua b/rst_context.lua index d92a33d..f9eab29 100644 --- a/rst_context.lua +++ b/rst_context.lua @@ -157,7 +157,8 @@ function rst_context.anon_reference (str) str = str:match("^`?([^`]+)`?__$") rst_context.anonymous_links = rst_context.anonymous_links + 1 link = "__target_anon_" .. rst_context.anonymous_links - return [[\\goto{]] .. str .. [[}[url(]] .. link .. [=[)]]=] + --return [[\\goto{]] .. str .. [[}[url(]] .. link .. [=[)]]=] + return string.format([[\\RSTchoosegoto{%s}{%s}]], link, str) end local whitespace = S" \n\t\v" @@ -208,9 +209,16 @@ function rst_context.inline_internal_target (str) return "\\\\reference[__target_" .. rst_context.whitespace_to_underscore(str) .."]{}" end -function rst_context.substitution_reference (str) +function rst_context.substitution_reference (str, underscores) + local sub = "" rst_context.addsetups("substitutions") - return [[{\\RSTsubstitution]] .. str:gsub("%s", "") .. "}" + if underscores == "_" then -- normal reference + sub = sub .. [[\\reference[__target_]] .. rst_context.whitespace_to_underscore(string.strip(str)) .. "]{}" + elseif underscores == "__" then -- normal reference + rst_context.anonymous_targets = rst_context.anonymous_targets + 1 + sub = sub .. [[\\reference[__target_anon_]] .. rst_context.anonymous_targets .. "]{}" + end + return sub .. [[{\\RSTsubstitution]] .. str:gsub("%s", "") .. "}" end function rst_context.escape (str) @@ -229,6 +237,7 @@ local inline_parser = P{ inline_element = Cs((V"strong_emphasis" + + V"substitution_reference" + V"anon_reference" + V"reference" + V"emphasis" @@ -236,7 +245,6 @@ local inline_parser = P{ + V"interpreted_text" + V"inline_internal_target" + V"footnote_reference" - + V"substitution_reference" + V"link_standalone") * V"succede_inline"), @@ -398,7 +406,7 @@ local inline_parser = P{ substitution_reference = V"bar" * C((1 - V"bar")^1) * V"bar" - * (V"underscore" + V"double_underscore")^-1 + * C((V"double_underscore" + V"underscore")^-1) / rst_context.substitution_reference , |