Skip to content

Commit eec384e

Browse files
authored
Merge pull request #47 from contentstack/fix/verion_reset
Fix/version reset
2 parents 1f79c24 + 0f3ef25 commit eec384e

File tree

3 files changed

+167
-162
lines changed

3 files changed

+167
-162
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Models/metadata-model.ts

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
import StyleType from '../embedded-types/style-type';
22
import TextNode from '../nodes/text-node';
33
export interface Metadata {
4-
text: string
5-
attributes: Attributes
4+
text: string;
5+
attributes: Attributes;
66

7-
itemUid: string | undefined
8-
itemType: 'entry' | 'asset' | undefined
9-
styleType: StyleType | undefined
10-
contentTypeUid: string | undefined
7+
itemUid: string | undefined;
8+
itemType: 'entry' | 'asset' | undefined;
9+
styleType: StyleType | undefined;
10+
contentTypeUid: string | undefined;
1111
}
1212

1313
export interface Attributes {
14-
type?: 'entry' | 'asset',
15-
class?: string,
16-
id?: string,
17-
[key: string]: any,
18-
style?: styleObj | string,
19-
'sys-style-type'?: string,
14+
type?: 'entry' | 'asset';
15+
class?: string;
16+
id?: string;
17+
[key: string]: any;
18+
style?: styleObjType | string;
19+
'sys-style-type'?: string;
2020
}
21-
export type styleObj = { [key: string]: any }
21+
export type styleObjType = { [key: string]: any };
2222

2323
export interface EntryAttributes extends Attributes {
2424
'data-sys-entry-uid': string;
@@ -35,54 +35,54 @@ export interface AssetAttributes extends Attributes {
3535
export function createMetadata(attribute: Attributes): Metadata {
3636
return {
3737
text: attribute['#text'],
38-
itemUid: attribute["data-sys-entry-uid"] || attribute["data-sys-asset-uid"],
38+
itemUid: attribute['data-sys-entry-uid'] || attribute['data-sys-asset-uid'],
3939
itemType: attribute.type,
40-
styleType: attribute["sys-style-type"] as StyleType,
40+
styleType: attribute['sys-style-type'] as StyleType,
4141
attributes: attribute,
42-
contentTypeUid: attribute["data-sys-content-type-uid"],
43-
}
42+
contentTypeUid: attribute['data-sys-content-type-uid'],
43+
};
4444
}
4545

4646
export function nodeToMetadata(attribute: Attributes, textNode: TextNode): Metadata {
47-
return {
48-
text: textNode.text,
49-
itemUid: attribute["entry-uid"] || attribute["asset-uid"],
50-
itemType: attribute.type,
51-
styleType: attribute["display-type"] as StyleType,
52-
attributes: attribute,
53-
contentTypeUid: attribute["content-type-uid"],
54-
}
47+
return {
48+
text: textNode.text,
49+
itemUid: attribute['entry-uid'] || attribute['asset-uid'],
50+
itemType: attribute.type,
51+
styleType: attribute['display-type'] as StyleType,
52+
attributes: attribute,
53+
contentTypeUid: attribute['content-type-uid'],
54+
};
5555
}
5656

57-
export function attributeToString( attributes: Attributes):string {
58-
let result = ''
57+
export function attributeToString(attributes: Attributes): string {
58+
let result = '';
5959
for (const key in attributes) {
6060
if (Object.prototype.hasOwnProperty.call(attributes, key)) {
6161
let element = attributes[key];
6262
if (element instanceof Array) {
63-
let elementString = ''
64-
let isFirst = true
63+
let elementString = '';
64+
let isFirst = true;
6565
element.forEach((value) => {
6666
if (isFirst) {
67-
elementString += `${value}`
68-
isFirst = false
69-
}else {
70-
elementString += `, ${value}`
67+
elementString += `${value}`;
68+
isFirst = false;
69+
} else {
70+
elementString += `, ${value}`;
7171
}
72-
})
73-
element = elementString
72+
});
73+
element = elementString;
7474
} else if (typeof element === 'object') {
75-
let elementString = ''
75+
let elementString = '';
7676
for (const elementKey in element) {
7777
if (Object.prototype.hasOwnProperty.call(element, elementKey)) {
7878
const value = element[elementKey];
79-
elementString += `${elementKey}:${value}; `
79+
elementString += `${elementKey}:${value}; `;
8080
}
8181
}
82-
element = elementString
82+
element = elementString;
8383
}
84-
result += ` ${key}="${element}"`
84+
result += ` ${key}="${element}"`;
8585
}
8686
}
87-
return result
88-
}
87+
return result;
88+
}

