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.
88 lines
3.2 KiB
JavaScript
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;
|
|
} ());
|