# frozen_string_literal: true require_relative "binary_function" module Plurimath module Math module Function class Log < BinaryFunction def to_asciimath first_value = "_#{wrapped(parameter_one)}" if parameter_one second_value = "^#{wrapped(parameter_two)}" if parameter_two "log#{first_value}#{second_value}" end def to_latex first_value = "_#{latex_wrapped(parameter_one)}" if parameter_one second_value = "^#{latex_wrapped(parameter_two)}" if parameter_two "\\log#{first_value}#{second_value}" end def to_html first_value = "<sub>#{parameter_one.to_html}</sub>" if parameter_one second_value = "<sup>#{parameter_two.to_html}</sup>" if parameter_two "<i>log</i>#{first_value}#{second_value}" end def to_omml_without_math_tag func = Utility.ox_element("func", namespace: "m") funcpr = Utility.ox_element("funcPr", namespace: "m") funcpr << Utility.pr_element("ctrl", true, namespace: "m") fname = Utility.ox_element("fName", namespace: "m") mr = Utility.ox_element("r", namespace: "m") rpr = Utility.rpr_element mt = Utility.ox_element("t", namespace: "m") << class_name fname << Utility.update_nodes(mr, [rpr, mt]) log_values = [first_value, second_value].flatten.compact Utility.update_nodes( func, [ funcpr, fname, ] + log_values, ) end def to_mathml_without_math_tag subsup_tag = Utility.ox_element("msubsup") first_value = (Utility.ox_element("mi") << "log") if parameter_one || parameter_two new_arr = [first_value] new_arr << parameter_one&.to_mathml_without_math_tag new_arr << parameter_two&.to_mathml_without_math_tag Utility.update_nodes( subsup_tag, new_arr, ) else first_value end end protected def first_value return nil if parameter_one.nil? first_value = parameter_one.to_omml_without_math_tag Utility.ox_element("e", namespace: "m") << first_value end def second_value return nil if parameter_two.nil? second_value = parameter_two.to_omml_without_math_tag Utility.ox_element("e", namespace: "m") << second_value end end end end end