chore(v2): generic styling improvements

This commit is contained in:
Yangshun Tay 2019-02-23 12:50:31 -08:00
parent c46a894a01
commit b33de00a32
16 changed files with 109 additions and 109 deletions

View file

@ -19,7 +19,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
// @tested - build the docs ordering such as next, previous, category and sidebar
const order = createOrder(docsSidebars);
/* Settle versions & translations from environment */
// Settle versions & translations from environment.
const translationEnabled = idx(env, ['translation', 'enabled']);
const enabledLanguages =
translationEnabled && idx(env, ['translation', 'enabledLanguages']);
@ -30,19 +30,17 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
const versions =
(versioningEnabled && idx(env, ['versioning', 'versions'])) || [];
/* Prepare metadata container */
// Prepare metadata container.
const docsMetadatas = {};
/* metadata for default docs files */
// Metadata for default docs files.
const docsFiles = await globby(['**/*.md'], {
cwd: docsDir,
});
await Promise.all(
docsFiles.map(async source => {
/*
Do not allow reserved version/ translated folder name in 'docs'
e.g: 'docs/version-1.0.0/' should not be allowed as it can cause unwanted bug
*/
// Do not allow reserved version/ translated folder name in 'docs'
// e.g: 'docs/version-1.0.0/' should not be allowed as it can cause unwanted bug
const subFolder = getSubFolder(path.resolve(docsDir, source), docsDir);
const versionsFolders = versions.map(version => `version-${version}`);
if ([...enabledLangTags, ...versionsFolders].includes(subFolder)) {
@ -60,7 +58,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
}),
);
/* metadata for non-default-language docs */
// Metadata for non-default-language docs.
if (translationEnabled) {
const translatedDir = path.join(siteDir, 'translated_docs');
const translatedFiles = await globby(['**/*.md'], {
@ -68,7 +66,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
});
await Promise.all(
translatedFiles.map(async source => {
/*
/*
Do not process disabled & default languages folder in `translated_docs`
e.g: 'translated_docs/ja/**' should not be processed if lang 'ja' is disabled
*/
@ -93,7 +91,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
);
}
/* metadata for versioned docs */
// Metadata for versioned docs.
if (versioningEnabled) {
const versionedDir = path.join(siteDir, 'versioned_docs');
const versionedFiles = await globby(['**/*.md'], {
@ -113,7 +111,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
);
}
/* Get the titles of the previous and next ids so that we can use them */
// Get the titles of the previous and next ids so that we can use them.
Object.keys(docsMetadatas).forEach(currentID => {
const previousID = idx(docsMetadatas, [currentID, 'previous']);
if (previousID) {

View file

@ -1,4 +1,4 @@
/**
/*
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
@ -11,6 +11,7 @@ const {getSubFolder, idx, parse, normalizeUrl} = require('../utils');
function getLanguage(filepath, refDir, env) {
const translationEnabled = idx(env, ['translation', 'enabled']);
if (translationEnabled) {
const detectedLangTag = getSubFolder(filepath, refDir);
const enabledLanguages = idx(env, ['translation', 'enabledLanguages']);
@ -19,18 +20,22 @@ function getLanguage(filepath, refDir, env) {
if (langTags.includes(detectedLangTag)) {
return detectedLangTag;
}
const defaultLanguage = idx(env, ['translation', 'defaultLanguage']);
if (defaultLanguage && defaultLanguage.tag) {
return defaultLanguage.tag;
}
}
return undefined;
return null;
}
function getVersion(filepath, refDir, env) {
const versioningEnabled = idx(env, ['versioning', 'enabled']);
if (versioningEnabled) {
const subFolder = getSubFolder(filepath, refDir);
if (subFolder) {
const detectedVersion = subFolder.replace(/^version-/, '');
const versions = idx(env, ['versioning', 'versions']) || [];
@ -38,9 +43,11 @@ function getVersion(filepath, refDir, env) {
return detectedVersion;
}
}
return 'next';
}
return undefined;
return null;
}
module.exports = async function processMetadata(
@ -54,7 +61,7 @@ module.exports = async function processMetadata(
const fileString = await fs.readFile(filepath, 'utf-8');
const {metadata} = parse(fileString);
/* default id is the file name */
// Default id is the file name.
if (!metadata.id) {
metadata.id = path.basename(source, path.extname(source));
}
@ -62,17 +69,17 @@ module.exports = async function processMetadata(
throw new Error('Document id cannot include "/".');
}
/* default title is the id */
// Default title is the id.
if (!metadata.title) {
metadata.title = metadata.id;
}
/* language */
// Language.
const language = getLanguage(filepath, refDir, env);
metadata.language = language;
const langPart = (language && `${language}/`) || '';
/* version */
// Version.
const defaultLangTag = idx(env, ['translation', 'defaultLanguage', 'tag']);
let versionRefDir = refDir;
if (language && language !== defaultLangTag) {
@ -84,10 +91,8 @@ module.exports = async function processMetadata(
const versionPart =
(version && version !== latestVersion && `${version}/`) || '';
/*
Convert temporarily metadata.id to the form of dirname/id without version/lang prefix
ex: file `versioned_docs/version-1.0.0/en/foo/bar.md` with id `version-1.0.0-bar` => `foo/bar`
*/
// Convert temporarily metadata.id to the form of dirname/id without version/lang prefix.
// e.g.: file `versioned_docs/version-1.0.0/en/foo/bar.md` with id `version-1.0.0-bar` => `foo/bar`
if (language) {
metadata.id = metadata.id.replace(new RegExp(`^${language}-`), '');
}
@ -112,19 +117,15 @@ module.exports = async function processMetadata(
}
}
/*
The docs absolute file source
e.g: `/end/docs/hello.md` or `/end/website/versioned_docs/version-1.0.0/hello.md`
*/
// The docs absolute file source.
// e.g: `/end/docs/hello.md` or `/end/website/versioned_docs/version-1.0.0/hello.md`
metadata.source = path.join(refDir, source);
/* Build the permalink */
// Build the permalink.
const {baseUrl, docsUrl} = siteConfig;
/*
if user has own custom permalink defined in frontmatter
e.g: :baseUrl:docsUrl/:langPart/:versionPart/endiliey/:id
*/
// If user has own custom permalink defined in frontmatter
// e.g: :baseUrl:docsUrl/:langPart/:versionPart/endiliey/:id
if (metadata.permalink) {
metadata.permalink = path.resolve(
metadata.permalink
@ -144,20 +145,20 @@ module.exports = async function processMetadata(
]);
}
/* if version */
// If version.
if (version && version !== 'next') {
metadata.id = `version-${version}-${metadata.id}`;
}
/* save localized id before adding language on it */
// Save localized id before adding language on it.
metadata.localized_id = metadata.id;
/* if language */
// If language.
if (language) {
metadata.id = `${language}-${metadata.id}`;
}
/* Determine order */
// Determine order.
const id = metadata.localized_id;
if (order[id]) {
metadata.sidebar = order[id].sidebar;
@ -172,5 +173,6 @@ module.exports = async function processMetadata(
metadata.previous = (language ? `${language}-` : '') + order[id].previous;
}
}
return metadata;
};

View file

@ -5,8 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
// build the docs meta such as next, previous, category and sidebar
// Build the docs meta such as next, previous, category and sidebar.
module.exports = function createOrder(allSidebars = {}) {
const order = {};
@ -28,7 +27,7 @@ module.exports = function createOrder(allSidebars = {}) {
break;
case 'ref':
case 'link':
// refs and links should not be shown in navigation
// Refs and links should not be shown in navigation.
break;
case 'doc':
ids.push(item.id);