forked from angular/angular
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build(aio): improve the API Pipe pages (angular#22702)
This change adds: * an impure badge for Pipes that are marked as `pure: false` * a pipe specific overview that shows the syntax for using a pipe in a template. * an "input value" section describing the type of the value that the pipe expects. * a "pipe params" section describing any additional params that a pipe expects. PR Close angular#22702
- Loading branch information
1 parent
6cd8edc
commit cda9a79
Showing
10 changed files
with
123 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
aio/tools/transforms/angular-api-package/processors/extractPipeParams.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
module.exports = function extractPipeParams(createDocMessage) { | ||
return { | ||
$runAfter: ['extractDecoratedClassesProcessor'], | ||
$runBefore: ['docs-processed'], | ||
$process(docs) { | ||
docs.forEach(doc => { | ||
if (doc.docType === 'pipe') { | ||
const transformFn = doc.members && doc.members.find(member => member.name === 'transform'); | ||
if (!transformFn) { | ||
throw new Error(createDocMessage('Missing `transform` method - pipes must implement PipeTransform interface', doc)); | ||
} | ||
doc.pipeName = doc.pipeOptions.name.replace(/^["']|["']$/g, ''); | ||
doc.valueParam = transformFn.parameterDocs[0]; | ||
doc.pipeParams = transformFn.parameterDocs.slice(1); | ||
} | ||
}); | ||
} | ||
}; | ||
}; |
61 changes: 61 additions & 0 deletions
61
aio/tools/transforms/angular-api-package/processors/extractPipeParams.spec.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
const testPackage = require('../../helpers/test-package'); | ||
const Dgeni = require('dgeni'); | ||
|
||
describe('extractPipeParams processor', () => { | ||
let processor; | ||
beforeEach(() => { | ||
const dgeni = new Dgeni([testPackage('angular-api-package')]); | ||
const injector = dgeni.configureInjector(); | ||
processor = injector.get('extractPipeParams'); | ||
}); | ||
|
||
it('should be available on the injector', () => { | ||
expect(processor.$process).toBeDefined(); | ||
}); | ||
|
||
it('should run before the correct processor', () => { | ||
expect(processor.$runBefore).toEqual(['docs-processed']); | ||
}); | ||
|
||
it('should run after the correct processor', () => { | ||
expect(processor.$runAfter).toEqual(['extractDecoratedClassesProcessor']); | ||
}); | ||
|
||
it('should throw an error if the pipe document does not contain a `transform` method', () => { | ||
expect(() => processor.$process([{ docType: 'pipe' }])).toThrowError('Missing `transform` method - pipes must implement PipeTransform interface - doc (pipe) '); | ||
expect(() => processor.$process([{ docType: 'pipe', members: [] }])).toThrowError('Missing `transform` method - pipes must implement PipeTransform interface - doc (pipe) '); | ||
expect(() => processor.$process([{ docType: 'pipe', members: [ { name: 'notTransform' }] }])).toThrowError('Missing `transform` method - pipes must implement PipeTransform interface - doc (pipe) '); | ||
}); | ||
|
||
it('should extract the pipe name', () => { | ||
const docs = [ { docType: 'pipe', pipeOptions: { name: 'testPipe' }, members: [ { name: 'transform', parameterDocs: [] }] } ]; | ||
processor.$process(docs); | ||
expect(docs[0].pipeName).toEqual('testPipe'); | ||
}); | ||
|
||
it('should extract the value parameter', () => { | ||
const valueParam = {}; | ||
const pipeParam1 = {}; | ||
const pipeParam2 = {}; | ||
const docs = [ { docType: 'pipe', pipeOptions: { name: 'testPipe' }, members: [ | ||
{ name: 'transform', parameterDocs: [valueParam, pipeParam1, pipeParam2] } | ||
] } ]; | ||
processor.$process(docs); | ||
expect(docs[0].valueParam).toBe(valueParam); | ||
}); | ||
|
||
it('should extract the pipe parameters', () => { | ||
const valueParam = {}; | ||
const pipeParam1 = {}; | ||
const pipeParam2 = {}; | ||
const docs = [ { docType: 'pipe', pipeOptions: { name: 'testPipe' }, members: [ | ||
{ name: 'transform', parameterDocs: [valueParam, pipeParam1, pipeParam2] } | ||
] } ]; | ||
processor.$process(docs); | ||
expect(docs[0].pipeParams.length).toEqual(2); | ||
expect(docs[0].pipeParams[0]).toBe(pipeParam1); | ||
expect(docs[0].pipeParams[1]).toBe(pipeParam2); | ||
}); | ||
}); | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
21 changes: 21 additions & 0 deletions
21
aio/tools/transforms/templates/api/includes/pipe-overview.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
{% import "lib/memberHelpers.html" as memberHelpers -%} | ||
{% import "lib/paramList.html" as params -%} | ||
|
||
<section class="{$ doc.docType $}-overview"> | ||
<code-example hideCopy="true" class="no-box api-heading">{{ {$ doc.valueParam.name $}_expression | <span class="kwd nocode">{$ doc.pipeName $}</span> | ||
{%- for param in doc.pipeParams %} | ||
{%- if param.isOptional or param.defaultValue !== undefined %} [{% endif %} : {$ param.name $} | ||
{%- endfor %} | ||
{%- for param in doc.pipeParams %} | ||
{%- if param.isOptional or param.defaultValue !== undefined %} ]{% endif %} | ||
{%- endfor %} }}</code-example> | ||
|
||
{% if doc.valueParam.type %} | ||
<h2>Input Value</h2> | ||
{$ params.renderParameters([doc.valueParam], 'pipe-parameters', 'pipe-parameter', true) $} | ||
{% endif %} | ||
{% if doc.pipeParams.length %} | ||
<h2>Parameters</h2> | ||
{$ params.renderParameters(doc.pipeParams, 'pipe-parameters', 'pipe-parameter', true) $} | ||
{% endif %} | ||
</section> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,8 @@ | ||
{% extends 'export-base.template.html' -%} | ||
|
||
{% block overview %} | ||
{% include "includes/pipe-overview.html" %} | ||
{% endblock %} | ||
{% block details %} | ||
{% include "includes/description.html" %} | ||
{% endblock %} |