Curious behavior

102 views
Skip to first unread message

History Buff

unread,
May 10, 2021, 4:58:28 PM5/10/21
to TiddlyWiki
All,

I have a macro that has several edit text widgets and a button to save these inputs to the fields of a newly created tiddler (see code below). I'm having some issues with one particular field, namely the archive field. The input is the filename of the image and what should be placed in the archive field of the new tiddler is: ./Archival_images/filename. However, what ends up being placed in there is the ./Archival_images/ string repeated a seemingly random number of times. I've seen it repeated anywhere from three times to eighteen times. I've tried slashes with both directions with no difference. I've also tried the wikify widget without the output and mode options with no difference in behavior. Any ideas on why that might be happening?

Thanks in advance.


\define newtext(image)
  <a href="./Images/$image$.jpg" target="_blank"> <img src="./Images/$image$.webp"></a>
\end

\define newarchive(archive)
  ./Archival_images/$archive$
\end

\define newImageEntry()
  <$vars
    temp="$:/temp/NewImageEntry">
    Image Filename:
      <$edit-text
        tiddler=<<temp>>
        field=filename
        tag=input
        class=fieldinput
        size=64
      />
    <p/>
    Archival Image Filename:
      <$edit-text
        tiddler=<<temp>>
        field=archive
        tag=input
        class=fieldinput
        size=64
      />
    <p/>
    Image Category:
      <$edit-text
        tiddler=<<temp>>
        field=category
        tag=input
        class=fieldinput
        size=64
    placeholder="Enter all categories separated by a comma."
      />
    <p/>
    Image Label:
      <$edit-text
        tiddler=<<temp>>
        field=label
        class=fieldinput
        tag=input
    placeholder="Enter a brief label for the image."
        size=64
      />
    <p/>
    Image Details:
      <$edit-text
        tiddler=<<temp>>
        field=details
        class=fieldarea
        tag=textarea
    placeholder="Enter any detailed information about the image."
      />
    <p/>
    Surnames:
      <$edit-text
        tiddler=<<temp>>
        field=surnames
        tag=input
        class=fieldinput
        size=64
    placeholder="Enter all surnames separated by a comma."
      />
    <p/>
    <$button tooltip="save input"> {{$:/images/google-material-design/image/two-tone/24px/add-a-photo}} Add New Image
      <$vars
        filename={{{ [title<temp>get[filename]] }}}
        archive={{{ [title<temp>get[archive]] }}}
        category={{{ [title<temp>get[category]] }}}
        label={{{ [title<temp>get[label]] }}}
        details={{{ [title<temp>get[details]] }}}
      >
      <$wikify name="text" text="""<$macrocall $name=newtext image=<<filename>> />""" output=html  mode=inline>
        <$wikify name="archive" text="""<$macrocall $name=newarchive archive=<<archive>> />""" output=html  mode=inline>
          <$set name="newtags" filter="[title<temp>get[surnames]split[,]] [[image]]">
            <$action-createtiddler
              $basetitle=<<filename>>
              text=<<text>>
              category=<<category>>
              details=<<details>>
              label=<<label>>
              tags=<<newtags>>
              archive=<<archive>>
              hide-body="yes"
            />
          </$set>
        </$wikify>
      </$wikify>
    </$vars>
    <$action-deletetiddler $filter="[<temp>]" />
    </$button>
    <$button tooltip="cancel input"> {{$:/core/images/cancel-button}} Clear Entries
      <$action-deletetiddler $filter="[<temp>]" />
    </$button>
  </$vars>
\end


TW Tones

unread,
May 10, 2021, 8:51:00 PM5/10/21
to TiddlyWiki
Do share an example of the "corrupt values", if could point to the problem without jumping into the code, or will this code work on tiddlywiki.com, if not can you make it?

Tones

History Buff

unread,
May 10, 2021, 9:21:08 PM5/10/21
to TiddlyWiki
Sorry, I attempted to describe it in words which wasn't sufficient.

What I want to result is the following (assume the filename is image.jpg):

./Archival_image/image.jpg

What I actually get is this:

./Archival_image/./Archival_image/./Archival_image/./Archival_image/./Archival_image/./Archival_image/./Archival_image/image.jpg

The number of times ./Archival_image/ is repeated seems random and, as I said, can be as many as two or three all the way up to eighteen.

TW Tones

unread,
May 10, 2021, 11:19:49 PM5/10/21
to TiddlyWiki
That result is common when your list is generating more instances that you expected.

It suggest an error in your code. A Quick fix may be to introduce +[limit[1]] in the filter generating it.
In this case we can see the problem is before adding the suffix image.jpg

Tones

Damon Pritchett

unread,
May 10, 2021, 11:31:22 PM5/10/21
to tiddl...@googlegroups.com
Thanks Tones,

I’ve used limit in the past so am familiar with it. However, I’m not understanding how it applies here. I’m not adding the filename as a suffix in a filter (unless I’m really missing something which may be the case). I’m using a small macro to concatenate the path with the filename. 


--
You received this message because you are subscribed to a topic in the Google Groups "TiddlyWiki" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tiddlywiki/H6NG57ri3eA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tiddlywiki+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/edcac80f-a223-4188-a83d-cf6c037ce5ebn%40googlegroups.com.

TW Tones

unread,
May 10, 2021, 11:48:19 PM5/10/21
to TiddlyWiki
Concatenate (at the end) is "adding a suffix almost by definition". I call it a suffix in this case because it clearly only comes at the end. and using the suffix operators is a way to concatenate.

Please not I did not review the code you presented, just thought these tips may help.

Regards
Tones


Damon Pritchett

unread,
May 11, 2021, 12:26:55 AM5/11/21
to tiddl...@googlegroups.com
No harm, no foul. I appreciate the tips as always. 

Any thoughts on the code?


History Buff

unread,
May 11, 2021, 12:27:25 PM5/11/21
to TiddlyWiki
Hey Tones,

After sleeping on it, I realized the wisdom of your helpful tips. I used the addprefix operator to great advantage.

I replaced the following: 
archive={{{ [title<temp>get[archive]] }}}

with:
archive={{{ [title<temp>get[archive]addprefix[.\Archival_images\]] }}}

I also removed the second wikify statement. This did just exactly what I needed it to do. Thanks for the tips. It was a bit too subtle for my sleepy mind last night.

I still don't understand why the other method was doing what it was doing with the repeated string. If anyone can explain that to me, I would greatly appreciate it.

TW Tones

unread,
May 11, 2021, 7:44:57 PM5/11/21
to TiddlyWiki
History Buff,

Good to hear you made progress. 

One guess on repeated outputs is there is a loop somewhere doing it, again without looking at your code, muy guess may be that your code  {{ [title<temp>get[archive]] }}} is inside a list that has more than one result when you think it only has one. Even just use the +[limit[1]] to see if that helps you identify the list generating multiple outputs by stopping it. AL;so, This sometimes occurs when a filter does not start with [all[current]... to ensure it only applies here, on the current tiddler, then it finds all tiddlers that match.

Regards
Tones
Reply all
Reply to author
Forward
0 new messages