Skip to content

Commit d7fadf0

Browse files
committed
style: ♻️ Update Names
1 parent f732ca2 commit d7fadf0

File tree

16 files changed

+202
-44
lines changed

16 files changed

+202
-44
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"url": "https://github.com/contentstack/contentstack-utils-javascript.git"
1919
},
2020
"scripts": {
21-
"test": "jest --config jestconfig.json ",
21+
"test": "jest --config jestconfig.json",
2222
"test:badges": "npm run test && jest-coverage-badges --output ./badges",
2323
"test:debug": "jest --watchAll --config jestconfig.json --runInBand",
2424
"prebuild": "rimraf dist",

src/Models/embedded-object.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export interface EmbeddedObject {
1+
export interface EmbeddedItem {
22
uid: string;
33
_content_type_uid: string;
44
[propName: string]: any;
@@ -10,6 +10,6 @@ export interface EmbedModel<T> {
1010

1111
export interface EntryEmbedable {
1212
uid: string;
13-
_embedded_items?: EmbedModel<EmbeddedObject>
13+
_embedded_items?: EmbedModel<EmbeddedItem>
1414
[propName: string]: any;
1515
}

src/Models/metadata-model.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export interface Attributes {
1212
type: 'entry' | 'asset',
1313
class: string,
1414
[key: string]: any,
15-
'sys-style-type': string
15+
'sys-style-type': string,
1616
}
1717

1818
export interface EntryAttributes extends Attributes {
@@ -28,13 +28,12 @@ export interface AssetAttributes extends Attributes {
2828
}
2929

3030
export function createMetadata(attribute: Attributes): Metadata {
31-
const metadata: Metadata = {
31+
return {
3232
text: attribute['#text'],
3333
itemUid: attribute["data-sys-entry-uid"] || attribute["data-sys-asset-uid"],
3434
itemType: attribute.type,
3535
styleType: attribute["sys-style-type"] as StyleType,
3636
attributes: attribute,
3737
contentTypeUid: attribute["data-sys-content-type-uid"]
3838
}
39-
return metadata
4039
}

src/extensions/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ const frameflag = 'documentfragmentcontainer';
55

66
declare global {
77
interface String {
8-
forEachEmbeddedObject(callbackfn: (embededObjectTag: string, object: Metadata) => void): void;
8+
forEachEmbeddedItem(callbackfn: (embededObjectTag: string, object: Metadata) => void): void;
99
}
1010
}
1111

12-
String.prototype.forEachEmbeddedObject = function (
12+
String.prototype.forEachEmbeddedItem = function (
1313
callbackfn: (embededObjectTag: string, object: Metadata) => void,
1414
): void {
1515

src/helper/find-embeded-object.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
import { EntryEmbedable, EmbeddedObject } from '../Models/embedded-object';
2-
import { RenderOption, RenderObject, RenderContentType } from '../options/index';
1+
import { EntryEmbedable, EmbeddedItem } from '../Models/embedded-object';
2+
import { RenderOption, RenderNode, RenderContentType } from '../options/index';
33
import { EntryAttributes, Metadata } from '../Models/metadata-model';
44
import { defaultOptions } from '../options/default-options';
55

66
// This function will find Embedded object present in string
77
export function findEmbeddedEntry(
88
uid: string,
99
contentTypeUid: string,
10-
embeddeditems: EmbeddedObject[] = [],
11-
): EmbeddedObject[] {
10+
embeddeditems: EmbeddedItem[] = [],
11+
): EmbeddedItem[] {
1212
return embeddeditems.filter((entry) => {
1313
if (entry.uid === uid && entry._content_type_uid === contentTypeUid) {
1414
return entry;
1515
}
1616
});
1717
}
1818

19-
export function findEmbeddedAsset(uid: string, embeddedAssets: EmbeddedObject[] = []): EmbeddedObject[] {
19+
export function findEmbeddedAsset(uid: string, embeddedAssets: EmbeddedItem[] = []): EmbeddedItem[] {
2020
return embeddedAssets.filter((asset) => {
2121
if (asset.uid === uid) {
2222
return asset;
2323
}
2424
});
2525
}
2626

27-
export function findEmbeddedObjects(object: Metadata, entry: EntryEmbedable): (EmbeddedObject)[] {
27+
export function findEmbeddedItems(object: Metadata, entry: EntryEmbedable): (EmbeddedItem)[] {
2828
if (object && object !== undefined && entry && entry !== undefined) {
2929
if (entry._embedded_items !== undefined) {
3030
const entryEmbedable = entry
@@ -46,32 +46,32 @@ export function findEmbeddedObjects(object: Metadata, entry: EntryEmbedable): (E
4646

4747
export function findRenderString(
4848
metadata: Metadata,
49-
renderModel: EmbeddedObject,
49+
renderModel: EmbeddedItem,
5050
renderOptions?: RenderOption,
5151
): string {
5252
if ((!renderModel && renderModel === undefined) || (!metadata && metadata === undefined)) {
5353
return '';
5454
}
5555

5656
if (renderOptions && renderOptions[metadata.styleType] !== undefined) {
57-
const renderFunction = renderOptions[metadata.styleType] as RenderObject;
57+
const renderFunction = renderOptions[metadata.styleType] as RenderNode;
5858

5959
if (
6060
(metadata.attributes as EntryAttributes)['data-sys-content-type-uid'] !== undefined &&
6161
typeof renderFunction !== 'function' &&
6262
renderFunction[(metadata.attributes as EntryAttributes)['data-sys-content-type-uid']] !== undefined
6363
) {
64-
return (renderFunction as RenderContentType)[(metadata.attributes as EntryAttributes)['data-sys-content-type-uid']](renderModel, metadata);
64+
return (renderFunction as RenderContentType)[(metadata.attributes as EntryAttributes)['data-sys-content-type-uid']]({item: renderModel, metadata});
6565
} else if (
6666
(metadata.attributes as EntryAttributes)['data-sys-content-type-uid'] !== undefined &&
6767
typeof renderFunction !== 'function' &&
6868
(renderFunction as RenderContentType).$default !== undefined
6969
) {
70-
return (renderFunction as RenderContentType).$default(renderModel, metadata);
70+
return (renderFunction as RenderContentType).$default({item: renderModel, metadata});
7171
} else if (typeof renderFunction === 'function') {
72-
return renderFunction(renderModel, metadata);
72+
return renderFunction({item: renderModel, metadata});
7373
}
7474
}
75-
const defaultRenderFunction = defaultOptions[metadata.styleType] as RenderObject;
76-
return defaultRenderFunction(renderModel, metadata);
75+
const defaultRenderFunction = defaultOptions[metadata.styleType] as RenderNode;
76+
return defaultRenderFunction({item: renderModel, metadata});
7777
}

src/helper/find-render-content.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { EntryEmbedable } from '../Models/embedded-object';
2-
export function findRenderContent (keyPaths: string, entry: EntryEmbedable, render: (content: string| string[]) => (string| string[])){
2+
export function findRenderContent<Type>(keyPaths: string, entry: EntryEmbedable, render: (content: Type) => (string| string[])){
33
getContent(keyPaths.split("."), entry, render)
44
}
55

6-
export function getContent(keys: string[], object: any, render: (content: string| string[]) => (string| string[])) {
6+
export function getContent<Type>(keys: string[], object: any, render: (content: Type) => (string| string[])) {
77
if (keys) {
88
const key = keys[0]
99
if (keys.length === 1 && object[key]) {
@@ -13,8 +13,8 @@ export function getContent(keys: string[], object: any, render: (content: string
1313
const newKeys = keys.slice(1)
1414
if (Array.isArray(object[key])) {
1515
// tslint:disable-next-line: prefer-for-of
16-
for (let i = 0; i < object[key].length; i++) {
17-
getContent(newKeys, object[key][i], render)
16+
for (const objKey of object[key]) {
17+
getContent(newKeys, objKey, render)
1818
}
1919
} else if (typeof object[key] === 'object') {
2020
getContent(newKeys, object[key], render)

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
export { Option, RenderContentType, RenderOption, RenderObject } from './options/index';
2-
export { EntryEmbedable, EmbeddedObject as EntryModel } from './Models/embedded-object';
1+
export { Option, RenderContentType, RenderOption, RenderNode } from './options/index';
2+
export { EntryEmbedable, EmbeddedItem as EntryModel } from './Models/embedded-object';
33
export { Metadata } from './Models/metadata-model';
44
export { default as StyleType } from './embedded-types/style-type';
55
export { render, renderContent } from './render-embedded-objects';

src/json-to-html.ts

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import { RenderOption } from './options';
2+
import { EntryEmbedable } from './Models/embedded-object';
3+
import { findRenderContent } from './helper/find-render-content';
4+
import Document from './nodes/document';
5+
import { defaultOptions } from './options/default-options';
6+
7+
export const defaultNodeOption: RenderOption = {
8+
9+
}
10+
11+
export function jsonToHTML(option: {
12+
entry: EntryEmbedable| EntryEmbedable[],
13+
paths: string[],
14+
renderOption?: RenderOption,
15+
}) {
16+
if (option.entry instanceof Array) {
17+
enumerateEntries({
18+
entry: option.entry,
19+
paths: option.paths,
20+
renderOption: option.renderOption,
21+
})
22+
} else {
23+
enumerateKeys({
24+
entry: option.entry,
25+
paths: option.paths,
26+
renderOption: option.renderOption,
27+
})
28+
}
29+
}
30+
31+
function enumerateEntries(option: {
32+
entry: EntryEmbedable[],
33+
paths: string[],
34+
renderOption?: RenderOption,
35+
}) {
36+
for (const entry of option.entry) {
37+
jsonToHTML({entry, paths: option.paths, renderOption: option.renderOption})
38+
}
39+
}
40+
41+
function enumerateKeys(option: {
42+
entry: EntryEmbedable,
43+
paths: string[],
44+
renderOption?: RenderOption,
45+
}) {
46+
for (const key of option.paths) {
47+
findRenderContent(key, option.entry as EntryEmbedable, ((content: Document | Document[]) => {
48+
return enumerateContents(content, option.entry, option.renderOption)
49+
}))
50+
}
51+
}
52+
53+
function enumerateContents(
54+
content:Document | Document[],
55+
entry: EntryEmbedable,
56+
renderOption?: RenderOption,
57+
): string | string[] {
58+
if (!(content instanceof Array) && content.type !== 'doc') {
59+
return content as unknown as string
60+
}
61+
if (content instanceof Array) {
62+
const result: string[] = []
63+
content.forEach((doc) => {
64+
result.push(enumerateContents(doc, entry, renderOption) as string)
65+
})
66+
return result
67+
}
68+
return parseJsonToHTML(content)
69+
}
70+
71+
export function parseJsonToHTML(
72+
content: Document,
73+
entry?: EntryEmbedable,
74+
renderOption?: RenderOption,
75+
): string {
76+
// TODO: functionality to be added
77+
const renderNode = {
78+
...defaultNodeOption,
79+
...defaultOptions,
80+
...renderOption
81+
}
82+
83+
84+
return ''
85+
}

src/nodes/document.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import Node from "./node"
2+
import NodeType from "./node-type"
3+
4+
export default class Document extends Node {
5+
type: NodeType.DOCUMENT
6+
}

src/nodes/mark-type.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
enum MarkType {
2+
BOLD = 'bold',
3+
ITALIC = 'italic',
4+
UNDERLINE = 'underline',
5+
6+
STRIKETHROUGH = 'strikethrough',
7+
INLINECODE = 'inlineCode',
8+
9+
10+
SUBSCRIPT = 'subscript',
11+
SUPERSCRIPT = 'superscript'
12+
}

0 commit comments

Comments
 (0)