Have you read the specification? It's fairly straightforward:

http://rst.projectfondue.com/api/v1/rst2html/?rst_url=https://raw.github.com/citation-style-language/documentation/master/specification.txt&css_url=http://citation-style-language.github.com/styles/css/screen.css&output_type=html&callback=&document_output=whole&highlight_style=manni#choose

The variable condition 'tests whether the default (long) forms of the given 
variables contain non-empty values'.

Basically, in a choose node you can have a number of conditional blocks (i.e., 
if, else-if, else nodes); each if/else-if node can define a number of 
conditions; each condition has a value (multiple values are possible too). When 
you parse the node, you can create a list of condition-types and values. For 
example:

<if variable="author"> yields the list: ['variable', 'author']

<if variable="author" is-numeric="edition"> yields the list: [['variable', 
'author'], ['is-numeric', 'edition']]
<if variable="author editor" is-numeric="edition"> yields the list: 
[['variable', 'author'], ['variable', 'editor'], ['is-numeric', 'edition']]

Additionally, each node can have a 'match' attribute which tells you how to 
combine the list of conditions (provided there is more than one condition).

So, to answer your question:

> <if variable="author editor" match="any">


This block evaluates to true if the your citation item contains either an 
author or an editor.

Here you can see how this is implemented in citeproc-ruby:

https://github.com/inukshuk/citeproc-ruby/blob/master/lib/citeproc/ruby/renderer/choose.rb#L38

On line 46, node.conditions returns the list of conditions for the node as a 
list of [type, value] arrays as I explained above; each item in the list is 
evaluated according to its type and the whole list is reduced using either 
all?, any?, or none? as specified by the node's match attribute.

Hope that helps!

Sylvester


On Jan 22, 2013, at 3:35 PM, jda wrote:

> 
> I'm toying with writing a CSL parser and have found this to be rather 
> difficult. I've been able to deal with relatively simple styles, like JBC, 
> but find the more complex ones baffling. For example, the Chicago styles. 
> Here's one macro from the Chicago Author-Date style:
> 
>  <macro name="secondary-contributors">
>    <choose>
>      <if type="chapter paper-conference" match="none">
>        <group delimiter=". ">
>          <choose>
>            <if variable="author">
>              <names variable="editor">
>                <label form="verb" text-case="capitalize-first" suffix=" " 
> plural="never"/>
>                <name and="text" delimiter=", "/>
>              </names>
>            </if>
>          </choose>
>          <choose>
>            <if variable="author editor" match="any">
>              <names variable="translator">
>                <label form="verb" text-case="capitalize-first" suffix=" " 
> plural="never"/>
>                <name and="text" delimiter=", "/>
>              </names>
>            </if>
>          </choose>
>        </group>
>      </if>
>    </choose>
>  </macro>
> 
> Could someone translate the logic of this macro into English for me?
> 
> The <if type= node is self-explanatory. However, what does <if 
> variable="author"> mean? To me it would seem to mean
> 
> if type is a chapter or paper-conference
> 
>  if an author is to be output
> 
>     substitute the editor
> 
> 
> but that makes no sense. Also, what does <if variable="author editor" 
> match="any"> mean?
> 
> I appreciate any explanation someone on the list can give.
> 
> Thanks,
> 
> Jon
> ------------------------------------------------------------------------------
> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
> MVPs and experts. ON SALE this month only -- learn more at:
> http://p.sf.net/sfu/learnnow-d2d
> _______________________________________________
> xbiblio-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/xbiblio-devel


------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
xbiblio-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbiblio-devel

Reply via email to