<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -99,7 +99,12 @@ module Nanoc3
     # For example, 'foo/*/bar' is transformed into /^foo\/(.*?)\/bar$/.
     def identifier_to_regex(identifier)
       if identifier.is_a? String
-        /^#{identifier.cleaned_identifier.gsub('*', '(.*?)')}?$/
+        # Add leading/trailing slashes if necessary
+        new_identifier = identifier.dup
+        new_identifier[/^/] = '/' if identifier[0,1] != '/'
+        new_identifier[/$/] = '/' unless [ '*', '/' ].include?(identifier[-1,1])
+
+        /^#{new_identifier.gsub('*', '(.*?)')}$/
       else
         identifier
       end</diff>
      <filename>lib/nanoc3/base/compiler_dsl.rb</filename>
    </modified>
    <modified>
      <diff>@@ -23,7 +23,7 @@ class Nanoc3::CompilerDSLTest &lt; MiniTest::Unit::TestCase
     compiler_dsl = Nanoc3::CompilerDSL.new(nil)
 
     actual   = compiler_dsl.instance_eval { identifier_to_regex('foo') }
-    expected = %r{^/foo/?$}
+    expected = %r{^/foo/$}
 
     assert_equal(expected.to_s,      actual.to_s)
     assert_equal(expected.source,    actual.source)
@@ -37,7 +37,7 @@ class Nanoc3::CompilerDSLTest &lt; MiniTest::Unit::TestCase
     compiler_dsl = Nanoc3::CompilerDSL.new(nil)
 
     actual   = compiler_dsl.instance_eval { identifier_to_regex('foo/*/bar') }
-    expected = %r{^/foo/(.*?)/bar/?$}
+    expected = %r{^/foo/(.*?)/bar/$}
 
     assert_equal(expected.to_s,      actual.to_s)
     assert_equal(expected.source,    actual.source)
@@ -51,7 +51,7 @@ class Nanoc3::CompilerDSLTest &lt; MiniTest::Unit::TestCase
     compiler_dsl = Nanoc3::CompilerDSL.new(nil)
 
     actual   = compiler_dsl.instance_eval { identifier_to_regex('foo/*/bar/*/qux') }
-    expected = %r{^/foo/(.*?)/bar/(.*?)/qux/?$}
+    expected = %r{^/foo/(.*?)/bar/(.*?)/qux/$}
 
     assert_equal(expected.to_s,      actual.to_s)
     assert_equal(expected.source,    actual.source)
@@ -65,7 +65,35 @@ class Nanoc3::CompilerDSLTest &lt; MiniTest::Unit::TestCase
     compiler_dsl = Nanoc3::CompilerDSL.new(nil)
 
     actual   = compiler_dsl.instance_eval { identifier_to_regex('*') }
-    expected = %r{^/(.*?)/?$}
+    expected = %r{^/(.*?)$}
+
+    assert_equal(expected.to_s,      actual.to_s)
+    assert_equal(expected.source,    actual.source)
+    assert_equal(expected.kcode,     actual.kcode) if expected.respond_to?(:kcode)
+    assert_equal(expected.casefold?, actual.casefold?)
+    assert_equal(expected.options,   actual.options)
+  end
+
+  def test_identifier_to_regex_with_root
+    # Create compiler DSL
+    compiler_dsl = Nanoc3::CompilerDSL.new(nil)
+
+    actual   = compiler_dsl.instance_eval { identifier_to_regex('/') }
+    expected = %r{^/$}
+
+    assert_equal(expected.to_s,      actual.to_s)
+    assert_equal(expected.source,    actual.source)
+    assert_equal(expected.kcode,     actual.kcode) if expected.respond_to?(:kcode)
+    assert_equal(expected.casefold?, actual.casefold?)
+    assert_equal(expected.options,   actual.options)
+  end
+
+  def test_identifier_to_regex_with_only_children
+    # Create compiler DSL
+    compiler_dsl = Nanoc3::CompilerDSL.new(nil)
+
+    actual   = compiler_dsl.instance_eval { identifier_to_regex('/foo/*/') }
+    expected = %r{^/foo/(.*?)/$}
 
     assert_equal(expected.to_s,      actual.to_s)
     assert_equal(expected.source,    actual.source)</diff>
      <filename>test/base/test_compiler_dsl.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>3e4a2505ea2ae1c3ba9d1317776aa535fc9135bc</id>
    </parent>
  </parents>
  <author>
    <name>Denis Defreyne</name>
    <email>denis.defreyne@stoneship.org</email>
  </author>
  <url>http://github.com/ddfreyne/nanoc/commit/57011238f26737c4a4f7c158f2148992c4c55cf2</url>
  <id>57011238f26737c4a4f7c158f2148992c4c55cf2</id>
  <committed-date>2009-11-06T14:59:19-08:00</committed-date>
  <authored-date>2009-11-06T14:59:19-08:00</authored-date>
  <message>made #identifier_to_regex properly handle only-children string patterns</message>
  <tree>e30172087bd38a2e90dd705c0e06d69121dc0820</tree>
  <committer>
    <name>Denis Defreyne</name>
    <email>denis.defreyne@stoneship.org</email>
  </committer>
</commit>
