chore(docs): revise makeExcerpt mixin, add makeProjExample mixin

Be more DRY when referencing examples and excerpts. E.g.,
```jade
+makeExcerpt('quickstart/ts/app/app.component.ts', 'import',
'app/app.component.ts (import)')
```
can now be just
```jade
+makeExcerpt('app/app.component.ts', 'import')
```
Defined new mixin for examples named `makeProjExample` using this new
scheme.
The original `makeExample` has been left untouched.

Applied new mixins to quickstart.

closes #1420
This commit is contained in:
Patrice Chalin 2016-05-18 10:27:51 -07:00 committed by Kathy Walrath
parent d152ea293e
commit 5b1a84be4c
3 changed files with 48 additions and 18 deletions

View File

@ -68,13 +68,43 @@ mixin makeExample(_filePath, region, _title, stylePatterns)
.example-title #{title} .example-title #{title}
code-example(language="#{language}" format="#{format}") code-example(language="#{language}" format="#{format}")
!= styleString(frag, stylePatterns) != styleString(frag, stylePatterns)
//- Like makeExample, but doesn't show line numbers and //- Like makeExample, but the first argument is a path that is
//- title is appened with `(excerpt)` if it doesn't already //- relative to the project root. Unless title is defined,
//- end with a parenthetical remark. //- the project relative path will be used.
mixin makeExcerpt(_filePath, region, _title, stylePatterns) mixin makeProjExample(projRootRelativePath, region, title, stylePatterns)
- if (_title && !_title.match(/\([\w ]+\)$/)) _title = _title + ' (excerpt)'; - var relPath = projRootRelativePath.trim();
+makeExample(_filePath, region, _title, stylePatterns)(format='.') - var filePath = getExampleName() + '/ts/' + relPath;
- if (!title) {
- // Is path like styles.1.css? Then drop the '.1' qualifier:
- var matches = relPath.match(/^(.*)\.\d(\.\w+)$/);
- title = matches ? matches[1] + matches[2] : relPath;
- }
+makeExample(filePath, region, title, stylePatterns)
//- Like makeExample, but doesn't show line numbers, and the first
//- argument is a path that is relative to the example project root.
//- Unless title is defined, the project relative path will be used.
//- Title will always end with a phrase in parentheses; if no such
//- ending is given, then the title will be suffixed with
//- either "(excerpt)", or "(#{region})" when region is defined.
mixin makeExcerpt(projRootRelativePath, region, title, stylePatterns)
- var relPath = projRootRelativePath.trim();
- var filePath = getExampleName() + '/ts/' + relPath;
- if (!title) {
- // Is path like styles.1.css? Then drop the '.1' qualifier:
- var matches = relPath.match(/^(.*)\.\d(\.\w+)$/);
- title = matches ? matches[1] + matches[2] : relPath;
- }
- var excerpt = region || 'excerpt';
- if (title && !title.match(/\([\w ]+\)$/)) title = title + ' (' + excerpt + ')';
+makeExample(filePath, region, title, stylePatterns)(format='.')
//- Extract the doc example name from `current`.
- var getExampleName = function() {
- var dir = current.path[current.path.length - 1];
- return dir == 'latest' ? current.source : dir;
- };
mixin makeTabs(filePaths, regions, tabNames, stylePatterns) mixin makeTabs(filePaths, regions, tabNames, stylePatterns)
- filePaths = strSplit(filePaths); - filePaths = strSplit(filePaths);

View File

@ -1,8 +1,8 @@
// #docregion // #docregion
import { bootstrap } from '@angular/platform-browser-dynamic'; import { bootstrap } from '@angular/platform-browser-dynamic';
// #docregion app-component // #docregion import
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
// #enddocregion app-component // #enddocregion import
bootstrap(AppComponent); bootstrap(AppComponent);

View File

