Sorry to resurrect this old topic, but I can't seem to find the answer to 
this.

When I use the following:
<<<<toc-selective-expandable "TableOfContents" 
"[all[current]has[caption]get[caption]] [all[current]!has[caption]get[title]] 
+[sort[]]">>

It gives me the error:
*Filter Error: Syntax Error in Filter Expression*

Any idea why it is throwing this error?

On Friday, September 14, 2018 at 3:46:20 AM UTC-7, S H Chang wrote:
>
> Thank you Mark and Tony for the filter!
>
> Mark made a really good point about having the same caption for more than 
> one tiddler which I've forgotten about. I will keep that in mind.
>
> On Thursday, 13 September 2018 09:29:24 UTC+8, TonyM wrote:
>>
>> ps In my own filter I needed 
>>
>> "[all[current]has[caption]get[caption]] 
>> [all[current]!has[caption]get[title]] +[sort[]]"
>>
>>
>> Regards
>> Tony
>>
>> On Thursday, September 13, 2018 at 10:48:01 AM UTC+10, TonyM wrote:
>>>
>>> Nice Filter!
>>>
>>> On Thursday, September 13, 2018 at 3:18:12 AM UTC+10, Mark S. wrote:
>>>>
>>>> It sounds like you have things mostly sorted out.
>>>>
>>>> A filter like this might allow you to sort by caption or title 
>>>> (whichever is present):
>>>>
>>>> [has[caption]get[caption]] [!has[caption]get[title]] +[sort[]]
>>>>
>>>> Just remember, that if you use caption then there might be more than 
>>>> one tiddler that uses that caption and you can't form a standard link 
>>>> based 
>>>> on the caption name.
>>>>
>>>> Good luck!
>>>> -- Mark
>>>>
>>>> On Tuesday, September 11, 2018 at 6:31:21 PM UTC-7, S H Chang wrote:
>>>>>
>>>>> I should have scrutinised my code before posting here. There was a 
>>>>> mistake in <<toc-linked-selective-single-expandable-body>>; it didn't 
>>>>> have 
>>>>> the list for "empty" children. I've also realised that it should be 
>>>>> !tag[Log]!visibility[hidden] instead. I've added that to the macro so now 
>>>>> it looks like this:
>>>>>
>>>>> \define toc-linked-selective-single-expandable-body(tag,sort:"",
>>>>> itemClassFilter:" ",exclude,path)
>>>>> <$set name="toc-state" value=<<qualify """$:/state/toc/$tag$""">>>
>>>>>   <$set name="toc-item-class" filter="""$itemClassFilter$""" 
>>>>> emptyValue="toc-item" value="toc-item-selected" >
>>>>>     <li class=<<toc-item-class>>>
>>>>>       <$link>
>>>>>           <$list filter=
>>>>> "[all[current]tagging[]!visibility[hidden]!tag[Log]limit[1]]" variable
>>>>> ="ignore" emptyMessage="<$button 
>>>>> class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
>>>>>           <$reveal type="nomatch" state=<<toc-state>> text=<<
>>>>> currentTiddler>>>
>>>>>             <$button set=<<toc-state>> setTo=<<currentTiddler>> 
>>>>> class="tc-btn-invisible 
>>>>> tc-popup-keep">
>>>>>               {{$:/core/images/right-arrow}}
>>>>>             </$button>
>>>>>           </$reveal>
>>>>>           <$reveal type="match" state=<<toc-state>> text=<<
>>>>> currentTiddler>>>
>>>>>             <$button set=<<toc-state>> setTo="x-all-close" 
>>>>> class="tc-btn-invisible 
>>>>> tc-popup-keep">
>>>>>               {{$:/core/images/down-arrow}}
>>>>>             </$button>
>>>>>           </$reveal>
>>>>>         </$list>
>>>>>         <<toc-caption>>
>>>>>       </$link>
>>>>>       <$reveal type="match" state=<<toc-state>> text=<<currentTiddler
>>>>> >>>
>>>>>         <$macrocall $name="toc-selective-single-expandable" tag=<<
>>>>> currentTiddler>> sort="""$sort$""" itemClassFilter=
>>>>> """$itemClassFilter$""" exclude="""$exclude$""" path="""$path$"""/>
>>>>>       </$reveal>
>>>>>     </li>
>>>>>   </$set>
>>>>> </$set>
>>>>> \end
>>>>>
>>>>> \define toc-unlinked-selective-single-expandable-body(tag,sort:"",
>>>>> itemClassFilter:" ",exclude,path)
>>>>> <$set name="toc-state" value=<<qualify """$:/state/toc/$tag$""">>>
>>>>>   <$set name="toc-item-class" filter="""$itemClassFilter$""" 
>>>>> emptyValue="toc-item" value="toc-item-selected">
>>>>>     <li class=<<toc-item-class>>>
>>>>>       <$list filter=
>>>>> "[all[current]tagging[]!visibility[hidden]!tag[Log]limit[1]]" variable
>>>>> ="ignore" emptyMessage="<$button 
>>>>> class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view 
>>>>> field='caption'><$view field='title'/></$view>">
>>>>>         <$reveal type="nomatch" state=<<toc-state>> text=<<
>>>>> currentTiddler>>>
>>>>>           <$button set=<<toc-state>> setTo=<<currentTiddler>> 
>>>>> class="tc-btn-invisible 
>>>>> tc-popup-keep">
>>>>>             {{$:/core/images/right-arrow}}
>>>>>             <<toc-caption>>
>>>>>           </$button>
>>>>>         </$reveal>
>>>>>         <$reveal type="match" state=<<toc-state>> text=<<
>>>>> currentTiddler>>>
>>>>>           <$button set=<<toc-state>> setTo="close" 
>>>>> class="tc-btn-invisible 
>>>>> tc-popup-keep">
>>>>>             {{$:/core/images/down-arrow}}
>>>>>             <<toc-caption>>
>>>>>           </$button>
>>>>>         </$reveal>
>>>>>       </$list>
>>>>>       <$reveal type="match" state=<<toc-state>> 
>>>>> text=<<currentTiddler>>>
>>>>>         <$macrocall $name="""toc-selective-single-expandable""" 
>>>>> tag=<<currentTiddler>> sort="""$sort$""" 
>>>>> itemClassFilter="""$itemClassFilter$""" exclude="""$exclude$""" 
>>>>> path="""$path$"""/>
>>>>>       </$reveal>
>>>>>     </li>
>>>>>   </$set>
>>>>> </$set>
>>>>> \end
>>>>>
>>>>> \define toc-selective-single-expandable-empty-message()
>>>>> <<toc-linked-selective-single-expandable-body tag:"""$(tag)$""" sort:
>>>>> """$(sort)$""" itemClassFilter:"""$(itemClassFilter)$""" exclude:
>>>>> """$(excluded)$""" path:"""$(path)$""">>
>>>>> \end
>>>>>
>>>>> \define toc-selective-single-expandable(tag,sort:"",itemClassFilter,
>>>>> exclude,path)
>>>>> <$vars tag="""$tag$""" sort="""$sort$""" itemClassFilter=
>>>>> """$itemClassFilter$""" excluded="""$exclude$ -[[$tag$]]""" path=
>>>>> """$path$/$tag$""">
>>>>>   <ol class="tc-toc toc-selective-expandable">
>>>>>     <$list 
>>>>> filter="""[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] 
>>>>> -[[$tag$]] $exclude$""">
>>>>>       <$list filter="[all[current]toc-link[no]]" variable="ignore" 
>>>>> emptyMessage=<<toc-selective-single-expandable-empty-message>> >
>>>>>         <$macrocall $name=toc-unlinked-selective-expandable-body tag=
>>>>> """$tag$""" sort="""$sort$""" itemClassFilter="""$itemClassFilter$""" 
>>>>> exclude=<<excluded>> path=<<path>> >
>>>>>       </$list>
>>>>>     </$list>
>>>>>   </ol>
>>>>> </$vars>
>>>>> \end
>>>>>
>>>>> Hopefully it might help someone out in future.
>>>>>
>>>>> As for the second question I have, I suppose it's not possible. What I 
>>>>> had in mind when I posted was that the toc would sort alphabetically, but 
>>>>> it would use the caption's value if there were one, else the title. I've 
>>>>> decided to just use the list field for all the parents.
>>>>>
>>>>
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/01132f08-8d17-4459-af8c-df1a07cde2d0%40googlegroups.com.

Reply via email to