Reference issue #173

Open
opened 2024-05-30 12:38:03 +00:00 by viethung0823 · 0 comments
viethung0823 commented 2024-05-30 12:38:03 +00:00 (Migrated from github.com)
function updateFrontMatter(template, field, value, isArray = false) {
	const matterValue = matter(template);
	if (isArray) {
		matterValue.data[field] = [...matterValue.data[field], ...value.split(",").map((v) => v.trim())];
	} else {
		matterValue.data[field] = value;
	}
	const updatedTemplate = matter.stringify(matterValue.content, matterValue.data);
	return updatedTemplate;
}
// the templates are the same at first
let firstTemplate = '---\nfield: ["original value"]\n---\ncontent';
let secondTemplate = '---\nfield: ["original value"]\n---\ncontent';
for (let i = 0; i < 2; i++) {
	firstTemplate = updateFrontMatter(firstTemplate, "field", `new value for firstTemplate ${i}`, true);
	console.log("firstTemplate \n", firstTemplate);
}
secondTemplate = updateFrontMatter(secondTemplate, "field", "new value for secondTemplate", true);
console.log("secondTemplate", secondTemplate);

LOG:

firstTemplate 
 ---
field:
  - original value
  - new value for firstTemplate 0
---
content

firstTemplate 
 ---
field:
  - original value
  - new value for firstTemplate 0
  - new value for firstTemplate 1
---
content

secondTemplate ---
field:
  - original value
  - new value for firstTemplate 0
  - new value for secondTemplate
---
content

Can anyone explain for me why at 2nd template value it has value from the 1st one? The line matterValue from const matterValue = matter(template); always return a new ref right?

``` function updateFrontMatter(template, field, value, isArray = false) { const matterValue = matter(template); if (isArray) { matterValue.data[field] = [...matterValue.data[field], ...value.split(",").map((v) => v.trim())]; } else { matterValue.data[field] = value; } const updatedTemplate = matter.stringify(matterValue.content, matterValue.data); return updatedTemplate; } ``` ``` // the templates are the same at first let firstTemplate = '---\nfield: ["original value"]\n---\ncontent'; let secondTemplate = '---\nfield: ["original value"]\n---\ncontent'; for (let i = 0; i < 2; i++) { firstTemplate = updateFrontMatter(firstTemplate, "field", `new value for firstTemplate ${i}`, true); console.log("firstTemplate \n", firstTemplate); } secondTemplate = updateFrontMatter(secondTemplate, "field", "new value for secondTemplate", true); console.log("secondTemplate", secondTemplate); ``` LOG: ``` firstTemplate --- field: - original value - new value for firstTemplate 0 --- content firstTemplate --- field: - original value - new value for firstTemplate 0 - new value for firstTemplate 1 --- content secondTemplate --- field: - original value - new value for firstTemplate 0 - new value for secondTemplate --- content ``` Can anyone explain for me why at 2nd template value it has value from the 1st one? The line matterValue from ``const matterValue = matter(template);`` always return a new ref right?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rtlabs-llm-agents/gms-gray-matter#173
No description provided.