Module:Citation/CS1/COinS: Difference between revisions

    m>Trappist the monk
    No edit summary
    m>Trappist the monk
    No edit summary
    Line 97: Line 97:
    end
    end


    --[=[-------------------------< C O I N S _ R E P L A C E _ M A T H _ S T R I P M A R K E R >------------------
    There are three options for math markup that depends on the editor's math preference settings.  These settings
    are at [[Special:Preferences#mw-prefsection-rendering]] and are
    PNG images
    TeX source
    MathML with SVG or PNG fallback
    All three are heavy with html and css which don't belong in the metadata.
    This function gets the rendered form of an equation according to the editor's preference.  It then searches the
    rendering for the text equivalent of the rendered equation and replaces the rendering with that.
    ]=]
    local function coins_replace_math_stripmarker (value)
    local stripmarker = '\127UNIQ%-%-math%-[%a%d]+%-QINU\127'; -- math stripmarker pattern
    local rendering = value:match (value); -- is there a math stripmarker
    if not rendering then -- when value doesn't have a math stripmarker, abandon this test
    return value;
    end
    rendering = mw.text.unstripNoWiki (stripmarker); -- get the rendered value (or nil? ''? when math render error)
    if rendering:match ('alt="[^"]+"') then -- if PNG math option
    rendering = rendering:match ('alt="([^"]+)"'); -- extract just the math text
    elseif rendering:match ('$%s+.+%s+%$') then -- if TeX math option; $ is legit character that is escapes as \$
    rendering = rendering:match ('$%s+(.+)%s+%$') -- extract just the math text
    elseif rendering:match ('<annotation[^>]+>.+</annotation>') then -- if MathML math option
    rendering:match ('<annotation[^>]+>(.+)</annotation>') -- extract just the math text
    else
    return value; -- had math stripmarker but not one of the three defined forms
    end
    return value:gsub (stripmarker, rendering, 1);
    end


    --[[--------------------------< C O I N S _ C L E A N U P >----------------------------------------------------
    --[[--------------------------< C O I N S _ C L E A N U P >----------------------------------------------------
    Line 110: Line 148:


    local function coins_cleanup (value)
    local function coins_cleanup (value)
    value = coins_replace_math_stripmarker (value); -- replace math stripmarker with text representation of the equation
    value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content
    value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content
    value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">&#39;s</span>', "'s"); -- replace {{'s}} template with simple apostrophe-s
    value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">&#39;s</span>', "'s"); -- replace {{'s}} template with simple apostrophe-s