@Mohammad yes you need to have a while loop:
while(results.Title.indexOf(title) == -1) {
title = title + "1";
}
Another improvement you can make just to have neater code, is to make a
function called getTitle outside and before the $tw.utils.each loop.
var getTitle = function(title) {
title = title.replace.....
while(title in resultsTitles) {
title = title + "1";
}
return title;
}
Inside this function you can do the string replacement of unwanted
characters and also check for already existing titles in a loop, and return
the new title. This is an aesthetic thing though and wont really impact the
efficiency of the code.
@TT the regexp is good, Mohammad refers to check for duplicate titles only
once instead of in a loop. So if "TiddlyWiki.com" already exists, we have
to check if "TiddlyWiki.com1" already exists.
On Saturday, May 22, 2021 at 4:39:13 PM UTC+2 TiddlyTweeter wrote:
> IF the regex on match is NOT GLOBAL flagged it will only match the first
> instance.
>
> I am NOT familiar with JS regex flags but try this ...
>
> */[|{}\[\]]/gi*
>
>
> Let me know!
> TT
> On Saturday, 22 May 2021 at 16:18:56 UTC+2 Mohammad wrote:
>
>> Ah, there is an issue! It only searches for the first occurrence!
>> Needs to be corrected!
>>
>> Best wishes
>> Mohammad
>>
>>
>> On Sat, May 22, 2021 at 6:39 PM Mohammad Rahmani <[email protected]>
>> wrote:
>>
>>> Hi Saq,
>>> This is the third revision! I used indexOf() and it seems it is
>>> compatible with ES5.
>>> I am not sure if the code is an efficient one or not, but it works!
>>>
>>> To give it a try I have attached a bookmarks file containing
>>> characters on parsing to generate duplicates!
>>>
>>>
>>> Best wishes
>>> Mohammad
>>>
>>>
>>> On Sat, May 22, 2021 at 3:56 PM Saq Imtiaz <[email protected]> wrote:
>>>
>>>> Hi Mohammad, it looks good!
>>>>
>>>> So we can't use the unusedtitle macro from TiddlyWiki because inside
>>>> the deserializer code, these are not tiddlers yet.
>>>>
>>>> What I recommend is to create another empty array where we make the
>>>> array for results, called resultsTitles
>>>>
>>>> Then inside the $tw.utils loop, where we have results.push, we should
>>>> also for each bookmark do resultsTitles.push(title). Now we have an
>>>> array of results titles.
>>>>
>>>> So now we have to add an extra step for creating the title after the
>>>> regex string replacement, here is pseudo code:
>>>>
>>>> while title exists in resultsTitles array
>>>> title = title + "1"
>>>>
>>>> The title variable should now be unique for the bookmarks we are
>>>> importing.
>>>>
>>>>
>>>> On Saturday, May 22, 2021 at 1:03:23 PM UTC+2 Mohammad wrote:
>>>>
>>>>> @ TT
>>>>> Check the attached revised one!
>>>>> 1. drag and drop the attached JSON in empath.html (download one from
>>>>> https://tiddlywiki.com/prerelease/)
>>>>> 2. save and reload
>>>>> 3. drag and bookmarks.html exported from FF/Edge/Chrome (I have one
>>>>> with nasty chars in the title)
>>>>> 4. See how the import works in Tiddlywiki
>>>>>
>>>>> @Saq
>>>>>
>>>>> Hoora! It works! Please see the code and advise!
>>>>>
>>>>> 1. I attached the revised deserializer and it works for titles with
>>>>> nasty characters.
>>>>> 2. Next step I will see how to use a unique title, help please
>>>>> 2.1. how can do this? should I use unusedtitle macro from TW core?
>>>>>
>>>>>
>>>>>
>>>>> Best wishes
>>>>> Mohammad
>>>>>
>>>>>
>>>>> On Sat, May 22, 2021 at 3:21 PM TiddlyTweeter <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Right.
>>>>>>
>>>>>> Try the second match pattern I gave and let me know if it works for
>>>>>> those cases ... */[|{}\[\]]/*
>>>>>>
>>>>>> On Saturday, 22 May 2021 at 12:46:05 UTC+2 Mohammad wrote:
>>>>>>
>>>>>>> Do we need to capture what is in this between?
>>>>>>>
>>>>>>> consider a title like: AIChE | American Institute of Chemical
>>>>>>> Engineers [2021]
>>>>>>> we need to remove [] and replace with -
>>>>>>>
>>>>>>>
>>>>>>> Best wishes
>>>>>>> Mohammad
>>>>>>>
>>>>>>>
>>>>>>> On Sat, May 22, 2021 at 3:12 PM TiddlyTweeter <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> @TT
>>>>>>>> What is the regex to replace the below chars with `-` at thesame
>>>>>>>> time
>>>>>>>> |, {, }
>>>>>>>>
>>>>>>>> In raw JavaScript the regex match could be: */[|{}]/*
>>>>>>>> The replace simply: */-/*
>>>>>>>> IF you want to change "[" and "]" too try: */[|{}\[\]]/*
>>>>>>>> I have NOT tested this so if there are issues let me know!
>>>>>>>> TT
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>> 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/4ccfc5e7-a333-4ad8-99c4-466e30f5f185n%40googlegroups.com
>>>>>>>>
>>>>>>>> <https://groups.google.com/d/msgid/tiddlywiki/4ccfc5e7-a333-4ad8-99c4-466e30f5f185n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>>
>>>>>>> --
>>>>>> 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/59ef0fc2-66b4-43d7-8469-ee0b97089bf7n%40googlegroups.com
>>>>>>
>>>>>> <https://groups.google.com/d/msgid/tiddlywiki/59ef0fc2-66b4-43d7-8469-ee0b97089bf7n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
>>>> 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/f73a724e-b8ad-4c81-9956-726b6341266an%40googlegroups.com
>>>>
>>>> <https://groups.google.com/d/msgid/tiddlywiki/f73a724e-b8ad-4c81-9956-726b6341266an%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>
--
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/ffd4411a-a18f-419e-a348-b75c2d3460e1n%40googlegroups.com.