From 121374db67114c1735b8e627ddc30b04dd02cfe2 Mon Sep 17 00:00:00 2001
From: Lars Trieloff <trieloff@adobe.com>
Date: Fri, 5 Jan 2018 13:09:55 +0000
Subject: [PATCH] show full, copyable path to definition group, fixes #29

---
 examples/docs/abstract.schema.md      | 4 ++--
 examples/docs/extensible.schema.md    | 4 ++--
 examples/docs/subdir/subdir.schema.md | 2 +-
 lib/markdownWriter.js                 | 5 ++++-
 templates/md/definitions.ejs          | 2 +-
 5 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/examples/docs/abstract.schema.md b/examples/docs/abstract.schema.md
index be4054c..5fb46d7 100644
--- a/examples/docs/abstract.schema.md
+++ b/examples/docs/abstract.schema.md
@@ -19,8 +19,8 @@ This is an abstract schema. It has `definitions`, but does not declare any prope
 
 | Property | Type | Group |
 |----------|------|-------|
-| [bar](#bar) | `string` | `#/definitions/second` |
-| [foo](#foo) | `string` | `#/definitions/first` |
+| [bar](#bar) | `string` | `https://example.com/schemas/abstract#/definitions/second` |
+| [foo](#foo) | `string` | `https://example.com/schemas/abstract#/definitions/first` |
 
 ## bar
 
diff --git a/examples/docs/extensible.schema.md b/examples/docs/extensible.schema.md
index 4a79bbf..d0f9c80 100644
--- a/examples/docs/extensible.schema.md
+++ b/examples/docs/extensible.schema.md
@@ -19,8 +19,8 @@ This is an extensible schema. It has `definitions`, that can be used in other sc
 
 | Property | Type | Group |
 |----------|------|-------|
-| [bar](#bar) | `string` | `#/definitions/second` |
-| [foo](#foo) | `string` | `#/definitions/first` |
+| [bar](#bar) | `string` | `https://example.com/schemas/extensible#/definitions/second` |
+| [foo](#foo) | `string` | `https://example.com/schemas/extensible#/definitions/first` |
 
 ## bar
 
diff --git a/examples/docs/subdir/subdir.schema.md b/examples/docs/subdir/subdir.schema.md
index 53dfc8c..5e236c3 100644
--- a/examples/docs/subdir/subdir.schema.md
+++ b/examples/docs/subdir/subdir.schema.md
@@ -19,7 +19,7 @@ A schema in a sub directory
 
 | Property | Type | Group |
 |----------|------|-------|
-| [id](#id) | `string` | `#/definitions/content` |
+| [id](#id) | `string` | `https://example.com/schemas/subdir/subdir#/definitions/content` |
 
 ## id
 
diff --git a/lib/markdownWriter.js b/lib/markdownWriter.js
index 00ba80d..8cd6a39 100644
--- a/lib/markdownWriter.js
+++ b/lib/markdownWriter.js
@@ -202,7 +202,10 @@ const generateMarkdown = function(filename, schema, schemaPath, outDir, dependen
     }
     if (_.keys(abstract).length>0) {
       //console.log('I got definitions!', abstract);
-      multi.push([ 'definitions.ejs', { props: requiredProperties(abstract), title: schema.title } ]);
+      multi.push([ 'definitions.ejs', {
+        props: requiredProperties(abstract),
+        title: schema.title,
+        id: schema.$id } ]);
       for (let i=0; i<_.keys(abstract).length;i++) {
         const name = _.keys(abstract).sort()[i];
         multi.push( [ 'property.ejs', {
diff --git a/templates/md/definitions.ejs b/templates/md/definitions.ejs
index 825051d..0c5f6b5 100644
--- a/templates/md/definitions.ejs
+++ b/templates/md/definitions.ejs
@@ -12,5 +12,5 @@
 |----------|------|-------|
 <% _.keys(props).sort().forEach(property => {
   const schema = props[property]; %>
-| [<%= property %>](#<%= property %>) | <%= schema.simpletype %> | `#/definitions/<%= schema.definitiongroup %>` |
+| [<%= property %>](#<%= property %>) | <%= schema.simpletype %> | `<%= id%>#/definitions/<%= schema.definitiongroup %>` |
 <% }); %>
\ No newline at end of file
-- 
GitLab