Sha256: 12503f5eb5ea99af9bc333c5ddd8f94b39a82941c2f2d4333ac93d0e0d2c5bb4
Contents?: true
Size: 1.08 KB
Versions: 2
Compression:
Stored size: 1.08 KB
Contents
# frozen_string_literal: true require_relative "parse" require_relative "constants" require_relative "transform" module Plurimath class Latex class Parser attr_accessor :text TEXT_REGEX = %r(\\(?:mbox|text){[^}]+}) def initialize(text) @text = pre_processing(text) end def parse tree_t = Parse.new.parse(text) formula = Transform.new.apply(tree_t) formula = [formula] unless formula.is_a?(Array) Math::Formula.new(formula) end private def pre_processing(text) text_functions = text.scan(TEXT_REGEX) enti = HTMLEntities.new text = enti.encode(enti.decode(text), :hexadecimal) text = gsub_space_and_unicodes(text) text.gsub(TEXT_REGEX) { |str| text_functions.shift } end def gsub_space_and_unicodes(text) text .gsub(/((?<!\\) )|\n+/, "") .gsub(/\\\\ /, "\\\\\\\\") .gsub(/&/, "&") .gsub(/"/, "\"") .gsub(/(?<!\\\\)\\
/, "\\ ") .gsub(/
/, "") end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
plurimath-0.8.13 | lib/plurimath/latex/parser.rb |
plurimath-0.8.12 | lib/plurimath/latex/parser.rb |