Skip to content

Commit

Permalink
Fix duplicate alias logic and expand sample fixture.
Browse files Browse the repository at this point in the history
  • Loading branch information
efcmeg committed May 22, 2020
1 parent a722d48 commit 27dd094
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 14 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# mime-info-stream-parser

[![Npm Version](https://img.shields.io/npm/v/mime-info-stream-parser.svg)](https://npmjs.com/package/mime-info-stream-parser)
[![Build Status](https://travis-ci.org/efcmeg/mime-info-stream-parser.svg?branch=master)](https://travis-ci.org/efcmeg/mime-info-stream-parser)
[![Coverage Status](https://coveralls.io/repos/github/efcmeg/mime-info-stream-parser/badge.svg?branch=master)](https://coveralls.io/github/efcmeg/mime-info-stream-parser?branch=master)

Expand Down
29 changes: 28 additions & 1 deletion fixtures/mime-info-sample.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,5 +105,32 @@ command to generate the output files.
<glob pattern="*.asc"/>
<glob pattern="*,v"/>
</mime-type>


<mime-type type="application/illustrator">
<comment>Adobe Illustrator document</comment>
<generic-icon name="image-x-generic"/>
<glob pattern="*.ai"/>
<alias type="application/vnd.adobe.illustrator"/>
</mime-type>


<mime-type type="application/vnd.ms-access">
<comment>JET database</comment>
<acronym>JET</acronym>
<expanded-acronym>Joint Engine Technology</expanded-acronym>
<generic-icon name="x-office-document"/>
<magic priority="50">
<match offset="0" type="string" value="\x00\x01\x00\x00Standard Jet DB" />
</magic>
<glob pattern="*.mdb" />
<alias type="application/x-msaccess"/>
<alias type="application/msaccess"/>
<alias type="application/vnd.msaccess"/>
<alias type="application/x-msaccess"/>
<alias type="application/mdb"/>
<alias type="application/x-mdb"/>
<alias type="zz-application/zz-winassoc-mdb"/>
</mime-type>


</mime-info>
39 changes: 26 additions & 13 deletions src/lib/mime-info-stream-parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,21 +119,32 @@ export class MimeInfoStreamParser extends Transform {
}

private _onCloseMimeInfo(): void {
this._trackedAliases.length && this._pushSeparator();
this._trackedAliases.forEach((tracked: MimeInfoTrackedAlias) => {
tracked &&
tracked.aliases &&
tracked.aliases
.filter((alias: string) => !this._trackedMimeType(alias))
.forEach((alias: string, index: number, array: string[]) => {
this._pushItem(this._trackMimeType(alias), tracked.item);
index !== array.length - 1 && this._pushSeparator();
});
});
this._openMimeInfo = false;
this._trackedAliases.forEach(
(tracked: MimeInfoTrackedAlias, trackedIndex: number) =>
tracked && this._pushAliasedItems(tracked, trackedIndex)
);
this._pushEnd();
}

private _pushAliasedItems(
trackedAlias: MimeInfoTrackedAlias,
trackedIndex: number
): void {
trackedAlias.aliases &&
trackedAlias.aliases.forEach(
(alias: string, aliasIndex: number, aliases: string[]) => {
!this._trackedMimeType(alias) &&
this._pushItem(
this._trackMimeType(alias),
trackedAlias.item,
trackedIndex !== this._trackedAliases.length - 1 ||
aliasIndex !== aliases.length - 1
);
}
);
}

private _pushStart(): void {
this.push('{\n');
}
Expand All @@ -149,11 +160,13 @@ export class MimeInfoStreamParser extends Transform {

private _pushItem(
key: string | null,
data: MimeInfoItem | MimeInfoTrackedAlias | null
data: MimeInfoItem | MimeInfoTrackedAlias | null,
pushSeparator = true
): void {
this.push(
' ' + JSON.stringify(key) + ': ' + JSON.stringify(data, null, 4)
);
(this._openMimeInfo || pushSeparator) && this._pushSeparator();
}

private _onOpenMimeType(tag: Tag): void {
Expand All @@ -162,7 +175,7 @@ export class MimeInfoStreamParser extends Transform {
}

private _addMimeType(type: string): void {
this._mimeTypes.length ? this._pushSeparator() : this._pushStart();
!this._mimeTypes.length && this._pushStart();
this._openMimeType = this._trackMimeType(type);
}

Expand Down

0 comments on commit 27dd094

Please sign in to comment.