src/helper/enumerate-entries.ts

Lines changed: 124 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,138 +1,143 @@
1-
import { AnyNode } from "../json-to-html";
2-
import { EmbeddedItem, EntryEmbedable } from "../Models/embedded-object";
3-
import { Metadata, nodeToMetadata, styleObj } from "../Models/metadata-model";
4-
import MarkType from "../nodes/mark-type";
5-
import TextNode from "../nodes/text-node";
6-
import Node from '../nodes/node'
7-
import Document from '../nodes/document'
8-
import { Next, RenderMark, RenderNode, RenderOption } from "../options";
9-
import { defaultNodeOption } from "../options/default-node-options";
10-
import { findRenderString } from "./find-embeded-object";
11-
import { EntryNode } from "../Models/json-rte-model";
1+
import { AnyNode } from '../json-to-html';
2+
import { EmbeddedItem, EntryEmbedable } from '../Models/embedded-object';
3+
import { Metadata, nodeToMetadata, styleObjType } from '../Models/metadata-model';
4+
import MarkType from '../nodes/mark-type';
5+
import TextNode from '../nodes/text-node';
6+
import Node from '../nodes/node';
7+
import Document from '../nodes/document';
8+
import { Next, RenderMark, RenderNode, RenderOption } from '../options';
9+
import { defaultNodeOption } from '../options/default-node-options';
10+
import { findRenderString } from './find-embeded-object';
11+
import { EntryNode } from '../Models/json-rte-model';
1212

