#! /usr/bin/env node

/*************************************************************************
 *
 *  tex2html
 *
 *  Uses MathJax to convert a TeX or LaTeX string to an HTML string.
 *
 * ----------------------------------------------------------------------
 *
 *  Copyright (c) 2016 The MathJax Consortium
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

var mjAPI = require("../lib/mj-single.js");

var argv = require("yargs")
  .demand(1).strict()
  .usage("Usage: tex2html [options] 'math' > file.html",{
    inline: {
      boolean: true,
      describe: "process as in-line TeX"
    },
    speech: {
      boolean: true,
      describe: "include speech text"
    },
    speechrules: {
      default: "mathspeak",
      describe: "ruleset to use for speech text (chromevox or mathspeak)"
    },
    speechstyle: {
      default: "default",
      describe: "style to use for speech text (default, brief, sbrief)"
    },
    linebreaks: {
      boolean: true,
      describe: "perform automatic line-breaking"
    },
    ex: {
      default: 6,
      describe: "ex-size in pixels"
    },
    width: {
      default: 100,
      describe: "width of container in ex"
    },
    extensions: {
      default: "",
      describe: "extra MathJax extensions e.g. 'Safe,TeX/noUndefined'"
    },
    css: {
      boolean: true,
      describe: "output the required CSS rather than the HTML itself"
    },
    fontURL: {
      default: "https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS",
      describe: "the URL to use for web fonts"
    }
  })
  .argv;

mjAPI.config({extensions: argv.extensions, fontURL: argv.fontURL});
mjAPI.start();

mjAPI.typeset({
  math: argv._[0],
  format: (argv.inline ? "inline-TeX" : "TeX"),
  html:true, css: argv.css,
  speakText: argv.speech,
  speakRuleset: argv.speechrules.replace(/^chromevox$/i,"default"),
  speakStyle: argv.speechstyle,
  ex: argv.ex, width: argv.width,
  linebreaks: argv.linebreaks
}, function (data) {
  if (!data.errors) {console.log(argv.css ? data.css : data.html)}
});