On Dec 24, 2009, at 10:43 AM, Vincent Massol wrote:
> To be even more precise, with the algorithm I currently have the
> following rules apply:
>
> * An attachment name cannot contain a "@" (it has to be escaped)
> * A page name cannot contain a "." (it has to be escaped)
> * A space name cannot contain a ":" (it has to be escaped)
Note that when we implement nested spaces a space will not be able to
contain "." either.
Thanks
-Vincent
>
> The general rule is that a given entity reference name cannot
> contain the separator for separating from its parent entity
> reference (it has to be escaped).
>
> These are pretty simple rules IMO (and this is one reason why you
> cannot "skip" an entity reference separator as in "wiki:page").
>
> Thanks
> -Vincent
>
> On Dec 23, 2009, at 3:42 PM, Vincent Massol wrote:
>
>> Hi,
>>
>> Since I'm writing the new Model part for Entity References
>> (document and attachment for now but we can imagine objects and
>> object properties later on). I'd like to propose 2 things:
>>
>> * A syntax for escaping special characters in references
>> * Some changes to the supported reference syntax
>>
>> Escapes
>> =======
>>
>> I'd like to propose using the backslash (i.e. \ ) character.
>> For example: "a page name with \: some \. special \@ characters"
>>
>> Rationale:
>> * it's a well known char for escapes, all devs know about it
>> * using "~" would be confusing with the wiki syntax
>>
>> Known issue:
>> * when in the velocity macro you need to be careful to use a double
>> escape since \ is the velocity char for escaping. Ex:
>>
>> {{velocity}}
>> [[label>>specia...@page-name]]
>> {{/velocity}}
>>
>> Breakages
>> =========
>>
>> Since we'll know have a generic factory/serializer for all entity
>> types we need to make the syntax more consistent. This means that
>> the following syntax will not work anymore:
>>
>> * ex: "wiki:page". This would be interpreted as a document with a
>> page of "page" and a space of "wiki:"
>> * When using the "default" factory, only default values would be
>> used (right now it's a mix between current doc values and default
>> values). Suggested defaults: "xwiki" for Wiki, "XWiki" for space,
>> "WebHome" for page and "" for attachment name. Note that one idea
>> is to make these defaults configurable in the xwiki config file
>> * It's hard to know for sure but we certainly have various other
>> inconsistencies that exist now when using special reserved chars in
>> references
>>
>> We have 2 options here:
>> * Make XE 2.2 not backward compatible for some references.
>> Advertise it in the release notes and explain to users how they
>> should change their names if they use "exotic" names
>> * Create an automatic converter, for example as a database migrator
>> that would read all documents in the wiki, call getLinks() on each
>> document, send the links to the old parser (would need to extract
>> it somewhere and ensure it behaves as now) and send the link to the
>> new parser and compare. If there's a difference, escape the char
>> and save. This would also need to be done for document parent
>> references, the backlink table and all object properties that allow
>> wiki syntax or velocity. Note that it wouldn't fix any generated
>> name (using velocity for ex).
>>
>> The automatic converter option is really hard to do so I'm leaning
>> more towards the first solution. That would need to be properly
>> handled since it could potentially cause quite a few broken links.
>>
>> WDYT?
>>
>> Thanks
>> -Vincent
>>
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs