Patrice Chalin b0e0d94b5c docs: revert Jade to markdown
closes #1818
Previously, the markdown of some chapters was converted to Jade markup
to support the conditional exclusion of TS prose parts in Dart
chapters. This commit reverts some of that back to clean markdown,
thanks to a few custom directives.
2016-07-05 23:03:30 -07:00

88 lines
3.2 KiB
JavaScript

// This will be nicer once we switch to Ng2. For now, define a singleton.
var NgIoUtil = (function () {
function NgIoUtil() { }
NgIoUtil.isDartDoc = function ($location) {
var loc = $location.absUrl();
return loc.includes('/docs/dart/');
};
// The following util functions are adapted from _utils-fn.jade.
// Note that basename(), etc doesn't quite follow
// https://nodejs.org/api/path.html
// but it suits our purpose for now.
NgIoUtil.adjustTsExamplePathForDart = function (_path) {
/* Convert a TS example path into a Dart example path. E.g.,
*
* - app/main.ts -> web/main.dart
* - displaying-data/ts/app/app.component.2.ts -> displaying-data/dart/lib/app_component.dart
*
* Notice that the '.2' is dropped from the name.
*/
if (!_path) return _path;
var path = _path.trim();
var folder = NgIoUtil.folderName(path);
var ext = NgIoUtil.extname(path);
var baseNameNoExt = NgIoUtil.basename(path, ext);
var inWebFolder = baseNameNoExt.match(/^(main|index)(\.\d)?$/);
// Adjust the folder path, e.g., '/ts/' -> '/dart/'
folder = folder
.replace(/(^|\/)ts($|\/)/, '$1dart$2')
.replace(/(^|\/)app($|\/)/, inWebFolder ? '$1web$2' : '$1lib$2');
// Special case not handled above: e.g., index.html -> web/index.html
if (baseNameNoExt.match(/^(index|styles)(\.\d)?$/) && !folder.match(/web$/))
folder = (folder ? folder + '/' : '') + 'web';
// In file name, replace special characters with underscore
baseNameNoExt = baseNameNoExt.replace(/[\-\.]/g, '_');
// Adjust the file extension
if (ext == '.ts') ext = '.dart';
return (folder ? folder + '/' : '') + baseNameNoExt + ext;
};
NgIoUtil.extname = function (path) {
var i = path.lastIndexOf('.');
return i > 0 ? path.substr(i) : '';
};
NgIoUtil.basename = function (path, optExt) {
var i = path.lastIndexOf('/');
var name = i > 0 ? path.substr(i + 1) : path;
if (optExt) name = name.substr(0, name.length - optExt.length);
return name;
};
NgIoUtil.folderName = function (path) {
var i = path.lastIndexOf('/');
return i > 0 ? path.substr(0, i) : '';
};
NgIoUtil._exampleName = ''; // example name is unique to a page; e.g., toh-1
NgIoUtil.setExampleName = function (name) {
// Adjust name for known cases where chapter name is not the example name.
var matches = name.match(/(toh-)pt(\d+)/);
if (matches) name = matches[1] + matches[2];
NgIoUtil._exampleName = name;
}
NgIoUtil.getExampleName = function ($location) {
if (!NgIoUtil._exampleName) {
// TODO: use $location.path() instead(?). It seems to be empty.
var loc = $location.absUrl();
// E.g., https://example.com/docs/dart/latest/guide/displaying-data.html
var matches = loc.match(/.*\/([\w\.\-]+)\.html/);
if (matches) NgIoUtil.setExampleName(matches[1]); // cache name
}
return NgIoUtil._exampleName;
};
return NgIoUtil;
} ());