Bug #403

intervening markers vs preceding markers

Added by Allan Johnson almost 2 years ago. Updated 9 months ago.

Status:Closed Start:02/11/2010
Priority:Urgent Due date:
Assigned to:- % Done:

0%

Category:- Spent time: -
Target version:V0.13
Resolution:fixed

Description

Hi guys,

I'm using SOLID to figure out and define the structure of a Toolbox lexicon. This morning I ran into an issue with the three possible choices for defining a marker's place in the structure. The marker being defined is "ph", and its parent marker is "oc"

If I say "ph can appear under oc (x) Once", I get 16 errors.
In reviewing the errors it's clear that they're all just cases of multiple ph fields, side by side with no intervening markers.

So then I say "ph can appear under oc (x) One or more times together" and run a recheck, expecting all the errors to be gone now. But instead I find that it's jumped from 16 to 53.

Finally, to get rid of all errors I find it necessary to go to the third option "ph can appear under oc (x) One or more times with intervening markers". This works, but is more permissive than should be needed, since there are no cases of intervening markers between ph fields.

I'm guessing that this inconsistency has to do with a factor that's been left unmentioned - whether or not there are other markers between the marker and its parent. Expanding on the definitions of the three options, here's how I suspect they're actually operating:

1) Just once, with or w/o preceding markers
2) One or more times together, no intervening markers, no preceding markers
3) One or more times, with or w/o intervening markers, with or w/o preceding markers

It seems that the second option is disallowing any markers intervening between the first child marker and the parent as well as between child markers, while the first and third options have no such constraint.

The behavior I'd like to see for 2 is:
2) One or more times together, no intervening markers, with or w/o preceding markers

I don't know whether it might be important sometimes to also specify that preceding markers aren't allowed. If this is needed, maybe it could be included as a separate option, rather than lumping it together with intervening markers.

intervening-test1.png (6.3 KB) J C, 05/10/2011 07:24 pm

intervening-test2.png (12.7 KB) J C, 05/10/2011 07:24 pm

History

Updated by J C almost 2 years ago

I was just about to add a ticket for this exact issue. Instead I'd just like to agree 100% with what Allan has written here. -Jon

Updated by Beth Bryson over 1 year ago

I agree. As it is, it just feels like the middle button just doesn't work, and some of the functionality that is needed just isn't there.

Updated by J C over 1 year ago

As mentioned above, Solid is supposed to license multiple occurrences of a given field in either of two ways:
"One or more times together" or
"One or more times with intervening markers".
although this isn't working properly yet.

IDEA:
What if these were rephrased like this...
"One or more times in succession (ignoring any children)" or
"One or more times with intervening markers".
Then you could specify that multiple \sn fields can only occur in succession. No intervening markers on the same or higher level would be allowed (e.g. a dislocated \dt or \hm or \bw field), but children would be ignored (allowed to occur in between without being considered "intervening").

Updated by Cambell Prince over 1 year ago

  • Priority changed from Normal to Urgent
  • Target version set to V0.11

Updated by Cambell Prince over 1 year ago

  • Target version changed from V0.11 to V0.13

Updated by Cambell Prince over 1 year ago

  • Status changed from New to Resolved
  • Resolution set to fixed

Fix in r375

Updated by Cambell Prince over 1 year ago

  • Status changed from Resolved to Closed

Updated by J C 9 months ago

I think this is now beautifully implemented--many thanks! I just verified using some test data.

If \se is set to be a child of \lx that can occur "One or more times with intervening markers", then a \dt field between two \se fields does not cause an error. It is simply a sibling of \se that "intervenes" between them.

If, however, \se is instead set to "One or more times together", then an intervening \dt causes an error.

But in neither case do child fields matter--they don't count as "intervening" fields. Perfect implementation!

TEST DATA:

\lx test
\se test one
\bw okay
\se test two
\bw okay
\bw okay (applies to lx, not to se two)
\bw fail (no multiple bw fields)

\lx test occurs once
\ps
\sn
\de okay
\de fail
\rf
\xv okay
\xv okay (but only if rf can be inferred)
\se test one
\bw okay
\bw fail (well, it's now a sibling of se, causing the following se to be invalid)
\se test two
\bw okay

Also available in: Atom PDF