@ -208,7 +208,7 @@ p.
#[b Create the component file] #[b Create the component file]
#[code #[+adjExPath('app/app.component.ts')]] (in this newly created directory) with the following content: #[code #[+adjExPath('app/app.component.ts')]] (in this newly created directory) with the following content:
+makeExample('quickstart/ts/app/app.component.ts', '', 'app/app.component.ts')(format='.') +makeProjExample('app/app.component.ts')
.l-verbose-section .l-verbose-section
:marked :marked
@ -241,7 +241,7 @@ p.
Here we import the Angular 2 core so that our component code can have access to Here we import the Angular 2 core so that our component code can have access to
the `@Component` #{_decorator}. the `@Component` #{_decorator}.
+makeExcerpt('quickstart/ts/app/app.component.ts', 'import', 'app/app.component.ts (import)') +makeExcerpt('app/app.component.ts', 'import')
h3#component-decorator @Component #{_decorator} h3#component-decorator @Component #{_decorator}
+ifDocsFor('ts') +ifDocsFor('ts')
@ -254,7 +254,7 @@ p.
component class. component class.
The metadata tells Angular how to create and use this component. The metadata tells Angular how to create and use this component.
+makeExcerpt('quickstart/ts/app/app.component.ts', 'metadata', 'app/app.component.ts (metadata)')(format='.') +makeExcerpt('app/app.component.ts', 'metadata')
block annotation-fields block annotation-fields
:marked :marked
@ -279,7 +279,7 @@ p.
:marked :marked
### Component class ### Component class
At the bottom of the file is an empty, do-nothing class named `AppComponent`. At the bottom of the file is an empty, do-nothing class named `AppComponent`.
+makeExcerpt('quickstart/ts/app/app.component.ts', 'class', 'app/app.component.ts (class)') +makeExcerpt('app/app.component.ts', 'class')
:marked :marked
When we're ready to build a substantive application, When we're ready to build a substantive application,
we can expand this class with properties and application logic. we can expand this class with properties and application logic.
@ -297,7 +297,7 @@ block create-main
Now we need something to tell Angular to load the root component. Now we need something to tell Angular to load the root component.
Create the file #[code #[+adjExPath('app/main.ts')]] with the following content: Create the file #[code #[+adjExPath('app/main.ts')]] with the following content:
+makeExample('quickstart/ts/app/main.ts', '', 'app/main.ts')(format='.') +makeProjExample('app/main.ts')
.l-verbose-section .l-verbose-section
:marked :marked
@ -342,7 +342,7 @@ h2#index Step 4: Add #[code index.html]
In the *#{_indexHtmlDir}* folder In the *#{_indexHtmlDir}* folder
create an `index.html` file and paste the following lines into it: create an `index.html` file and paste the following lines into it:
+makeExample('quickstart/ts/index.html', '', 'index.html')(format='.') +makeProjExample('index.html')
.l-verbose-section .l-verbose-section
:marked :marked
@ -360,7 +360,7 @@ h2#index Step 4: Add #[code index.html]
:marked :marked
### Libraries ### Libraries
We loaded the following scripts We loaded the following scripts
+makeExcerpt('quickstart/ts/index.html', 'libraries', 'index.html') +makeExcerpt('index.html', 'libraries')
:marked :marked
We begin with es6-shim which monkey patches the global context (window) with essential features of ES2015 (ES6). We begin with es6-shim which monkey patches the global context (window) with essential features of ES2015 (ES6).
Next are the polyfills for Angular2, `zone.js` and `reflect-metadata`. Next are the polyfills for Angular2, `zone.js` and `reflect-metadata`.
@ -407,7 +407,7 @@ h2#index Step 4: Add #[code index.html]
Our QuickStart makes such requests when one of its Our QuickStart makes such requests when one of its
application TypeScript files has an import statement like this: application TypeScript files has an import statement like this:
+makeExcerpt('quickstart/ts/app/main.ts', 'app-component', 'main.ts (excerpt)') +makeExcerpt('app/main.ts', 'import')
:marked :marked
Notice that the module name (after `from`) does not mention a filename extension. Notice that the module name (after `from`) does not mention a filename extension.
In the configuration we tell SystemJS to default the extension to `js`, a JavaScript file. In the configuration we tell SystemJS to default the extension to `js`, a JavaScript file.
@ -463,7 +463,7 @@ h2#index Step 4: Add #[code index.html]
Create a `styles.css` file in the *#{_indexHtmlDir}* folder and start styling, perhaps with the minimal Create a `styles.css` file in the *#{_indexHtmlDir}* folder and start styling, perhaps with the minimal
styles shown below. For the full set of master styles used by the documentation samples, styles shown below. For the full set of master styles used by the documentation samples,
see [styles.css](https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css). see [styles.css](https://github.com/angular/angular.io/blob/master/public/docs/_examples/styles.css).
+makeExcerpt('quickstart/ts/styles.1.css', '', 'styles.css') +makeExcerpt('styles.1.css')
.l-main-section .l-main-section
h2#build-and-run Step 5: Build and run the app! h2#build-and-run Step 5: Build and run the app!