Thank you for your very interesting and useful examples, Tones. I didn't
know about `sentencecase`! I'll keep that post as a reference.
And thank you very much for proposing your help.
Sorry for not replying sooner. I've spent the last two days thinking those
field connexion rules over for my project and I can say they are not that
obvious to define. Anyway, here is something that would correspond to my
needs, but it needs 'conditional transclusion'. So I gladly accept your
offer.
So, in order to manage my sources, I have a 'reference' field for general
information and a 'details' field for any additional information, that I
must transclude in that order: `reference` + `details`.
Here's how I see things:
* the value in 'details' may start with `p. ` (for page) or `pp. ` (for
pages).
Then I would connect 'reference' and 'details' with `, ` (comma +
whitespace).
For instance:
Doe, John. //My Great Exercise Book// (2019), pp. 28-32.
* the value in 'details' may start with a word in lowercase: `exercise 2`,
`chapter 4`, etc.
Then I would connect 'reference' and 'details' with ` — ` (whitespace +
dash + whitespace).
For instance:
Doe, John. //My Great Exercise Book// (2019) — chapter 6 exercise 5 p.
61.
* the value in details may start with the first word having a capital
letter (uppercase), to start a short sentence.
Then I would connect 'reference' and 'details' with `. ` (period +
whitespace).
For instance:
August 2018 training session with John Doe. See short video for this
exercise on YouTube.
* if the `details` field is empty, then I would need to end the
transclusion of `reference` with `.` (period).
I'm not too sure what I should do if the value in `details` field starts
with a character that is not a letter, which may happen in very rare cases.
And I can still alter the value accordingly:
For instance:
[[Comprehensive Exercise Website|www.to.the.link.com]] — "Exercises"
tab, bottom of page.
might be replaced with:
[[Comprehensive Exercise Website|www.to.the.link.com]]. See "Exercises"
tab, bottom of page.
I hope the goals I have set are clearly explained and above all doable.
I suppose that making liberal use of list filters and operators such as
'split', 'join', 'append', 'match', it could be possible to build those
'conditional field transclusions', but I don't think I could do that alone!
Regards,
-Stéphane
Le lundi 16 août 2021 à 14:45:29 UTC+2, TW Tones a écrit :
> Misterel,
>
> Perhaps my writing is not so helpful, but my advice is intended to make it
> simpler for you. I would be happy to write the code to resolve the
> concatenation of various text snippets into sentence like text. All I would
> need is samples of the text you whish to join (without presentation related
> hacks eg leading spaces etc...
>
> The first examples would be foo="This is foo" bar="and this is bar."
> please join as a sentence.
>
> Feel free to be pragmatic and decline my offer but also feel free to ask.
>
> Here are some examples to look at, paste into a tiddler on tiddlywiki.com,
> add the foo and bar fields as before.
> See how alice and bob values are independent of the order in which they
> will be presented, used?
>
> \define full() {{!!foo}} {{!!bar}}
> \define full2() $(foo)$ $(bar)$
> \define full3() $(alice)$ and $(bob)$.
>
> ```
> \define full() {{!!foo}} {{!!bar}}
> \define full2() $(foo)$ $(bar)$
> \define full3() $(alice)$ and $(bob)$.
> ```
>
> <$vars
> foo="This is foo"
> bar="and this is bar."
> alice="this is Alice"
> bob="this is Bob"
> cat="this is cat"
> >
>
> # `<<foo>> <<bar>>` <<foo>> <<bar>>
> # `{{!!foo}} {{!!bar}}` {{!!foo}} {{!!bar}}
> # `{{{ [<foo>] [<bar>] +[join[ ]] }}}` {{{ [<foo>] [<bar>] +[join[ ]] }}}
> # `<$text text={{{ [<foo>] [<bar>] +[join[ ]] }}}/>` <$text text={{{
> [<foo>] [<bar>] +[join[ ]] }}}/>
> # `<$text text={{{ [{!!foo}] [{!!bar}] +[join[ ]] }}}/>` <$text text={{{
> [{!!foo}] [{!!bar}] +[join[ ]] }}}/>
> #`<<full>>` <<full>>
> #`<<full2>>` <<full2>>
> #`<<full3>>` <<full3>> | {{{ [<full3>sentencecase[]] }}}
> #`{{{ [<alice>] [<bob>] +[join[ and ]addsuffix[.]sentencecase[]] }}}` {{{
> [<alice>] [<bob>] +[join[ and ]addsuffix[.]sentencecase[]] }}}
> #`{{{ [<bob>] [<alice>] +[join[ and ]addsuffix[.]sentencecase[]] }}}` {{{
> [<bob>] [<alice>] +[join[ and ]addsuffix[.]sentencecase[]] }}}
>
>
> </$vars>
>
>
>
> Regards
> Tones
>
> On Monday, 16 August 2021 at 19:54:36 UTC+10 Misterel85 wrote:
>
>> Tones,
>>
>> Oh, now I better see what you mean by 'separating the data from its
>> presentation'.
>> It kind of reminds me of my attempts at concatenating genealogical data
>> in LaTeX with AppleScript years ago. What you advise is something I more or
>> less tried to do at the time.
>>
>> I fully agree with what you wrote, but your precious advice stumble over
>> a huge impediment: my poor skills at programming in general, and Wikitext
>> in particular! I have absolutely no programming or STEM background,
>> unfortunately, and I am only a tinkerer.
>>
>> When I manage to copy-paste and adapt existing code snippets to meet my
>> needs, I am very happy.
>> What a seasoned programmer would conceive and write in half an hour will
>> take hours --if not days-- for me to think about and assemble, and I am
>> overwhelmed with joy if it works, even if the resulting code would be
>> scoffed at by students, let alone their teachers, after a few months in a
>> 101 Programming class.
>>
>> Being both a perfectionist and a dabbler, one should never been given
>> such good advice as yours! They will keep what you suggest in mind and
>> want to implement it without ever knowing how to get started! How terrible!
>> ;-)
>> My project is certainly not well-thought-out, and if it was, I would
>> probably need more code examples like the solution Eric Shulman kindly
>> provided me with. And TW v. 5.2.0 being in prerelease, I haven't looked
>> into it yet.
>>
>> I am aware that that TW project of mine is personal and is not designed
>> to be published. Unless I get struck with Alzheimer's disease soon --in
>> which case I won't need that project anymore--, for the moment I should be
>> able to remember its quirks when I use it. And there's room for improvement
>> in several other priority aspects of it. I am already spending way too much
>> time trying to achieve a project that probably wouldn't need all those
>> bells and whistles to work properly, to the detriment of other --as /
>> more-- meaningful projects.
>>
>> Best,
>>
>> Stéphane
>>
>> Le lundi 16 août 2021 à 02:34:48 UTC+2, [email protected] a écrit :
>>
>>> We've found a bug!
>>>
>>> The wikitext parser object always tries to read Pragmas from the
>>> beginning to parse a text, and this _always_ trims whitespace from the text
>>> (moves the parser position past any leading whitespace).
>>>
>>> The $:/core/modules/parsers/wikiparser/wikiparser.js module needs to
>>> updated.
>>>
>>> The Parser's `this.skipWhiteSpace =` method needs to check the
>>> `this.configTrimWhiteSpace` value before moving the parser position, or
>>> reset the parser position if no pragmas are read, etc.
>>>
>>> This type of change should definitely have Jeremy's eye on it.
>>>
>>> I am terribly busy at work, so I will come back and file a Bug/Issue on
>>> GitHub if no-one else can.
>>>
>>> Best,
>>> Joshua Fontany
>>>
>>> On Sunday, August 15, 2021 at 10:34:41 AM UTC-7 Misterel85 wrote:
>>>
>>>> Yay, it works!!! Thank you very much for your quick reply and your
>>>> simple and straightforward solution, Eric!
>>>> After a bit of trial and error, I could adapt it to my TiddlyWiki.
>>>> No need for an anymore indeed.
>>>> Thanks again to all of you for your help, solutions, explanations and
>>>> suggestions.
>>>>
>>>> Best,
>>>> -Stéphane
>>>>
>>>> Le dimanche 15 août 2021 à 18:01:55 UTC+2, Eric Shulman a écrit :
>>>>
>>>>> On Sunday, August 15, 2021 at 7:10:39 AM UTC-7 Misterel85 wrote:
>>>>>
>>>>>> I first thought there would have been a more straightforward solution
>>>>>> to that issue, but actually I come to think that it should be possible
>>>>>> to
>>>>>> inspect the first character in the contents of field 2:
>>>>>> If value of field2 starts with space, then insert ` ` between
>>>>>> the transclusions, else just proceed with both transclusions.
>>>>>>
>>>>>
>>>>> Try this:
>>>>> <$transclude field="field1"/><$text text={{{
>>>>> [{!!field2}split[]first[]match[ ]] }}}/><$transclude field="field2"/>
>>>>>
>>>>> Notes:
>>>>> * The {{{ [...] }}} is a "filtered transclusion"
>>>>> * The filter starts by getting the value of the desired field, using
>>>>> {!!field2}
>>>>> * It then splits that value into separate characters, using split[]
>>>>> * Next, it gets just the first character, using first[]
>>>>> * and compares it with a space, using match[ ]
>>>>> * The result of the filter is either nothing, or an actual space
>>>>> character (not an )
>>>>> * The <$text> widget then converts the output to plain text (instead
>>>>> of displaying a link to a space!)
>>>>>
>>>>> enjoy,
>>>>> -e
>>>>>
>>>>
--
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/d30689e9-4ba7-4f64-a0f2-ba8d42f2df54n%40googlegroups.com.