# -*- mode: Perl -*-
# /=====================================================================\ #
# |  tikz.sty                                                           | #
# | Implementation for LaTeXML                                          | #
# |=====================================================================| #
# | Part of LaTeXML:                                                    | #
# |  Public domain software, produced as part of work done by the       | #
# |  United States Government & not subject to copyright in the US.     | #
# |---------------------------------------------------------------------| #
# | Thanks to Silviu Vlad Oprea <s.oprea@jacobs-university.de>          | #
# | of the arXMLiv group for initial implementation                     | #
# |    http://arxmliv.kwarc.info/                                       | #
# | Released under the Gnu Public License                               | #
# | Released to the Public Domain                                       | #
# |---------------------------------------------------------------------| #
# | Bruce Miller <bruce.miller@nist.gov>                        #_#     | #
# | http://dlmf.nist.gov/LaTeXML/                              (o o)    | #
# \=========================================================ooo==U==ooo=/ #
package LaTeXML::Package::Pool;
use strict;
use warnings;
use LaTeXML::Package;

InputDefinitions('tikz', type => 'sty', noltxml => 1);

# Not absolutely necessary to redefine this, but it makes sure
# we load the file as definitions rather than content,
# with some slight efficiencies
##  \def\usetikzlibrary{\pgfutil@ifnextchar[{\use@tikzlibrary}{\use@@tikzlibrary}}%}
##  \def\use@tikzlibrary[#1]{\use@@tikzlibrary{#1}}
DefPrimitive('\use@@tikzlibrary{}', sub {
    my ($gullet, $libs) = @_;
    foreach my $lib (split(/,/, $libs = ToString(Expand($libs)))) {
      $lib =~ s/^\s+//; $lib =~ s/\s+$//;
      if ($lib && !LookupDefinition(T_CS('\tikz@library@' . $lib . '@loaded'))) {
        NoteLog("TIKZ LIBRARY $lib");
        Let(T_CS('\tikz@library@' . $lib . '@loaded'), T_CS('\pgfutil@empty'));
        my $barcc = LookupCatcode('|');
        AssignCatcode('|', CC_OTHER);
        if (InputDefinitions('tikzlibrary' . $lib . '.code.tex', noerror => 1)
          || InputDefinitions('pgflibrary' . $lib . '.code.tex', noerror => 1)) { }
        else {
          Warn('missing_file', $lib, $STATE->getStomach->getGullet,
            "Can't find tikz library '$lib' (neither pgf nor tikz)",
            "Anticipate undefined macros or environments or keys"); }
        AssignCatcode('|', $barcc);
    } }
    return; });

# TODO: What do we need to do to get the native emulation working?
DefMacro('\tikz@align@temp', '\pgfmathresult');

# TODO: Why is this macro failing to get picked up?
DefMacro('\tikzcdset', '\pgfqkeys{/tikz/commutative diagrams}');

1;
