feat(core): allow nested objects in setup scripts

This commit is contained in:
Ayo 2023-11-10 22:19:51 +01:00
parent 111c53d2fb
commit 6b0e0a46f0
4 changed files with 25 additions and 14 deletions

14
package-lock.json generated
View file

@ -3991,9 +3991,9 @@
} }
}, },
"packages/config/node_modules/@mcflyjs/core": { "packages/config/node_modules/@mcflyjs/core": {
"version": "0.3.0", "version": "0.3.1",
"resolved": "https://registry.npmjs.org/@mcflyjs/core/-/core-0.3.0.tgz", "resolved": "https://registry.npmjs.org/@mcflyjs/core/-/core-0.3.1.tgz",
"integrity": "sha512-tcOySS8avvY728XCX7tKrIdYaKOE4TwtUy/BMXS/kcaZaMpl4jQ93T+YKUSEOb2Rdm+lSLwJ12aCIQJRDl2Okg==", "integrity": "sha512-16yqHjbp+Ms9tvwm1JIUDlH64oEuCe/zT/sJa8kxoMjRNbH2pX3zW0NmjfMT/tIPJiP821/CFyqvFz/MKmDwlg==",
"dependencies": { "dependencies": {
"esprima": "^4.0.1", "esprima": "^4.0.1",
"h3": "^1.8.2", "h3": "^1.8.2",
@ -4002,7 +4002,7 @@
}, },
"packages/core": { "packages/core": {
"name": "@mcflyjs/core", "name": "@mcflyjs/core",
"version": "0.3.1", "version": "0.3.2",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"esprima": "^4.0.1", "esprima": "^4.0.1",
@ -4066,9 +4066,9 @@
} }
}, },
"templates/basic/node_modules/@mcflyjs/core": { "templates/basic/node_modules/@mcflyjs/core": {
"version": "0.3.0", "version": "0.3.1",
"resolved": "https://registry.npmjs.org/@mcflyjs/core/-/core-0.3.0.tgz", "resolved": "https://registry.npmjs.org/@mcflyjs/core/-/core-0.3.1.tgz",
"integrity": "sha512-tcOySS8avvY728XCX7tKrIdYaKOE4TwtUy/BMXS/kcaZaMpl4jQ93T+YKUSEOb2Rdm+lSLwJ12aCIQJRDl2Okg==", "integrity": "sha512-16yqHjbp+Ms9tvwm1JIUDlH64oEuCe/zT/sJa8kxoMjRNbH2pX3zW0NmjfMT/tIPJiP821/CFyqvFz/MKmDwlg==",
"dependencies": { "dependencies": {
"esprima": "^4.0.1", "esprima": "^4.0.1",
"h3": "^1.8.2", "h3": "^1.8.2",

View file

@ -202,7 +202,17 @@ function doSetUp(html) {
while ((match = regex.exec(html))) { while ((match = regex.exec(html))) {
let [key, value] = match; let [key, value] = match;
value = value.replace(/\s/g, ""); value = value.replace(/\s/g, "");
html = html.replace(key, setupMap[value]); // nested objects
const keys = value.split('.');
let finalValue = '';
let setupCopy = setupMap;
keys.forEach(i => {
finalValue = setupCopy[i]
setupCopy = finalValue;
})
html = html.replace(key, finalValue);
} }
return html; return html;

View file

@ -1,6 +1,6 @@
{ {
"name": "@mcflyjs/core", "name": "@mcflyjs/core",
"version": "0.3.1", "version": "0.3.2",
"description": "McFly core package", "description": "McFly core package",
"type": "module", "type": "module",
"main": "index.js", "main": "index.js",

View file

@ -5,10 +5,12 @@
<script src="/prism.js"></script> <script src="/prism.js"></script>
<script server:setup> <script server:setup>
const name = "Nitro"; const name = "Nitro";
let greeting = "hello"; let greeting = {
var count = sum(1, 247); url: 'https://www.google.com',
message: "hello"
};
greeting = "nope"; var count = sum(1, 247);
function sum(x, y) { function sum(x, y) {
return x + y; return x + y;
@ -56,8 +58,7 @@
/> />
</div> </div>
<code-block language="js">const name = "Nitro"</code-block> <code-block language="js">const name = "Nitro"</code-block>
<p>some text: {{greeting}}</p> <a href="{{greeting.url}}">some text: {{greeting.message}}</a>
{{greeting}} hey<br />
<clickable-text></clickable-text> <clickable-text></clickable-text>
</section> </section>
<section id="breakdown"> <section id="breakdown">