Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@link breaks JSON output #163

Open
vozeldr opened this issue Mar 27, 2017 · 3 comments
Open

@link breaks JSON output #163

vozeldr opened this issue Mar 27, 2017 · 3 comments

Comments

@vozeldr
Copy link

vozeldr commented Mar 27, 2017

I'm generating JSON using dgeni but when I have a description with {@link ...} it generates a correct anchor tag but the double quotes around the href attribute value are not escaped, causing the whole JSON file to be invalid and not parsable.

Example:
@property {string} merp The merp. Supported merps are defined in the {@link MerpTypes} constant.

Generates:

{
    "name": "merp",
    "description": "<p>The merp. Supported merps are defined in the <a href="api/my-module/object/MerpTypes"><code>MerpTypes</code></a> constant.</p>\n",
    "type": [
        "string"
    ]
}
@petebacondarwin
Copy link
Contributor

Yeah, I had that problem recently. The trouble is that the inline tag doesn't know that it is going to be output as JSON.
We worked around it by manually converting the doc to JSON after the inline tags have run: https://github.com/angular/angular/blob/master/aio/transforms/angular.io-package/processors/convertToJson.js

@vozeldr
Copy link
Author

vozeldr commented Mar 27, 2017

I ended up using a task that processes after the dgeni task:

gulp.task('fix-json', function(){
    return gulp.src(['./src/components-data.json'])
        .pipe(replace(/href\s?=\s?"(.*?)"/g, 'href=\\"$1\\"'))
        .pipe(gulp.dest('./src'));
});

It seems like something that should be reasonable to have fixed in the inline tag processor or somewhere, though.

@petebacondarwin
Copy link
Contributor

As I said, how would the inline tag processor know that it needs to escape for JSON?
The link inline tag is generating HTML links so it is reasonable for it to expect to be used in a HTML format.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants