From 757433a78130dff61fbb483ceaf38c535958fe45 Mon Sep 17 00:00:00 2001 From: Oleh Prypin Date: Sun, 11 Oct 2020 03:26:10 +0200 Subject: [PATCH] Fix handling of word boundaries --- spec/compiler/crystal/tools/doc/doc_renderer_spec.cr | 6 +++--- src/compiler/crystal/tools/doc/markdown/doc_renderer.cr | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spec/compiler/crystal/tools/doc/doc_renderer_spec.cr b/spec/compiler/crystal/tools/doc/doc_renderer_spec.cr index 557889e4f2a5..cbee670b83a5 100644 --- a/spec/compiler/crystal/tools/doc/doc_renderer_spec.cr +++ b/spec/compiler/crystal/tools/doc/doc_renderer_spec.cr @@ -77,7 +77,7 @@ describe Doc::Markdown::DocRenderer do end end - pending "doesn't find sibling methods with fake receiver" do + it "doesn't find sibling methods with fake receiver" do {base, base_foo}.each do |obj| assert_code_link(obj, "wrong#bar") assert_code_link(obj, "wrong.bar") @@ -183,7 +183,7 @@ describe Doc::Markdown::DocRenderer do end end - pending "finds method of an absolute type" do + it "finds method of an absolute type" do {base, base_foo}.each do |obj| assert_code_link(obj, "::Base::Nested#foo", %(::Base::Nested#foo)) assert_code_link(obj, "::Base.baz", %(::Base.baz)) @@ -250,7 +250,7 @@ describe Doc::Markdown::DocRenderer do end end - pending "doesn't find type not at word boundary" do + it "doesn't find type not at word boundary" do {base, base_foo}.each do |obj| assert_code_link(obj, "aBase") end diff --git a/src/compiler/crystal/tools/doc/markdown/doc_renderer.cr b/src/compiler/crystal/tools/doc/markdown/doc_renderer.cr index 5d78a3be47b3..c0031e174d25 100644 --- a/src/compiler/crystal/tools/doc/markdown/doc_renderer.cr +++ b/src/compiler/crystal/tools/doc/markdown/doc_renderer.cr @@ -47,12 +47,12 @@ class Crystal::Doc::Markdown::DocRenderer < Crystal::Doc::Markdown::HTMLRenderer end # Check Type#method(...) or Type or #method(...) - text.gsub %r(\b - ((?:\:\:)?[A-Z]\w+(?:\:\:[A-Z]\w+)*[#\.][\w<=>+\-*\/\[\]&|?!^~]+[?!]?(?:\(.*?\))?) + text.gsub %r( + ((?:\B\:\:)?\b[A-Z]\w+(?:\:\:[A-Z]\w+)*[#\.][\w<=>+\-*\/\[\]&|?!^~]+[?!]?(?:\(.*?\))?) | - ((?:\:\:)?[A-Z]\w+(?:\:\:[A-Z]\w+)*) + ((?:\B\:\:)?\b[A-Z]\w+(?:\:\:[A-Z]\w+)*) | - ([#\.][\w<=>+\-*\/\[\]&|?!^~]+[?!]?(?:\(.*?\))?) + (\B[#\.][\w<=>+\-*\/\[\]&|?!^~]+[?!]?(?:\(.*?\))?) )x do |match_text, match| sharp_index = match_text.index('#') dot_index = match_text.index('.')