You are not logged in.
Pages: 1
https://i0.wp.com/jeffreifman.com/wp-co … =460%2C242
This gif shows the level of productivity I'm aiming at, now what do you call the following, paragraph editing?, without words I can't use a search engine.
{
nodeId: '1-2-1',
parentNodeId: '1-2',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
{
nodeId: '1-2-2',
parentNodeId: '1-2',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
{
nodeId: '1-3',
parentNodeId: 'O-1',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
{
nodeId: '1-3-1',
parentNodeId: '1-3',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
I would love to edit hundreds of these paragraphs manually.
Each time nodeId, parentNodeId and 'content' have to be edited slightly.
One Paragraph is:
{
nodeId: '1-4-2',
parentNodeId: '1-4',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
I only know how to use my mice or arrow keys, how does utilize hotkeys and/or macros to be more productive.
Or should I rather create a script that, I don't know how to approach this.
Last edited by archisominimalist (2023-02-25 10:31:54)
Thanks to everybody that is contributing to make open-source software possible.
Apparently I still manage to offend people, even while trying to be as empathic as possible and search/try to learn before posting.
I love y'all.
Offline
The gif you linked would be block editing in vim or a vim-like editor. However that would not likely work for your usecase as the elements you want to edit are not in a block (there are intervening lines with braces). But I strongly suspect you could do the job quite easily with sed. Learning vim and sed may be overkill for your current goal, but doing so will pay off in the long run.
If you elaborate on how these need to be "edited slightly" I could likely give more specific pointers.
Last edited by Trilby (2023-02-25 03:43:46)
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
I'd love to learn sed.
For example
{
nodeId: '1-1',
parentNodeId: '1-1',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
should become
{
nodeId: '1-1-1',
parentNodeId: '1-1-2',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
Last edited by archisominimalist (2023-02-25 10:31:35)
Thanks to everybody that is contributing to make open-source software possible.
Apparently I still manage to offend people, even while trying to be as empathic as possible and search/try to learn before posting.
I love y'all.
Offline
But what is the logic to that example? Is there a rule / set of rules by which these changes are made. You added a "-1" to the end of nodeId; should every nodeId get a "-1" added, or will it be "-2" or some other number for some of them? And for parentNodeId you added "-2" ... same question here. And from where does "else" come?
If you can define the logic of the changes that need to be made, it should be very easy to get a script (e.g., sed) to do the change instantaneously on nearly any number of "paragraphs".
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Sorry Trilby for messing up there, edited hope it's unified now.
I found this, promising code snippet, hoping that this clears up what's the purpose.
Trying to adjust it to work with the paragraphs in my case.
Current values for
block :
nodeId:
parentNodeId:
template: templateDefault('')
Block updated successfully.
Current output appears instantly without chance for user to input.
I suspect: A: that the 'RegEx' is not correct, therefore only the echo commands but that does not make any sense either.
B: block is never actually defined as variable, nor is new_nodeId, new_parentNodeId or new_template
while read -r block; do
#!/bin/bash
# Specify the file path and the search pattern
file_path="/home/archie/project/assets/scripts/data.js"
search_pattern="{nodeId: '[^']*',\nparentNodeId: '[^']*',\ntemplate: templateDefault('[^']*')\n}"
# Search for blocks that match the pattern and loop through them
while read -r block; do
# Extract the values inside single quotes using sed
nodeId=$(echo "$block" | sed -n "s/.*nodeId: '\([^']*\)',.*/\1/p")
parentNodeId=$(echo "$block" | sed -n "s/.*parentNodeId: '\([^']*\)',.*/\1/p")
template=$(echo "$block" | sed -n "s/.*template: templateDefault('\([^']*\)').*/\1/p")
# Print the current values of nodeId, parentNodeId, and template
echo "Current values for"
echo "block $nodeId:"
echo "nodeId: $nodeId"
echo "parentNodeId: $parentNodeId"
echo "template: templateDefault('$template')"
# Ask the user to input new values
read -p "Enter new nodeId for block $nodeId: " new_nodeId
read -p "Enter new parentNodeId for block $nodeId: " new_parentNodeId
read -p "Enter new template for block $nodeId: " new_template
# Replace the old values with the new values using sed
sed -i "s/nodeId: '$nodeId',/nodeId: '$new_nodeId',/g" $file_path
sed -i "s/parentNodeId: '$parentNodeId',/parentNodeId: '$new_parentNodeId',/g" $file_path
sed -i "s/template: templateDefault('$template')/template: templateDefault('$new_template')/g" $file_path
echo "Block $nodeId updated successfully."
done <<< "$(grep -oP "$search_pattern" $file_path)"
{
nodeId: '1-2-1',
parentNodeId: '1-2',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
{
nodeId: '1-2-2',
parentNodeId: '1-2',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
{
nodeId: '1-3',
parentNodeId: 'O-1',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
{
nodeId: '1-3-1',
parentNodeId: '1-3',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault('Company name', 'Revenue: $100.000.000', '%100')
},
Last edited by archisominimalist (2023-02-25 11:17:29)
Thanks to everybody that is contributing to make open-source software possible.
Apparently I still manage to offend people, even while trying to be as empathic as possible and search/try to learn before posting.
I love y'all.
Offline
That's not really helpful. That's a needlessly complex script for what it appears intended to do - so there's little point in debugging why it might fail. More importantly, I don't see how it is at all related to your intended goal. Even if that script were to work as intended, it would just cycle through each "paragraph" and prompt you to manually type in values for each and every one - surely editing hundreds of entries this way wouldn't be any easier than just editing hundreds of them in text editor (I imagine it'd be harder).
My question is where do the new values come from. If you are prompted to enter new values, how do you decide what value to enter? Code (or scripts) only implement an agorithm. It is up to you to define what the algorithm is.
If you want to just add "-1" to every nodeId that doesn't already have three components and add "-2" to every parentNodeId that doesn't already have a three components, that'd just be this:
sed "/nodeId/s/'\([0-9]\+-[0-9]\+\)'/'\1-1'/;/parentNodeId/s/'\([0-9]\+-[0-9]\+\)'/'\1-2'/" yourfile.json
But I'm quite sure this is not what you want. So until you define what you want, no one could help you code it.
EDIT: note that the underlined part is what I mean by the algorithm. It can be in plain English, but it needs to define what is to be done with the data. Plain English descriptions can be useful, though they can also result in programmers coming home from the groccery with six gallons of milk ...
Last edited by Trilby (2023-02-25 13:52:14)
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Thank you for you excellent post.
Your explanation combined with the six gallons joke helped me understand and will shape how I will ask future questions, if I will still be allowed to ask.
I would love to edit hundreds of these paragraphs manually.
The new values need to be entered manually.
The reason why I'm making it more complicated now is to learn something new, for when I asked the question I did not know how to approach this, now I'd say the script is the cleanest way if the new values have to be user input.
The script seems like the cleanest way in the long run.
Probably there is a feature of an editor that can help to 'jump' the cursor from A --> B --> C / highlight what's written / user input.
{
nodeId: ' A ',
parentNodeId: ' B ',
nodeImage: { url: './assets/media/logo.jpg' },
template: templateDefault(' C ')
},
Thanks to everybody that is contributing to make open-source software possible.
Apparently I still manage to offend people, even while trying to be as empathic as possible and search/try to learn before posting.
I love y'all.
Offline
The new values need to be entered manually.
Why? As you do it manually, how do you know what values to put in each block? Where does the information actually come from? If it is from some handwritten or hard-copy only source, then yes it'd need to be entered manually, but any other source (either another digital medium, or some logical manipulation of the existing data) then manual entry will be tedious and error prone.
Probably there is a feature of an editor that can help to 'jump' the cursor from A --> B --> C / highlight what's written / user input.
Yes, there certainly is. Any good editor will have this ability. As a good editor, vi(m) and it's variants certainly do have such an ability. Despite not being a good editor, I'm pretty sure emacs does too. Learn one of these.
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Pages: 1