Ah, yes, good catch. I edited/updated the last post with a line at the 
beginning defining "suffix". This was present in my tiddler, just didn't 
copy/paste it over correctly.

Thanks again for all the help (now on two different questions).

Best,
Jalen

On Monday, April 13, 2020 at 5:38:56 PM UTC-4, Mark S. wrote:
>
> It looks like you're catching on fast.
>
> The one thing that concerns me is that with this code:
>
> removesuffix<suffix>
>
> I don't see where variable "suffix" was defined anywhere. So "senses" will 
> be wiped out by it. Pardon me if I've missed something, my eyes aren't what 
> they used to be.
>
> On Monday, April 13, 2020 at 2:20:12 PM UTC-7, Jalen MichalsLevy wrote:
>>
>> Thanks for your help! I see that nested lists are very useful. And I 
>> didn't know about transcluding in filter notation like that. I see what 
>> you're saying about the second part being sensitive to typos. I realized 
>> that in making these tiddlers that I am trying to change, I have used many 
>> short-hands for referring to 'passive Perception'. I have used 'passive 
>> perception', 'passive Perception', 'PP', and 'pp'. Very sloppy of me, I 
>> will admit, though i have never been formally trained in coding so I am 
>> learning the housekeeping as I go. Because of this, I decided to try your 
>> assigned exercise! I don't think I was able to include a fail-safe, but 
>> rather made it more fool proof. Check out what I have:
>>
>> __''Step 1'': Select precise language used in "senses" field:__ 
>>
>> <$select tiddler = "$:/TempPassivePerceptionTest" >
>> <option>---</option>
>> <option>passive perception</option>
>> <option>passive Perception</option>
>> <option>PP</option>
>> <option>pp</option>
>> </$select>
>>
>> <hr>
>>
>> __''Step 2'': Grab passive Perception from "senses" field and put it in 
>> its own field:__
>>
>> <$set name = 'y' value = {{$:/TempPassivePerceptionTest}}>
>> <$button>Create Passive Perception Fields
>>
>> <$list filter="[regexp:senses<y>]">
>> <$list filter = "[<currentTiddler>get[senses]split[ ]last[1]]" variable = 
>> 'x'>
>> <$action-setfield  pp=<<x>>/>
>>
>> </$list>
>> </$list>
>> </$button>
>> <$set>
>>
>> <hr>
>>
>>
>> __''Step 3'': Get rid of the 'passive Perception' and score from the 
>> "senses" field:__
>>
>> <$set name = 'y' value = {{$:/TempPassivePerceptionTest}}>
>> <$button>Change Senses
>> <$list filter = "[regexp:senses<y>]">
>> <$list filter = "[<currentTiddler>get[senses]split[ ]last[1]]" variable = 
>> 'x'>
>>
>> <$action-setfield  
>> senses={{{[<currentTiddler>get[senses]removesuffix<suffix>] }}}/>
>>
>> </$list>
>> </$list>
>> </$button>
>> </$set>
>>
>> <hr>
>> <!-- List of tiddlers and relevant values -->
>>
>> <span style = "color:darkred;"> ''List of affected tiddlers | Last Item 
>> in the "senses" field | Contents of "pp" field'' </span>
>>
>> <$set name = 'y' value = {{$:/TempPassivePerceptionTest}}>
>> <$list filter = "[regexp:senses<y>]">
>> <$list filter = "[<currentTiddler>get[senses]split[ ]last[1]]" variable = 
>> 'x'>
>> <br><$link to = {{!!title}}> {{!!title}} </$link> | <<x>> | {{!!pp}}
>> </$list>
>> </$list>
>> </$set>
>>
>>
>>
>> On Sunday, April 12, 2020 at 9:41:44 PM UTC-4, Mark S. wrote:
>>>
>>> Be sure to have a backup file before trying this! 
>>>
>>> This method requires you to hit a button twice. First to populate 
>>> "passiveperception", and then again to trim the end of senses. 
>>> This is because you might not want to push the second button. 
>>>
>>> Note that the second part in particular will be very sensitive to typos. 
>>> If it's wrong even by case or extra white space, it will change "sense" to 
>>> nothing!
>>> Sorry, there should be a fail safe mechanism, but it would take too 
>>> long. Putting in a fail safe is left to the 
>>> student as an exercise. ;-)
>>>
>>> Good luck!
>>>
>>> \define passiveperception() passive Perception $(x)$
>>> <$button>Change All Passive Perception
>>>
>>> <$list filter="[has[senses]]">
>>> <$list filter = "[<currentTiddler>get[senses]split[ ]last[1]]" variable 
>>> = 'x'>
>>> <$action-setfield  passiveperception=<<x>>/>
>>>
>>> <!-- <<x>> <br/>this is so I could verify that the variable 'x' held 
>>> the correct value -->
>>> </$list>
>>> </$list>
>>>
>>> </$button>
>>>
>>> <$button>Change Senses
>>>
>>> <$list filter="[has[senses]]">
>>> <$list filter = "[<currentTiddler>get[senses]split[ ]last[1]]" variable 
>>> = 'x'>
>>> <$action-setfield 
>>>  senses={{{[<currentTiddler>get[senses]removesuffix<passiveperception>] }}}/
>>> >
>>>
>>> <!-- <<x>> <br/>this is so I could verify that the variable 'x' held 
>>> the correct value -->
>>> </$list>
>>> </$list>
>>>
>>> </$button>
>>>
>>>
>>>
>>> On Sunday, April 12, 2020 at 3:11:45 PM UTC-7, Jalen MichalsLevy wrote:
>>>>
>>>> Hi there, 
>>>>
>>>> I have many tiddlers (of the same unique type), which contain the field 
>>>> "senses". The 'senses' field contains values that look something like 
>>>> this: 
>>>> "Darkvision 60ft., passive Perception 12". Now, it has come to my 
>>>> attention 
>>>> that it would be far more useful for Passive Perception to be its own 
>>>> field 
>>>> with its own numeric value. Instead of doing this manually, as there are 
>>>> hundreds of tiddlers like this, I want to make a button that will do this 
>>>> by batch. Basically, I want to take the last word (which is actually a 
>>>> number in all cases) from the 'senses' field and put it into a new 
>>>> "passive-perception field". I have played around with the list widget and 
>>>> filter notation, trying to use the 'enlist' operator and the 'last' 
>>>> operator, and was able to make it work for a single tiddler (see below). 
>>>> But I think I am definitely missing something that ties it all together 
>>>> and 
>>>> makes it work for a batch. Any help would be appreciated. Bonus points if 
>>>> you can also tell me how to delete the words 'passive Perception ##' from 
>>>> the end of the 'senses' field. Thank you!
>>>>
>>>> Code for a single tiddler:
>>>> <$list filter = "[{Boar!!senses}split[ ]last[1]]" variable = 'x'>
>>>>
>>>> <<x>> <!-- this is so I could verify that the variable 'x' held the 
>>>> correct value -->
>>>>
>>>> <$button set = "Boar!!passiveperception" setTo = <<x>> >
>>>> Change Boar's Passive Perception
>>>> </$button>
>>>>
>>>> </$list>
>>>>
>>>> Thank you!
>>>>
>>>> -Jalen
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/f0a2201d-64d5-4e98-b871-5147842ae58b%40googlegroups.com.

Reply via email to