13-
export function enumerate(
14-
entries: EntryEmbedable[] | EmbeddedItem[],
15-
process: (entry: EntryEmbedable| EmbeddedItem) => void
16-
) {
17-
for (const entry of entries) {
18-
process(entry)
19-
}
13+
export function enumerate(
14+
entries: EntryEmbedable[] | EmbeddedItem[],
15+
process: (entry: EntryEmbedable | EmbeddedItem) => void,
16+
) {
17+
for (const entry of entries) {
18+
process(entry);
19+
}
2020
}
2121

2222
export function enumerateContents(
23-
content:Document | Document[],
24-
renderOption?: RenderOption,
25-
renderEmbed?: (metadata: Metadata) => EmbeddedItem| EntryNode
23+
content: Document | Document[],
24+
renderOption?: RenderOption,
25+
renderEmbed?: (metadata: Metadata) => EmbeddedItem | EntryNode,
2626
): string | string[] {
27-
if (!(content instanceof Array) && content.type !== 'doc') {
28-
return content as unknown as string
29-
}
30-
if (content instanceof Array) {
31-
const result: string[] = []
32-
content.forEach((doc) => {
33-
result.push(enumerateContents(doc, renderOption, renderEmbed) as string)
34-
})
35-
return result
36-
}
37-
const commonRenderOption = {
38-
...defaultNodeOption,
39-
...renderOption
40-
}
41-
return nodeChildrenToHTML(content.children, commonRenderOption, renderEmbed)
27+
if (!(content instanceof Array) && content.type !== 'doc') {
28+
return content as unknown as string;
29+
}
30+
if (content instanceof Array) {
31+
const result: string[] = [];
32+
content.forEach((doc) => {
33+
result.push(enumerateContents(doc, renderOption, renderEmbed) as string);
34+
});
35+
return result;
36+
}
37+
const commonRenderOption = {
38+
...defaultNodeOption,
39+
...renderOption,
40+
};
41+
return nodeChildrenToHTML(content.children, commonRenderOption, renderEmbed);
4242
}
4343

4444
export function textNodeToHTML(node: TextNode, renderOption: RenderOption): string {
45-
let text = node.text
46-
if (node.classname || node.id) {
47-
text = (renderOption[MarkType.CLASSNAME_OR_ID] as RenderMark)(text, node.classname, node.id)
48-
}
49-
if (node.break) {
50-
text = (renderOption[MarkType.BREAK] as RenderMark)(text)
51-
}
52-
if (node.superscript) {
53-
text = (renderOption[MarkType.SUPERSCRIPT] as RenderMark)(text)
54-
}
55-
if (node.subscript) {
56-
text = (renderOption[MarkType.SUBSCRIPT] as RenderMark)(text)
57-
}
58-
if (node.inlineCode) {
59-
text = (renderOption[MarkType.INLINE_CODE] as RenderMark)(text)
60-
}
61-
if (node.strikethrough) {
62-
text = (renderOption[MarkType.STRIKE_THROUGH] as RenderMark)(text)
63-
}
64-
if (node.underline) {
65-
text = (renderOption[MarkType.UNDERLINE] as RenderMark)(text)
66-
}
67-
if (node.italic) {
68-
text = (renderOption[MarkType.ITALIC] as RenderMark)(text)
69-
}
70-
if (node.bold) {
71-
text = (renderOption[MarkType.BOLD] as RenderMark)(text)
72-
}
73-
return text
45+
let text = node.text;
46+
if (node.classname || node.id) {
47+
text = (renderOption[MarkType.CLASSNAME_OR_ID] as RenderMark)(text, node.classname, node.id);
48+
}
49+
if (node.break) {
50+
text = (renderOption[MarkType.BREAK] as RenderMark)(text);
51+
}
52+
if (node.superscript) {
53+
text = (renderOption[MarkType.SUPERSCRIPT] as RenderMark)(text);
54+
}
55+
if (node.subscript) {
56+
text = (renderOption[MarkType.SUBSCRIPT] as RenderMark)(text);
57+
}
58+
if (node.inlineCode) {
59+
text = (renderOption[MarkType.INLINE_CODE] as RenderMark)(text);
60+
}
61+
if (node.strikethrough) {
62+
text = (renderOption[MarkType.STRIKE_THROUGH] as RenderMark)(text);
63+
}
64+
if (node.underline) {
65+
text = (renderOption[MarkType.UNDERLINE] as RenderMark)(text);
66+
}
67+
if (node.italic) {
68+
text = (renderOption[MarkType.ITALIC] as RenderMark)(text);
69+
}
70+
if (node.bold) {
71+
text = (renderOption[MarkType.BOLD] as RenderMark)(text);
72+
}
73+
return text;
7474
}
75-
export function referenceToHTML(node: Node,
76-
renderOption: RenderOption,
77-
renderEmbed?: (metadata: Metadata) => EmbeddedItem | EntryNode
75+
export function referenceToHTML(
76+
node: Node,
77+
renderOption: RenderOption,
78+
renderEmbed?: (metadata: Metadata) => EmbeddedItem | EntryNode,
7879
): string {
79-
function sendToRenderOption(referenceNode: Node): string {
80-
return (renderOption[referenceNode.type] as RenderNode)(referenceNode, undefined)
81-
}
82-
if (!renderEmbed && renderOption[node.type] !== undefined) {
83-
return sendToRenderOption(node)
84-
}
85-
if (!renderEmbed) {
86-
return ''
87-
}
88-
const metadata = nodeToMetadata(node.attrs, ((node.children && node.children.length > 0) ? node.children[0]: {}) as unknown as TextNode)
89-
const item = renderEmbed(metadata)
90-
if (!item && renderOption[node.type] !== undefined) {
91-
return sendToRenderOption(node)
92-
}
93-
return findRenderString(item, metadata, renderOption)
80+
function sendToRenderOption(referenceNode: Node): string {
81+
return (renderOption[referenceNode.type] as RenderNode)(referenceNode, undefined);
82+
}
83+
if (!renderEmbed && renderOption[node.type] !== undefined) {
84+
return sendToRenderOption(node);
85+
}
86+
if (!renderEmbed) {
87+
return '';
88+
}
89+
const metadata = nodeToMetadata(
90+
node.attrs,
91+
(node.children && node.children.length > 0 ? node.children[0] : {}) as unknown as TextNode,
92+
);
93+
const item = renderEmbed(metadata);
94+
if (!item && renderOption[node.type] !== undefined) {
95+
return sendToRenderOption(node);
96+
}
97+
return findRenderString(item, metadata, renderOption);
9498
}
9599

96-
function nodeChildrenToHTML(nodes: AnyNode[],
97-
renderOption: RenderOption,
98-
renderEmbed?: (metadata: Metadata) => EmbeddedItem | EntryNode,
99-
): string {
100-
return nodes.map<string>((node: AnyNode) => nodeToHTML(node, renderOption, renderEmbed)).join('')
100+
function nodeChildrenToHTML(
101+
nodes: AnyNode[],
102+
renderOption: RenderOption,
103+
renderEmbed?: (metadata: Metadata) => EmbeddedItem | EntryNode,
104+
): string {
105+
return nodes.map<string>((node: AnyNode) => nodeToHTML(node, renderOption, renderEmbed)).join('');
101106
}
102107

103-
function styleObjectToString(styleObj: styleObj): string {
104-
if (!styleObj) return '';
105-
if (typeof styleObj === 'string') {
106-
return styleObj;
107-
}
108-
let styleString: string = '';
109-
for (const key in styleObj) {
110-
if (styleObj.hasOwnProperty(key)) {
111-
const value = styleObj[key];
112-
styleString += `${key}:${value};`;
113-
}
114-
}
115-
return styleString;
108+
function styleObjectToString(styleObj: styleObjType): string {
109+
if (!styleObj) return '';
110+
if (typeof styleObj === 'string') {
111+
return styleObj;
112+
}
113+
let styleString: string = '';
114+
for (const key in styleObj) {
115+
if (styleObj.hasOwnProperty(key)) {
116+
const value = styleObj[key];
117+
styleString += `${key}:${value};`;
118+
}
119+
}
120+
return styleString;
116121
}
117122

118123
function nodeToHTML(
119-
node: AnyNode,
120-
renderOption: RenderOption,
121-
renderEmbed?: (metadata: Metadata) => EmbeddedItem | EntryNode,
124+
node: AnyNode,
125+
renderOption: RenderOption,
126+
renderEmbed?: (metadata: Metadata) => EmbeddedItem | EntryNode,
122127
): string {
123-
if (node?.attrs?.style){
124-
node.attrs.style = styleObjectToString(node.attrs.style as styleObj)
125-
}
126-
if (!node.type) {
127-
return textNodeToHTML(node as TextNode, renderOption)
128-
}else if ((node.type as string) === 'reference') {
129-
return referenceToHTML(node, renderOption, renderEmbed)
130-
}else {
131-
const next: Next = nodes => nodeChildrenToHTML(nodes, renderOption, renderEmbed)
132-
if (renderOption[node.type] !== undefined) {
133-
return (renderOption[node.type] as RenderNode)(node, next)
134-
}else {
135-
return (renderOption.default as RenderNode)(node, next)
136-
}
137-
}
128+
if (node?.attrs?.style) {
129+
node.attrs.style = styleObjectToString(node.attrs.style as styleObjType);
130+
}
131+
if (!node.type) {
132+
return textNodeToHTML(node as TextNode, renderOption);
133+
} else if ((node.type as string) === 'reference') {
134+
return referenceToHTML(node, renderOption, renderEmbed);
135+
} else {
136+
const next: Next = (nodes) => nodeChildrenToHTML(nodes, renderOption, renderEmbed);
137+
if (renderOption[node.type] !== undefined) {
138+
return (renderOption[node.type] as RenderNode)(node, next);
139+
} else {
140+
return (renderOption.default as RenderNode)(node, next);
141+
}
142+
}
138143
}

0 commit comments

Comments
 (0)