Skip to content

Commit b36f3f8

Browse files
kaosThibaut
authored andcommitted
core/doc: make sure name is usable as slug.
1 parent c01782a commit b36f3f8

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

lib/docs/core/doc.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ def name
4848
end
4949

5050
def slug
51-
slug = @slug || name.try(:downcase)
51+
slug = @slug || (
52+
raise "Slug must be set explicitly when name (#{name}) consists of anything else than [\\w\\.%]" if /[^\w\.%]/ =~ name
53+
name.try(:downcase)
54+
)
5255
version? ? "#{slug}~#{version_slug}" : slug
5356
end
5457

test/lib/docs/core/doc_test.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,18 @@ class DocsDocTest < MiniTest::Spec
5555
doc.version = '42'
5656
assert_equal 'foo~42', doc.slug
5757
end
58+
59+
it "returns 'foobar' when #name has been set to 'FooBar'" do
60+
doc.name = 'FooBar'
61+
assert_equal 'foobar', doc.slug
62+
end
63+
64+
it "raises error when #name has unsluggable characters" do
65+
assert_raises do
66+
doc.name = 'Foo-Bar'
67+
doc.slug
68+
end
69+
end
5870
end
5971

6072
describe ".slug=" do

0 commit comments

Comments
 (0)