cleanup of shred-map logic to accommodate new api doc build

This commit is contained in:
Jay Traband 2015-09-18 12:41:20 -07:00
parent 26a1405e40
commit a30fddadd0
11 changed files with 187 additions and 123 deletions

View File

@ -17,8 +17,8 @@ var fs = fsExtra;
var docShredder = require('./public/doc-shredder/doc-shredder');
var _shredOptions = {
examplesDir: path.resolve('./public/docs/_examples'),
fragmentsDir: path.resolve('./public/docs/_fragments')
examplesDir: './public/docs/_examples',
fragmentsDir: './public/docs/_fragments'
};
//var _apiShredOptions = {
@ -69,7 +69,7 @@ gulp.task('shred-full', ['shred-clean'], function() {
});
gulp.task('shred-clean', function(cb) {
var cleanPath = path.join(_shredOptions.basePath, _shredOptions.fragmentsDir, '**/*.*')
var cleanPath = path.join(_shredOptions.fragmentsDir, '**/*.*')
del([ cleanPath, '!**/*.ovr.*'], function (err, paths) {
// console.log('Deleted files/folders:\n', paths.join('\n'));
cb();
@ -121,11 +121,11 @@ gulp.task('git-changed-examples', ['shred-full'], function(){
console.log(JSON.stringify(jadeExampleMap, null, " "));
console.log("-----");
}).catch(function(err) {
console.log(err);
throw err;
});
});
gulp.task('build-api-docs', function() {
if (!fs.existsSync('../angular')) {
throw new Error('build-api-docs task requires the angular2 repo to be at ' + path.resolve('../angular'));
@ -133,15 +133,13 @@ gulp.task('build-api-docs', function() {
try {
var dgeni = new Dgeni([require('./public/api-builder/angular.io-package')]);
return dgeni.generate();
} catch(x) {
console.log(x);
console.log(x.stack);
throw x;
} catch(err) {
console.log(err);
console.log(err.stack);
throw err;
}
});
function filterOutExcludedPatterns(fileNames, excludeMatchers) {
return fileNames.filter(function(fileName) {
return !excludeMatchers.some(function(excludeMatcher) {
@ -152,8 +150,8 @@ function filterOutExcludedPatterns(fileNames, excludeMatchers) {
function buildShredMaps(shouldWrite) {
var options = _.extend(_shredOptions, {
jadeDir: '.',
outputDir: '.',
jadeDir: './public/docs',
outputDir: './public/docs',
writeFilesEnabled: shouldWrite
});
return docShredder.buildShredMap(options).then(function(docs) {
@ -163,7 +161,7 @@ function buildShredMaps(shouldWrite) {
// returns a promise containing filePaths with any changed or added examples;
function getChangedExamples(sha) {
var examplesPath = path.join(_shredOptions.basePath, _shredOptions.examplesDir);
var examplesPath = _shredOptions.examplesDir;
var relativePath = path.relative(process.cwd(), examplesPath);
return Git.Repository.open(".").then(function(repo) {
if (sha.length) {
@ -179,7 +177,7 @@ function getChangedExamples(sha) {
}
function getChangedExamplesAfter(date, relativePath) {
var examplesPath = path.join(_shredOptions.basePath, _shredOptions.examplesDir);
var examplesPath = _shredOptions.examplesDir;
var relativePath = path.relative(process.cwd(), examplesPath);
return Git.Repository.open(".").then(function(repo) {
return repo.getHeadCommit();
@ -241,20 +239,21 @@ function shredWatch(shredOptions, postShredAction) {
}
function jadeShredMapToJadeExampleMap(jadeShredMap, examplePaths) {
// remove dups in examplePaths
var exampleSet = {};
examplePaths.forEach(function(examplePath) {
exampleSet[examplePath] = examplePath;
});
var basePath = jadeShredMap.basePath;
var basePath = path.resolve(".");
var jadeToFragMap = jadeShredMap.jadeToFragMap;
var jadeExampleMap = {};
for (var jadePath in jadeToFragMap) {
var fullJadePath = path.join(basePath, jadePath);
var relativeJadePath = path.relative(basePath, jadePath);
var vals = jadeToFragMap[jadePath];
vals.forEach(function(val) {
var examplePath = path.join(basePath, val.examplePath);
if (exampleSet[examplePath] != null) {
addKeyValue(jadeExampleMap, fullJadePath, examplePath);
var relativeExamplePath = path.relative(basePath, val.examplePath);
if (exampleSet[relativeExamplePath] != null) {
addKeyValue(jadeExampleMap, relativeJadePath, relativeExamplePath);
}
});
}
@ -262,15 +261,14 @@ function jadeShredMapToJadeExampleMap(jadeShredMap, examplePaths) {
}
function jadeShredMapToExampleJadeMap(jadeShredMap) {
var basePath = jadeShredMap.basePath;
var jadeToFragMap = jadeShredMap.jadeToFragMap;
var exampleJadeMap = {};
for (var jadePath in jadeToFragMap) {
var fullJadePath = path.join(basePath, jadePath);
var vals = jadeToFragMap[jadePath];
vals.forEach(function(val) {
var examplePath = path.join(basePath, val.examplePath);
addKeyValue(exampleJadeMap, examplePath, fullJadePath);
var examplePath = val.examplePath;
addKeyValue(exampleJadeMap, examplePath, jadePath);
});
}
return exampleJadeMap;
@ -287,9 +285,10 @@ function addKeyValue(map, key, value) {
}
}
// added options are: shouldLog
// cb is function(err, stdout, stderr);
// Synchronously execute a chain of commands.
// cmds: an array of commands
// options: { shouldLog: true, shouldThrow: true }
// cb: function(err, stdout, stderr)
function execCommands(cmds, options, cb) {
options = options || {};
options.shouldThrow = options.shouldThrow == null ? true : options.shouldThrow;

View File

@ -7,16 +7,15 @@ var delPromise = Q.denodeify(del);
var Dgeni = require('dgeni');
var _ = require('lodash');
var shred = function(shredOptions) {
try {
var pkg = createShredPackage(shredOptions);
var dgeni = new Dgeni([ pkg]);
return dgeni.generate();
} catch(x) {
console.log(x.stack);
throw x;
} catch(err) {
console.log(err);
console.log(err.stack);
throw err;
}
}
@ -43,9 +42,10 @@ var buildShredMap = function(shredMapOptions) {
var pkg = createShredMapPackage(shredMapOptions);
var dgeni = new Dgeni([ pkg]);
return dgeni.generate();
} catch(x) {
console.log(x.stack);
throw x;
} catch(err) {
console.log(err);
console.log(err.stack);
throw err;
}
}
@ -94,7 +94,7 @@ function createShredPackage(shredOptions) {
})
.config(function(writeFilesProcessor) {
// Specify where the writeFilesProcessor will write our generated doc files
writeFilesProcessor.outputFolder = options.fragmentsDir;
writeFilesProcessor.outputFolder = path.resolve(options.fragmentsDir);
});
return pkg;
}
@ -118,7 +118,7 @@ var createShredMapPackage = function(mapOptions) {
// default configs - may be overriden
.config(function(readFilesProcessor) {
// Specify the base path used when resolving relative paths to source and output files
readFilesProcessor.basePath = '/'; // options.basePath;
readFilesProcessor.basePath = '/';
// Specify collections of source files that should contain the documentation to extract
var extns = ['*.jade' ];
@ -145,7 +145,7 @@ var createShredMapPackage = function(mapOptions) {
unescapeCommentsProcessor.$enabled = false;
} else {
// Specify where the writeFilesProcessor will write our generated doc files
writeFilesProcessor.outputFolder = options.outputDir;
writeFilesProcessor.outputFolder = path.resolve(options.outputDir);
}
})
.config(function(templateFinder) {
@ -181,25 +181,33 @@ var createShredMapPackage = function(mapOptions) {
}
function resolveShredOptions(shredOptions) {
return _.defaults({}, shredOptions, {
var so = _.defaults({}, shredOptions, {
// read files from any subdir under here
examplesDir: path.resolve("./docs/_examples"),
examplesDir: "./docs/_examples",
// shredded files get copied here with same subdir structure.
fragmentsDir: path.resolve("./docs/_fragments"),
fragmentsDir: "./docs/_fragments",
// whether to include subdirectories when shredding.
includeSubdirs: true
});
so.examplesDir = path.resolve(so.examplesDir);
so.fragmentsDir = path.resolve(so.fragmentsDir);
return so;
}
function resolveMapOptions(mapOptions) {
return _.defaults({}, mapOptions, {
var so = _.defaults({}, mapOptions, {
// read files from any subdir under here
jadeDir: path.resolve("./docs"),
fragmentsDir: path.resolve("./docs/_fragments"),
examplesDir: path.resolve("./docs/_examples"),
jadeDir: "./docs",
fragmentsDir: "./docs/_fragments",
examplesDir: "./docs/_examples",
// whether to include subdirectories when shredding.
includeSubdirs: true
});
so.jadeDir = path.resolve(so.jadeDir);
so.examplesDir = path.resolve(so.examplesDir);
so.fragmentsDir = path.resolve(so.fragmentsDir);
return so;
}
function initializePackage(pkg) {

View File

@ -24,7 +24,7 @@ module.exports = function fileShredder(log, regionExtractor) {
default:
return [];
}
log.info("fileShredder processing: " + fileInfo.projectRelativePath);
log.info("fileShredder processing: " + fileInfo.relativePath);
if (commentMarkers) {
return regionExtractor(fileInfo.content, commentMarkers);
} else {

View File

@ -19,28 +19,29 @@ module.exports = function shredMapProcessor(log) {
docs.forEach(function(doc) {
var jadePath = path.join(options.jadeDir, doc.fileInfo.relativePath);
var fragInfos = doc.fragPaths.map(function(fragPath) {
var relativeFragPath = path.join(options.fragmentsDir, fragPath) + '.md';
var fullPath = path.join(options.basePath, relativeFragPath);
var fragInfoSet = {};
doc.fragPaths.forEach(function(fragPath) {
var fullFragPath = path.join(options.fragmentsDir, fragPath) + '.md';
var examplePath = getExampleName(fragPath);
var relativeExamplePath = path.join(options.examplesDir, examplePath);
var fragInfo = { fragPath: relativeFragPath, examplePath: relativeExamplePath, exists: fs.existsSync(fullPath) };
var fullExamplePath = path.join(options.examplesDir, examplePath);
var fragInfo = { fragPath: fullFragPath, examplePath: fullExamplePath, exists: fs.existsSync(fullFragPath) };
fragInfoSet[fragPath] = fragInfo;
if (fragInfo.exists) {
var jadePaths = fragToJadeMap[fragInfo];
if (!jadePaths) {
jadePaths = [];
fragToJadeMap[fragPath] = jadePaths;
var jadePathsSet = fragToJadeMap[fragPath];
if (!jadePathsSet) {
jadePathsSet = {};
fragToJadeMap[fragPath] = jadePathsSet;
}
jadePaths.push(jadePath);
jadePathsSet[jadePath] = jadePath;
}
return fragInfo;
});
jadeToFragMap[jadePath] = fragInfos;
jadeToFragMap[jadePath] = _.values(fragInfoSet);
});
var basePath = path.relative(process.cwd(), this.options.basePath);
for (var key in fragToJadeMap) {
fragToJadeMap[key] = _.keys(fragToJadeMap[key]);
}
var shredMap = {
basePath: basePath,
jadeToFragMap: jadeToFragMap
};
@ -53,12 +54,10 @@ module.exports = function shredMapProcessor(log) {
outputPath: 'xref-jade.json'
}, {
docType: 'xref-jade.html',
basePath: basePath,
jadeToFragMap: jadeToFragMap,
outputPath: 'xref-jade-to-frag.html'
}, {
docType: 'xref-frag.html',
basePath: basePath,
fragToJadeMap: fragToJadeMap,
outputPath: 'xref-frag-to-jade.html'
}];

View File

@ -1,6 +1,5 @@
<h1> Frament path to jade path cross reference report
<p>Base path: {{ doc.basePath }}</p>
<ol>
{% for fragPath, jadePaths in doc.fragToJadeMap %}
<li>

View File

@ -1,6 +1,5 @@
<h1> Jade path to fragment path cross reference report
<p>Base path: {{ doc.basePath }}</p>
<ol>
{% for jadePath, fragInfos in doc.jadeToFragMap %}
<li>

View File

@ -6,6 +6,6 @@
<script src="app.js"></script>
</head>
<body>
<my-app></my-app>
<my-app>foo2</my-app>
</body>
</html>

View File

@ -6,7 +6,7 @@
<script src="app.js"></script>
</head>
<body>
<my-app></my-app>
<my-app>foo2</my-app>
</body>
</html>

View File

@ -1,13 +1,28 @@
<h1> Frament path to jade path cross reference report
<p>Base path: public/docs</p>
<ol>
<li>
Fragment file: <strong>styleguide/js/index.html</strong>
<p>Jade files</p>
<ul>
<li>C:/GitHub/angular.io.ideablade/public/docs/_includes/styleguide/_code-examples.jade</li>
</ul>
<br>
</li>
<li>
Fragment file: <strong>styleguide/js/app-class-w-annotations.js</strong>
<p>Jade files</p>
<ul>
<li>C:/GitHub/angular.io.ideablade/public/docs/_includes/styleguide/_code-examples.jade</li>
</ul>
<br>
</li>
<li>
Fragment file: <strong>gettingstarted/js/index.html</strong>
<p>Jade files</p>
<ul>
<li>js/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/js/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
@ -15,7 +30,7 @@
Fragment file: <strong>gettingstarted/js/app-class-w-annotations.js</strong>
<p>Jade files</p>
<ul>
<li>js/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/js/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
@ -23,7 +38,7 @@
Fragment file: <strong>gettingstarted/js/app-component.js</strong>
<p>Jade files</p>
<ul>
<li>js/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/js/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
@ -31,7 +46,7 @@
Fragment file: <strong>gettingstarted/js/app-view.js</strong>
<p>Jade files</p>
<ul>
<li>js/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/js/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
@ -39,55 +54,55 @@
Fragment file: <strong>gettingstarted/js/app-class.js</strong>
<p>Jade files</p>
<ul>
<li>js/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/js/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
<li>
Fragment file: <strong>gettingstarted/ts/index.html</strong>
Fragment file: <strong>gettingstarted/ts/src/index.html</strong>
<p>Jade files</p>
<ul>
<li>ts/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/ts/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
<li>
Fragment file: <strong>gettingstarted/ts/app-class.ts</strong>
Fragment file: <strong>gettingstarted/ts/src/app-class.ts</strong>
<p>Jade files</p>
<ul>
<li>ts/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/ts/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
<li>
Fragment file: <strong>gettingstarted/ts/app-import.ts</strong>
Fragment file: <strong>gettingstarted/ts/src/app-import.ts</strong>
<p>Jade files</p>
<ul>
<li>ts/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/ts/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
<li>
Fragment file: <strong>gettingstarted/ts/app-class-w-annotations.ts</strong>
Fragment file: <strong>gettingstarted/ts/src/app-class-w-annotations.ts</strong>
<p>Jade files</p>
<ul>
<li>ts/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/ts/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
<li>
Fragment file: <strong>gettingstarted/ts/app-bootstrap.ts</strong>
Fragment file: <strong>gettingstarted/ts/src/app-bootstrap.ts</strong>
<p>Jade files</p>
<ul>
<li>ts/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/ts/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>
<li>
Fragment file: <strong>gettingstarted/ts/app.ts</strong>
Fragment file: <strong>gettingstarted/ts/src/app.ts</strong>
<p>Jade files</p>
<ul>
<li>ts/latest/guide/gettingStarted.jade</li>
<li>C:/GitHub/angular.io.ideablade/public/docs/ts/latest/guide/gettingStarted.jade</li>
</ul>
<br>
</li>

View File

@ -1,19 +1,39 @@
<h1> Jade path to fragment path cross reference report
<p>Base path: public/docs</p>
<ol>
<li>
Jade file: <strong>js/latest/guide/gettingStarted.jade</strong>
Jade file: <strong>C:/GitHub/angular.io.ideablade/public/docs/_includes/styleguide/_code-examples.jade</strong>
<p>Fragment files</p>
<ul><li>_fragments/gettingstarted/js/index.html.md</li><li>_fragments/gettingstarted/js/app-class-w-annotations.js.md</li><li>_fragments/gettingstarted/js/app-component.js.md</li><li>_fragments/gettingstarted/js/app-view.js.md</li><li>_fragments/gettingstarted/js/app-class.js.md</li>
<ul><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/styleguide/js/index.html.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/styleguide/js/app-class-w-annotations.js.md</li>
</ul>
<br>
</li>
<li>
Jade file: <strong>ts/latest/guide/gettingStarted.jade</strong>
Jade file: <strong>C:/GitHub/angular.io.ideablade/public/docs/js/latest/api/core/APP_COMPONENT-const.jade</strong>
<p>Fragment files</p>
<ul><li>_fragments/gettingstarted/ts/index.html.md</li><li>_fragments/gettingstarted/ts/app-class.ts.md</li><li>_fragments/gettingstarted/ts/app-import.ts.md</li><li>_fragments/gettingstarted/ts/app-class-w-annotations.ts.md</li><li>_fragments/gettingstarted/ts/app-bootstrap.ts.md</li><li>_fragments/gettingstarted/ts/app.ts.md</li>
<ul><li> *** NOT FOUND*** : C:/GitHub/angular.io.ideablade/public/docs/_fragments/_api/a.b-foo.c.md</li>
</ul>
<br>
</li>
<li>
Jade file: <strong>C:/GitHub/angular.io.ideablade/public/docs/js/latest/api/core/ComponentMetadata-class.jade</strong>
<p>Fragment files</p>
<ul><li> *** NOT FOUND*** : C:/GitHub/angular.io.ideablade/public/docs/_fragments/_api/a.b-foo.c.md</li>
</ul>
<br>
</li>
<li>
Jade file: <strong>C:/GitHub/angular.io.ideablade/public/docs/js/latest/guide/gettingStarted.jade</strong>
<p>Fragment files</p>
<ul><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/index.html.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/app-class-w-annotations.js.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/app-component.js.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/app-view.js.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/app-class.js.md</li>
</ul>
<br>
</li>
<li>
Jade file: <strong>C:/GitHub/angular.io.ideablade/public/docs/ts/latest/guide/gettingStarted.jade</strong>
<p>Fragment files</p>
<ul><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/index.html.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app-class.ts.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app-import.ts.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app-class-w-annotations.ts.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app-bootstrap.ts.md</li><li>C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app.ts.md</li>
</ul>
<br>
</li>

View File

@ -1,62 +1,87 @@
{
"basePath": "public/docs",
"jadeToFragMap": {
"js/latest/guide/gettingStarted.jade": [
"C:/GitHub/angular.io.ideablade/public/docs/_includes/styleguide/_code-examples.jade": [
{
"fragPath": "_fragments/gettingstarted/js/index.html.md",
"examplePath": "_examples/gettingstarted/js/index.html",
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/styleguide/js/index.html.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/styleguide/js/index.html",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/js/app-class-w-annotations.js.md",
"examplePath": "_examples/gettingstarted/js/app-class-w.js",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/js/app-component.js.md",
"examplePath": "_examples/gettingstarted/js/app.js",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/js/app-view.js.md",
"examplePath": "_examples/gettingstarted/js/app.js",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/js/app-class.js.md",
"examplePath": "_examples/gettingstarted/js/app.js",
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/styleguide/js/app-class-w-annotations.js.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/styleguide/js/app-class-w.js",
"exists": true
}
],
"ts/latest/guide/gettingStarted.jade": [
"C:/GitHub/angular.io.ideablade/public/docs/js/latest/api/core/APP_COMPONENT-const.jade": [
{
"fragPath": "_fragments/gettingstarted/ts/index.html.md",
"examplePath": "_examples/gettingstarted/ts/index.html",
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/_api/a.b-foo.c.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/_api/a.b-foo.c",
"exists": false
}
],
"C:/GitHub/angular.io.ideablade/public/docs/js/latest/api/core/ComponentMetadata-class.jade": [
{
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/_api/a.b-foo.c.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/_api/a.b-foo.c",
"exists": false
}
],
"C:/GitHub/angular.io.ideablade/public/docs/js/latest/guide/gettingStarted.jade": [
{
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/index.html.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/js/index.html",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/ts/app-class.ts.md",
"examplePath": "_examples/gettingstarted/ts/app.ts",
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/app-class-w-annotations.js.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/js/app-class-w.js",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/ts/app-import.ts.md",
"examplePath": "_examples/gettingstarted/ts/app.ts",
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/app-component.js.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/js/app.js",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/ts/app-class-w-annotations.ts.md",
"examplePath": "_examples/gettingstarted/ts/app-class-w.ts",
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/app-view.js.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/js/app.js",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/ts/app-bootstrap.ts.md",
"examplePath": "_examples/gettingstarted/ts/app.ts",
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/js/app-class.js.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/js/app.js",
"exists": true
}
],
"C:/GitHub/angular.io.ideablade/public/docs/ts/latest/guide/gettingStarted.jade": [
{
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/index.html.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/ts/src/index.html",
"exists": true
},
{
"fragPath": "_fragments/gettingstarted/ts/app.ts.md",
"examplePath": "_examples/gettingstarted/ts/app.ts",
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app-class.ts.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/ts/src/app.ts",
"exists": true
},
{
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app-import.ts.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/ts/src/app.ts",
"exists": true
},
{
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app-class-w-annotations.ts.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/ts/src/app-class-w.ts",
"exists": true
},
{
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app-bootstrap.ts.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/ts/src/app.ts",
"exists": true
},
{
"fragPath": "C:/GitHub/angular.io.ideablade/public/docs/_fragments/gettingstarted/ts/src/app.ts.md",
"examplePath": "C:/GitHub/angular.io.ideablade/public/docs/_examples/gettingstarted/ts/src/app.ts",
"exists": true
}
]