2
2
* @Author : iChengbo
3
3
* @Date : 2020-09-02 11:41:52
4
4
* @LastEditors : iChengbo
5
- * @LastEditTime : 2020-09-08 19:03:13
6
- * @FilePath : /picasso-core /packages/picasso-code/src/reactnative/generateJSX.ts
5
+ * @LastEditTime : 2021-02-03 15:45:08
6
+ * @FilePath : /Picasso/ picasso-package /packages/picasso-code-browser /src/reactnative/generateJSX.ts
7
7
*/
8
8
9
9
const RN = {
@@ -24,7 +24,7 @@ function _generateRNJSX(data: any): any {
24
24
for ( let i = 0 ; i < data . length ; i ++ ) {
25
25
let record = data [ i ]
26
26
if ( record . type == 'Image' && ( ( record . children && record . children . length == 0 ) || ! record . children ) ) {
27
- const source = / ^ h t t p / . test ( record . value ) ? `{uri: " ${ record . value } "}` : `require('./images/ ${ record . value } ')` ;
27
+ const source = formatImageSource ( record . value ) ;
28
28
29
29
html . push (
30
30
`<Image style=${
@@ -39,7 +39,7 @@ function _generateRNJSX(data: any): any {
39
39
// console.log("图片样式:", record.style)
40
40
// 背景图片
41
41
if ( ! ! record . style . backgroundImage ) {
42
- const bgSource = / ^ h t t p / . test ( record . style . backgroundImage ) ? `{uri: " ${ record . style . backgroundImage } "}` : `require('./images/ ${ record . style . backgroundImage } ')` ;
42
+ const bgSource = formatImageSource ( record . style . backgroundImage ) ;
43
43
html . push ( `<${ tag } style={${ record . addClassName ?
44
44
`StyleSheet.flatten([styles.${ record . addClassName } , styles.${ record . className } ])`
45
45
: `styles.${ record . className } ` } }
@@ -104,48 +104,23 @@ function _generateRNJSX(data: any): any {
104
104
}
105
105
return html . join ( '\n' )
106
106
}
107
+
107
108
export const generateRNJSX = ( data : any ) => {
108
109
let JSXCode = _generateRNJSX ( data )
109
110
return JSXCode ;
110
111
// return beautifyHtml(JSXCode, { indent_size: 2 })
111
112
}
112
113
113
- // export const generateRNJSX = (data: any) => {
114
- // // let JSXCode = _generateRNJSX(data)
115
- // // return beautifyHtml(JSXCode, { indent_size: 2 })
116
- // let html = [];
117
- // for (let i = 0; i < data.length; i++) {
118
- // let record = data[i];
119
- // let tag = 'View';
120
- // if (record.type == 'Image') {
121
-
122
- // } else if (record.type == 'Text') {
123
-
124
- // } else {
125
- // html.push(`<${tag}>`)
126
- // }
127
-
128
- // if (Array.isArray(record.children)) {
129
- // html.push(generateRNJSX(record.children));
130
- // }
131
- // if (['View', 'Text',].includes(record.type)) {
132
- // html.push(`</${tag}>`);
133
- // }
134
- // // switch (record.type) {
135
- // // case 'Image':
136
-
137
- // // break;
138
- // // case 'Text':
139
-
140
- // // break;
141
- // // default:
142
- // // const tag = 'View';
143
- // // html.push(`<${tag}> </${tag}>`);
144
- // // if (Array.isArray(record.children)) {
145
- // // html.push(generateRNJSX(record.children));
146
- // // }
147
- // // break;
148
- // // }
149
- // }
150
- // return html.join('\n');
151
- // }
114
+ /**
115
+ * 根据图片名称,格式化为 RN Image 标签 source 属性
116
+ * @param imageName 图片名称
117
+ */
118
+ function formatImageSource ( imageName : string ) {
119
+ let imageSource = ''
120
+ if ( / ^ h t t p / . test ( imageName ) ) {
121
+ imageSource = `{uri: "${ imageName } "}`
122
+ } else {
123
+ imageSource = `require('./images/${ imageName } ')` . replace ( / \@ \d + x / , '' )
124
+ }
125
+ return imageSource
126
+ }
0 commit comments