remove perl scripts that are not used anymore - not part of build
git-svn-id: svn://10.0.0.236/trunk@126878 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,761 +0,0 @@
|
||||
#!/bin/perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (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.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is Mozilla MathML Project.
|
||||
#
|
||||
# The Initial Developer of the Original Code is The University Of
|
||||
# Queensland. Portions created by The University Of Queensland are
|
||||
# Copyright (C) 1999 The University Of Queensland. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Roger B. Sidje <rbs@maths.uq.edu.au>
|
||||
#
|
||||
|
||||
# Purpose:
|
||||
# This script processes unicode points and generates a file that
|
||||
# contains the MathML DTD, i.e., the XML definitions of
|
||||
# MathML entities.
|
||||
# RBS - Aug 27, 1999.
|
||||
|
||||
$usage = <<USAGE;
|
||||
|
||||
Usage: gendtd.pl unicode_file [entity_file]
|
||||
|
||||
- unicode_file is the input file. It must either be: byalpha.txt
|
||||
or bycodes.txt.
|
||||
|
||||
The files byalpha.txt and bycodes.txt were simply obtained by visiting
|
||||
the links of the W3C MathML REC (see below) and using the Navigator's
|
||||
command "Save as text":
|
||||
byalpha.txt: http://www.w3.org/TR/REC-MathML/chap6/byalpha.html
|
||||
bycodes.txt: http://www.w3.org/TR/REC-MathML/chap6/bycodes.html
|
||||
|
||||
It is recommended to use byalpha.txt because it includes aliases (i.e.,
|
||||
all the entity names corresponding to the same unicode point)
|
||||
|
||||
- entity_file is the output file. It will contain the XML definitions
|
||||
of MathML entities. If entity_file is not provided, the default
|
||||
output file will be: mathml.dtd
|
||||
USAGE
|
||||
|
||||
$badusage = 0;
|
||||
$badusage = 1 if $#ARGV < 0;
|
||||
$badusage = 1 if $ARGV[0] ne "byalpha.txt" && $ARGV[0] ne "bycodes.txt";
|
||||
if ($badusage) {
|
||||
print $usage;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
$unicode_file = $ARGV[0];
|
||||
$entity_file = $ARGV[1];
|
||||
$entity_file = "mathml.dtd" if !$entity_file;
|
||||
|
||||
print "\nINPUT: $unicode_file";
|
||||
print "\nOUTPUT: $entity_file\n";
|
||||
|
||||
# Output: the file $entity_file contains the definitions of XML
|
||||
# entities for all of MathML or for the TeX symbols and/or MathML operators.
|
||||
|
||||
# Note: other features are commented in the code.
|
||||
|
||||
|
||||
|
||||
@IGNORE = ("amp", # these default XML entities will not be processed
|
||||
"lt",
|
||||
"gt");
|
||||
|
||||
&getTeX(); # Get the converted TeX entities as returned by TeX2MML.
|
||||
# Accuracy depends on the implementation of TeX2MML!
|
||||
|
||||
&getMathMLOperators(); # Get the MathML Operators - exact *copy-paste* from
|
||||
# http://www.w3.org/TR/REC-MathML/appendixC.html
|
||||
|
||||
&getUnicode($unicode_file); # $unicode_file = "byalpha.txt" or "bycodes.txt"
|
||||
# byalpha.txt, bycodes.txt are simply the Save as text of
|
||||
# http://www.w3.org/TR/REC-MathML/chap6/byalpha.html
|
||||
# http://www.w3.org/TR/REC-MathML/chap6/bycodes.html
|
||||
|
||||
|
||||
print "\nNumber of Symbols: TeX = " . ($#TEX+1) . " MathML Operators = " . ($#OPERATOR+1);
|
||||
|
||||
#Check if all MathML Operators have been assigned unicode points...
|
||||
|
||||
print "\n\nChecking MathML Operators...";
|
||||
for ($i=0; $i<=$#OPERATOR; ++$i) {
|
||||
if (!($UNICODE{$OPERATOR[$i]})) {
|
||||
print "\n$OPERATOR[$i] does not have its unicode point";
|
||||
# exit(0);
|
||||
}
|
||||
else {
|
||||
# print "\n$OPERATOR[$i] $UNICODE{$OPERATOR[$i]}";
|
||||
}
|
||||
}
|
||||
|
||||
#Check if all TeX Symbols have been assigned unicode points...
|
||||
|
||||
print "\n\nChecking TeX Symbols...";
|
||||
for ($i=0; $i<=$#TEX; ++$i) {
|
||||
if (!($UNICODE{$TEX[$i]})) {
|
||||
print "\n$TEX[$i] does not have its unicode point";
|
||||
# exit(0);
|
||||
}
|
||||
else {
|
||||
# print "\n$TEX[$i] $UNICODE{$TEX[$i]}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
################
|
||||
# Now extract the unicode points of the entities of interest.
|
||||
# Uncomment the appropriate case, and comment the others
|
||||
|
||||
#Case 1: Extrat the unicode points of *TeX symbols only*
|
||||
#@ENTITY_SET = @TEX;
|
||||
|
||||
#Case 2: Extract the unicode points of *MathML Operators only*
|
||||
#@ENTITY_SET = @OPERATOR;
|
||||
|
||||
#Case 3: Extract the unicode points of the union *TeX + MathML Operators*
|
||||
#@ENTITY_SET = (@TEX,@OPERATOR);
|
||||
|
||||
#Case 4: Extract *all* MathML entities
|
||||
#Case 4a: without aliases...
|
||||
#@ENTITY_SET = @ENTITY_LAST_ALIAS{keys %ENTITY_LAST_ALIAS}; # no aliases here
|
||||
#Case 4b: with aliases...
|
||||
@ENTITY_SET = @ENTITY; #aliases are here if it was getUnicode("byalpha.txt").
|
||||
|
||||
|
||||
#################
|
||||
open (OUTPUT_FILE, ">$entity_file") || die("can't open $entity_file");
|
||||
|
||||
print "\n\nBuilding the entity list and Saving into:\n$entity_file ...\n";
|
||||
|
||||
# collect the aliases in an array of strings.
|
||||
|
||||
$count = $pua = 0;
|
||||
$ignore = join(" ",@IGNORE);
|
||||
|
||||
for ($i=0; $i<=$#ENTITY_SET; ++$i) {
|
||||
$entity = $ENTITY_SET[$i];
|
||||
$unicode = $UNICODE{$entity};
|
||||
|
||||
#skip if entity should be ignored
|
||||
next if $ignore =~ /$entity/;
|
||||
|
||||
#skip if no unicode or entity is already in the table
|
||||
next if $unicode eq "" || $TABLE{$unicode} =~ /$entity/;
|
||||
|
||||
$TABLE{$unicode} .= " $entity";
|
||||
|
||||
$XML_DECLARATION{$unicode} .=
|
||||
'<!ENTITY ' . $entity . ' "&#x' . $unicode . ';"> ';
|
||||
++$count;
|
||||
|
||||
$XML_CONTENT .= '&' . $entity . ";\n";
|
||||
|
||||
if ($unicode ge "E000" && $unicode le "F8FF") {
|
||||
# print "PUA\n-------------------------\n" if $pua == 0;
|
||||
# print "$unicode $entity\n";
|
||||
$TABLE_PUA{$unicode} .= " $entity";
|
||||
++$pua;
|
||||
}
|
||||
}
|
||||
|
||||
foreach $unicode (sort keys %TABLE_PUA) {
|
||||
$PUA .= "$unicode $TABLE_PUA{$unicode}\n";
|
||||
}
|
||||
|
||||
foreach $unicode (sort keys %TABLE) {
|
||||
# print OUTPUT_FILE "$unicode $TABLE{$unicode}\n";
|
||||
$XML_DOCTYPE .= $XML_DECLARATION{$unicode} . "\n";
|
||||
}
|
||||
|
||||
print OUTPUT_FILE <<HEADER_DATA;
|
||||
<!--
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla MathML Project.
|
||||
*
|
||||
* The Initial Developer of the Original Code is The University of
|
||||
* Queensland. Portions created by The University of Queensland are
|
||||
* Copyright (C) 1999 The University of Queensland. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Roger B. Sidje <rbs\@maths.uq.edu.au>
|
||||
-->
|
||||
|
||||
<!-- MathML 1.01 entities - Auto-generated (Total in this list: $count) -->
|
||||
|
||||
HEADER_DATA
|
||||
|
||||
#print OUTPUT_FILE "<?xml version=\"1.0\"?>\n<!DOCTYPE math\n[\n";
|
||||
print OUTPUT_FILE "$XML_DOCTYPE";
|
||||
#print OUTPUT_FILE "]>\n";
|
||||
|
||||
|
||||
#print OUTPUT_FILE "<para>$XML_CONTENT</para>\n";
|
||||
#print <<XML;
|
||||
#<!--
|
||||
#$PUA
|
||||
#-->
|
||||
#XML
|
||||
|
||||
|
||||
close(OUTPUT_FILE);
|
||||
|
||||
print "Done $count unicode points. PUA: $pua\n";
|
||||
|
||||
exit(0);
|
||||
|
||||
################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# All outputs are global variables ...
|
||||
|
||||
#
|
||||
# extract all the symbols of the MathML REC byalpha.txt or bycodes.txt (the
|
||||
# name of the file is passed as argument)
|
||||
# INPUT: "byalpha.txt" or "bycodes.txt"
|
||||
# OUTPUT: - hash array %UNICODE holding $UNICODE{$entity} = $unicode
|
||||
# - array @ENTITY such $ENTITY[$i] is an entity name
|
||||
# - hash array %ENTITY_LAST_ALIAS such that
|
||||
# $ENTITY_LAST_ALIAS{$unicode} = last entity with that unicode
|
||||
sub getUnicode {
|
||||
local($infile) = @_[0];
|
||||
|
||||
$byalpha = $infile =~ /byalpha/;
|
||||
|
||||
print "\nScanning $infile ...";
|
||||
open (INFILE, $infile) || die("Can't open $infile");
|
||||
|
||||
$count = 0;
|
||||
while (<INFILE>) {
|
||||
#pattern byalpha: entity isolat2 377 unicode =capital Z, acute accent
|
||||
if ($byalpha) { # byalpha -- ALIASES ARE INCLUDED
|
||||
if ( /^([a-z\.]\S+)\s+\S+\s+\d+\s+(\S+)\s+.*/i ) {
|
||||
($entity,$unicode) = ($1,$2);
|
||||
if ($UNICODE{$entity}) { #conflicting mapping ?
|
||||
next if $UNICODE{$entity} eq $unicode;
|
||||
print "\nWARNING! Found: $entity -> $unicode <-- $map --> $UNICODE{$entity}";
|
||||
}
|
||||
|
||||
$UNICODE{$entity} = $unicode;
|
||||
$ENTITY_LAST_ALIAS{$unicode} = $entity;
|
||||
++$count;
|
||||
}
|
||||
}
|
||||
else { # bycodes -- ALIASES ARE NOT INCLUDED
|
||||
#pattern bycode: unicode 9 entity mmlextra tabulator stop; horizontal tabulation
|
||||
if ( /^(\S+)\s+\d+\s+([a-z\.]+)\s+\S+\s+.*/i ) {
|
||||
($unicode,$entity) = ($1,$2);
|
||||
# print "\n$entity $unicode";
|
||||
$UNICODE{$entity} = $unicode;
|
||||
$ENTITY_LAST_ALIAS{$unicode} = $entity;
|
||||
++$count;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ENTITY = (keys %UNICODE);
|
||||
print "\nFound: $count unicode points, " . ($#ENTITY+1) . " entities\n";
|
||||
}
|
||||
|
||||
#Get entity names of TeX Symbols
|
||||
#Symbols obtained by using TeX2MathML (http://hutchinson.belmont.ma.us/tth/mml/tthmmlform.html)
|
||||
#The input snippets were taken from David Carlisle's symbols.tex (ver 3.2)
|
||||
# INPUT:
|
||||
# OUTPUT: an array @TEX such that $TEX[$i] is the name of an entity
|
||||
sub getTeX {
|
||||
@SYMBOLS = <<TEX2MathML;
|
||||
αθoτβϑπυγιϖφ
|
||||
δκρϕελϱχϵμσ
|
||||
ψζνςωηiΓΛΣΨ
|
||||
ΔiϒΩΘΠΦ 
|
||||
±∩◊⊕∓∪\bigtriangleup\ominus×\uplus
|
||||
\bigtriangledown⊗÷\sqcap\triangleleftø*\sqcup\triangleright
|
||||
\odot☆∨\lhd\bigcircˆ∧\rhd\dagger•∖\unlhd\ddagger·r\unrhd\amalg
|
||||
≤≥≡\models\prec\succ~⊥\preceq\succeq≈\mid <<
|
||||
>>\asymp∥⊂⊃≈\bowtie⊆⊇≅\Join\sqsubset\sqsupset≠
|
||||
\smile\sqsubseteq\sqsupseteq\doteq\frown∈∋∝=\vdash\dashv
|
||||
←←↑⇐⇐⇑→→↓⇒⇒⇑⇆⇆
|
||||
↓&lrArr;&lrArr;↓→\longmapsto\nearrow\hookleftarrow\hookrightarrow\searrow
|
||||
\leftharpoonup\rightharpoonup\swarrow\leftharpoondown\rightharpoondown\nwarrow\rightleftharpoons\leadsto
|
||||
……:ℵ'∀∞∅∃ı▿¬\Diamondȷ
|
||||
√\flat\triangleℓ⊤\natural♣℘⊥\sharp♦&rfraktur;
|
||||
\♥&ifraktur;∠∂♠\mho
|
||||
∑⋂\bigodotΠ⋃⨂\coprod\bigsqcup⨁∫⋁\biguplus∮⋀
|
||||
⪻
|
||||
()↑⇑[]↓⇑{}↓↓⌊⌋⌈⌉⟨⟩/\‖
|
||||
TEX2MathML
|
||||
|
||||
# extract the relevant part
|
||||
$count = 0;
|
||||
$string = join("",@SYMBOLS);
|
||||
$string =~ s#\n##g;
|
||||
$string =~ s#[^a-zA-Z\&;]##g;
|
||||
$string =~ s#;#;\n#g;
|
||||
while ($string =~ m#\&([a-zA-z]+);#g) {
|
||||
$TEX[$count] = $1;
|
||||
++$count;
|
||||
}
|
||||
}
|
||||
|
||||
#Get entity names of MathML Operators
|
||||
# INPUT:
|
||||
# OUTPUT: an array @OPERATOR such that $OPERATOR[$i] is the name of an operator entity
|
||||
sub getMathMLOperators {
|
||||
@SYMBOLS = <<MathMLOperatorDictionary;
|
||||
"(" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
")" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"[" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"]" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"{" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"}" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"”" form="postfix" fence="true" lspace="0em" rspace="0em"
|
||||
"’" form="postfix" fence="true" lspace="0em" rspace="0em"
|
||||
"⟨" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&LeftBracketingBar;" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⌈" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⟦" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&LeftDoubleBracketingBar;" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⌊" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"“" form="prefix" fence="true" lspace="0em" rspace="0em"
|
||||
"‘" form="prefix" fence="true" lspace="0em" rspace="0em"
|
||||
"⟩" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&RightBracketingBar;" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⌉" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⟧" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&RightDoubleBracketingBar;" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⌋" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&LeftSkeleton;" form="prefix" fence="true" lspace="0em" rspace="0em"
|
||||
"&RightSkeleton;" form="postfix" fence="true" lspace="0em" rspace="0em"
|
||||
|
||||
"⁣" form="infix" separator="true" lspace="0em" rspace="0em"
|
||||
|
||||
"," form="infix" separator="true" lspace="0em" rspace=".33333em"
|
||||
|
||||
"─" form="infix" stretchy="true" minsize="0" lspace="0em" rspace="0em"
|
||||
"|" form="infix" stretchy="true" minsize="0" lspace="0em" rspace="0em"
|
||||
|
||||
";" form="infix" separator="true" lspace="0em" rspace=".27777em"
|
||||
";" form="postfix" separator="true" lspace="0em" rspace="0em"
|
||||
|
||||
":=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≔" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"∵" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∴" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"❘" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"//" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"∷" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"&" form="prefix" lspace="0em" rspace=".27777em"
|
||||
"&" form="postfix" lspace=".27777em" rspace="0em"
|
||||
|
||||
"*=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"-=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"+=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"/=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"->" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
":" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
".." form="postfix" lspace=".22222em" rspace="0em"
|
||||
"..." form="postfix" lspace=".22222em" rspace="0em"
|
||||
|
||||
"∋" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"⫤" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊨" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊤" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊣" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊢" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"⇒" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥰" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"|" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"||" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"⩔" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
|
||||
"&&" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩓" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
|
||||
"&" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"!" form="prefix" lspace="0em" rspace=".27777em"
|
||||
"⫬" form="prefix" lspace="0em" rspace=".27777em"
|
||||
|
||||
"∃" form="prefix" lspace="0em" rspace=".27777em"
|
||||
"∀" form="prefix" lspace="0em" rspace=".27777em"
|
||||
"∄" form="prefix" lspace="0em" rspace=".27777em"
|
||||
|
||||
"∈" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∉" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∌" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊏̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋢" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊐̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋣" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊂⃒" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊈" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊃⃒" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊉" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∋" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊏" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊑" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊐" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊒" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋐" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊆" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊃" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊇" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"⇐" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇔" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇒" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥐" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥞" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↽" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥖" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥟" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇁" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥗" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"←" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇤" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇆" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↔" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥎" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↤" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥚" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↼" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥒" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↙" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↘" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"→" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇥" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇄" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↦" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥛" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇀" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥓" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"←" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"→" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"↖" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↗" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"<" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
">" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"!=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"==" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"<=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
">=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≡" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≍" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≐" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∥" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩵" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≂" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⇌" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"≥" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋛" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≧" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪢" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≷" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩾" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≳" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≎" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≏" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊲" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⧏" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊴" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≤" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋚" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≦" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≶" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪡" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩽" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≲" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≫" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≪" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≢" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≭" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∦" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≠" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≂̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≯" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≱" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≧̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≫̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≹" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩾̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≵" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≎̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≏̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋪" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⧏̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋬" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≮" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≰" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"&NotLessFullEqual;" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≪̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩽̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≴" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪢̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪡̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊀" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪯̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋠" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"&NotPrecedesTilde;" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋫" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⧐̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋭" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊁" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪰̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋡" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≿̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≁" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≄" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≇" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≉" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∤" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≺" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪯" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≼" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≾" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∷" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∝" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⇋" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⊳" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⧐" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊵" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≻" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪰" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≽" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≿" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∼" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≃" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≅" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≈" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊥" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∣" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"⊔" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
"⋃" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
"⊎" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
|
||||
"-" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"+" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"⋂" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
"∓" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"±" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"⊓" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
|
||||
"⋁" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⊖" form="prefix" largeop="true" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"⊕" form="prefix" largeop="true" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"∑" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⋃" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⊎" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"lim" form="prefix" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"max" form="prefix" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"min" form="prefix" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
|
||||
"⊖" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
"⊕" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"∲" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"∮" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"∳" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"∯" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"∫" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
|
||||
"⋓" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋒" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"≀" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋀" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⊗" form="prefix" largeop="true" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"∐" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"∏" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⋂" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
|
||||
"∐" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋆" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⊙" form="prefix" largeop="true" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
|
||||
"*" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
"⁢" form="infix" lspace="0em" rspace="0em"
|
||||
|
||||
"·" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⊗" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋁" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋀" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋄" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"∖" form="infix" stretchy="true" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"/" form="infix" stretchy="true" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"-" form="prefix" lspace="0em" rspace=".05555em"
|
||||
"+" form="prefix" lspace="0em" rspace=".05555em"
|
||||
"∓" form="prefix" lspace="0em" rspace=".05555em"
|
||||
"±" form="prefix" lspace="0em" rspace=".05555em"
|
||||
|
||||
"." form="infix" lspace="0em" rspace="0em"
|
||||
|
||||
"⨯" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"**" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"⊙" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"∘" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"□" form="prefix" lspace="0em" rspace=".11111em"
|
||||
|
||||
"∇" form="prefix" lspace="0em" rspace=".11111em"
|
||||
"∂" form="prefix" lspace="0em" rspace=".11111em"
|
||||
|
||||
"ⅅ" form="prefix" lspace="0em" rspace=".11111em"
|
||||
"ⅆ" form="prefix" lspace="0em" rspace=".11111em"
|
||||
|
||||
"√" form="prefix" stretchy="true" lspace="0em" rspace=".11111em"
|
||||
|
||||
"⇓" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟸" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟺" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟹" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇑" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇕" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↓" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⤓" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇵" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↧" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥡" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇃" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥙" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥑" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥠" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↿" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥘" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟵" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟷" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟶" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥯" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥝" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇂" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥕" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥏" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥜" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↾" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥔" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↓" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
"↑" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
"↑" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⤒" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇅" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↕" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥮" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↥" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"^" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"<>" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"'" form="postfix" lspace=".11111em" rspace="0em"
|
||||
|
||||
"!" form="postfix" lspace=".11111em" rspace="0em"
|
||||
"!!" form="postfix" lspace=".11111em" rspace="0em"
|
||||
|
||||
"~" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"@" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"--" form="postfix" lspace=".11111em" rspace="0em"
|
||||
"--" form="prefix" lspace="0em" rspace=".11111em"
|
||||
"++" form="postfix" lspace=".11111em" rspace="0em"
|
||||
"++" form="prefix" lspace="0em" rspace=".11111em"
|
||||
|
||||
"⁡" form="infix" lspace="0em" rspace="0em"
|
||||
|
||||
"?" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"_" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"˘" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"¸" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"`" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"˙" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"˝" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalLeftArrow;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalLeftRightArrow;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalLeftRightVector;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalLeftVector;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"´" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalRightArrow;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalRightVector;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"˜" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"¨" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"̑" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"ˇ" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"^" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"‾" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⏞" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⎴" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⏜" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⃛" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"_" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⏟" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⎵" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⏝" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
MathMLOperatorDictionary
|
||||
|
||||
# extract the relevant part
|
||||
$count = 0;
|
||||
$string = join("",@SYMBOLS);
|
||||
$string =~ s#\n##g;
|
||||
$string =~ s#[^a-zA-Z\&;]##g;
|
||||
$string =~ s#;#;\n#g;
|
||||
while ($string =~ m#\&([a-zA-z]+);#g) {
|
||||
$OPERATOR[$count] = $1;
|
||||
++$count;
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
# Set a custom start page for MathML-enabled builds
|
||||
#
|
||||
# Usage:
|
||||
# perl mathml-start-page.pl "INSERT-PATH-TO/locale/navigator.properties"
|
||||
#
|
||||
# e.g,
|
||||
# perl mathml-start-page.pl "INSERT-PATH-TO/bin/chrome/locales/en-US/navigator/locale/navigator.properties"
|
||||
|
||||
|
||||
# Default start page for MathML-enabled builds
|
||||
$mathml_start_page = 'http://www.mozilla.org/projects/mathml/start.xml';
|
||||
|
||||
$sep = '/'; # directory separator
|
||||
|
||||
$navigator_properties_file = $ARGV[0];
|
||||
$navigator_properties_file =~ s|\\|$sep|g;
|
||||
|
||||
$done = 0;
|
||||
if (open(FILE, $navigator_properties_file))
|
||||
{
|
||||
@LINES = <FILE>;
|
||||
close(FILE);
|
||||
for ($i = 0; $i <= $#LINES; ++$i)
|
||||
{
|
||||
$done = ($LINES[$i] =~ s|^browser\.startup\.homepage=.*|browser\.startup\.homepage=$mathml_start_page|);
|
||||
if ($done)
|
||||
{
|
||||
open(FILE, ">$navigator_properties_file");
|
||||
print FILE @LINES;
|
||||
close(FILE);
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Feedback if the start page was set, or was already there
|
||||
if ($done)
|
||||
{
|
||||
print "Default homepage set to the MathML start page:\n$mathml_start_page\n\n";
|
||||
}
|
||||
else {
|
||||
print "Couldn't set the default homepage to the MathML start page.\n";
|
||||
}
|
||||
@@ -1,760 +0,0 @@
|
||||
#!/bin/perl
|
||||
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (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.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is Mozilla MathML Project.
|
||||
#
|
||||
# The Initial Developer of the Original Code is The University Of
|
||||
# Queensland. Portions created by The University Of Queensland are
|
||||
# Copyright (C) 1999 The University Of Queensland. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Roger B. Sidje <rbs@maths.uq.edu.au>
|
||||
#
|
||||
|
||||
# Purpose:
|
||||
# This script produces data for the operator dictionary
|
||||
# RBS - Aug 28, 1999 - updated: 22 March, 2000.
|
||||
|
||||
# Output: the file $operator_file contains the dictionary in suitable
|
||||
# format for inclusion with C++ macros.
|
||||
|
||||
#$operator_file = '..\content\src\nsMathMLOperatorList.h';
|
||||
$operator_file = 'operator.list';
|
||||
$unicode_file = "byalpha.txt";
|
||||
|
||||
&getUnicode($unicode_file); # $unicode_file = "byalpha.txt" or "bycodes.txt"
|
||||
# byalpha.txt, bycodes.txt are simply the Save as text of
|
||||
# http://www.w3.org/TR/REC-MathML/chap6/byalpha.html
|
||||
# http://www.w3.org/TR/REC-MathML/chap6/bycodes.html
|
||||
|
||||
&getMathMLOperators(); # Get the MathML Operators - exact *copy-paste* from
|
||||
# http://www.w3.org/TR/REC-MathML/appendixC.html
|
||||
|
||||
|
||||
print "\n***** Saving into the file ***** $operator_file *****\n";
|
||||
|
||||
open(OUTPUT_FILE, ">$operator_file") || die("can't open $operator_file");
|
||||
|
||||
print OUTPUT_FILE <<HEADER_DATA;
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla MathML Project.
|
||||
*
|
||||
* The Initial Developer of the Original Code is The University Of
|
||||
* Queensland. Portions created by The University Of Queensland are
|
||||
* Copyright (C) 1999 The University Of Queensland. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Roger B. Sidje <rbs\@maths.uq.edu.au>
|
||||
*/
|
||||
|
||||
/* MathML Operator Dictionary - Auto-generated by operator.pl. Do not edit! */
|
||||
|
||||
/* FORMAT
|
||||
MATHML_OPERATOR(_rank,
|
||||
_operator,= string value of the operator
|
||||
_flags, = bitwise: movablelimits|separator|largeop|accent|fence|stretchy|form
|
||||
_lspace, = leftspace in em
|
||||
_rspace) = rightspace in em
|
||||
*/
|
||||
|
||||
HEADER_DATA
|
||||
|
||||
|
||||
# $MATHML_OPERATOR_LIST is global variable that contains all the
|
||||
# operators in the dictionary with their attributes
|
||||
|
||||
print OUTPUT_FILE <<CONTENT;
|
||||
#if defined(WANT_MATHML_OPERATOR_COUNT)
|
||||
#define NS_MATHML_OPERATOR_COUNT $rank
|
||||
#else
|
||||
#define _ , // dirty trick to make the macro handle a variable number of arguments
|
||||
|
||||
$MATHML_OPERATOR_LIST
|
||||
#undef _
|
||||
#endif
|
||||
|
||||
CONTENT
|
||||
|
||||
close(OUTPUT_FILE);
|
||||
|
||||
print "Done $rank operators.\n";
|
||||
|
||||
exit(0);
|
||||
|
||||
################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# All outputs are global variables ...
|
||||
|
||||
#
|
||||
# extract all the symbols of the MathML REC byalpha.txt or bycodes.txt (the
|
||||
# name of the file is passed as argument)
|
||||
# INPUT: "byalpha.txt" or "bycodes.txt"
|
||||
# OUTPUT: - hash array %UNICODE such that $UNICODE{$entity} = $unicode
|
||||
# - array @ENTITY such that $ENTITY[$i] is an entity name
|
||||
# - hash array %ENTITY_LAST_ALIAS such that
|
||||
# $ENTITY_LAST_ALIAS{$unicode} = last entity with that unicode
|
||||
sub getUnicode {
|
||||
local($infile) = @_[0];
|
||||
|
||||
$byalpha = $infile =~ /byalpha/;
|
||||
|
||||
print "\nScanning $infile ...";
|
||||
open (INFILE, $infile) || die("Can't open $infile");
|
||||
|
||||
$count = 0;
|
||||
while (<INFILE>) {
|
||||
#pattern byalpha: entity isolat2 377 unicode =capital Z, acute accent
|
||||
if ($byalpha) { # byalpha -- ALIASES ARE INCLUDED
|
||||
if ( /^([a-z\.]\S+)\s+\S+\s+\d+\s+(\S+)\s+.*/i ) {
|
||||
($entity,$unicode) = ($1,$2);
|
||||
if ($UNICODE{$entity}) { #conflicting mapping ?
|
||||
next if $UNICODE{$entity} eq $unicode;
|
||||
print "\nWARNING! Found: $entity -> $unicode <> $UNICODE{$entity}";
|
||||
}
|
||||
|
||||
$UNICODE{$entity} = $unicode;
|
||||
$ENTITY_LAST_ALIAS{$unicode} = $entity;
|
||||
++$count;
|
||||
}
|
||||
}
|
||||
else { # bycodes -- ALIASES ARE NOT INCLUDED
|
||||
#pattern bycode: unicode 9 entity mmlextra tabulator stop; horizontal tabulation
|
||||
if ( /^(\S+)\s+\d+\s+([a-z\.]+)\s+\S+\s+.*/i ) {
|
||||
($unicode,$entity) = ($1,$2);
|
||||
# print "\n$entity $unicode";
|
||||
$UNICODE{$entity} = $unicode;
|
||||
$ENTITY_LAST_ALIAS{$unicode} = $entity;
|
||||
++$count;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ENTITY = (keys %UNICODE);
|
||||
print "\nFound: $count unicode points, " . ($#ENTITY+1) . " entities\n";
|
||||
}
|
||||
|
||||
|
||||
#Make the MathML Operator dictionary
|
||||
# INPUT:
|
||||
# OUTPUT:
|
||||
# $MATHML_OPERATOR_LIST - all operators in the dictionary
|
||||
|
||||
sub getMathMLOperators {
|
||||
|
||||
#Operator attributes:
|
||||
# values <-- default -->
|
||||
# form prefix |infix | postfix determined by position in mrow
|
||||
# fence true | false set by dictionary
|
||||
# accent true | false set by dictionary
|
||||
# lspace number h-unit set by dictionary
|
||||
# rspace number h-unit set by dictionary
|
||||
# largeop true | false set by dictionary
|
||||
# stretchy true | false set by dictionary
|
||||
# separator true | false set by dictionary
|
||||
# movablelimits true | false set by dictionary
|
||||
# symmetric true | false true
|
||||
# minzize number [h-unit | v-unit] 0
|
||||
# maxsize number [h-unit | v-unit] | infinity infinity
|
||||
|
||||
$DATA = <<MathMLOperatorDictionary;
|
||||
"(" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
")" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"[" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"]" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"{" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"}" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"”" form="postfix" fence="true" lspace="0em" rspace="0em"
|
||||
"’" form="postfix" fence="true" lspace="0em" rspace="0em"
|
||||
"⟨" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&LeftBracketingBar;" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⌈" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⟦" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&LeftDoubleBracketingBar;" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⌊" form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"“" form="prefix" fence="true" lspace="0em" rspace="0em"
|
||||
"‘" form="prefix" fence="true" lspace="0em" rspace="0em"
|
||||
"⟩" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&RightBracketingBar;" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⌉" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⟧" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&RightDoubleBracketingBar;" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⌋" form="postfix" fence="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&LeftSkeleton;" form="prefix" fence="true" lspace="0em" rspace="0em"
|
||||
"&RightSkeleton;" form="postfix" fence="true" lspace="0em" rspace="0em"
|
||||
|
||||
"⁣" form="infix" separator="true" lspace="0em" rspace="0em"
|
||||
|
||||
"," form="infix" separator="true" lspace="0em" rspace=".33333em"
|
||||
|
||||
"─" form="infix" stretchy="true" minsize="0" lspace="0em" rspace="0em"
|
||||
"|" form="infix" stretchy="true" minsize="0" lspace="0em" rspace="0em"
|
||||
|
||||
";" form="infix" separator="true" lspace="0em" rspace=".27777em"
|
||||
";" form="postfix" separator="true" lspace="0em" rspace="0em"
|
||||
|
||||
":=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≔" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"∵" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∴" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"❘" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"//" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"∷" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"&" form="prefix" lspace="0em" rspace=".27777em"
|
||||
"&" form="postfix" lspace=".27777em" rspace="0em"
|
||||
|
||||
"*=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"-=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"+=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"/=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"->" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
":" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
".." form="postfix" lspace=".22222em" rspace="0em"
|
||||
"..." form="postfix" lspace=".22222em" rspace="0em"
|
||||
|
||||
"∋" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"⫤" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊨" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊤" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊣" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊢" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"⇒" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥰" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"|" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"||" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"⩔" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
|
||||
"&&" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩓" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
|
||||
"&" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"!" form="prefix" lspace="0em" rspace=".27777em"
|
||||
"⫬" form="prefix" lspace="0em" rspace=".27777em"
|
||||
|
||||
"∃" form="prefix" lspace="0em" rspace=".27777em"
|
||||
"∀" form="prefix" lspace="0em" rspace=".27777em"
|
||||
"∄" form="prefix" lspace="0em" rspace=".27777em"
|
||||
|
||||
"∈" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∉" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∌" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊏̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋢" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊐̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋣" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊂⃒" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊈" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊃⃒" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊉" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∋" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊏" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊑" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊐" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊒" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋐" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊆" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊃" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊇" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"⇐" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇔" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇒" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥐" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥞" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↽" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥖" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥟" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇁" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥗" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"←" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇤" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇆" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↔" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥎" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↤" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥚" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↼" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥒" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↙" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↘" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"→" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇥" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇄" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↦" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥛" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⇀" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⥓" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"←" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"→" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"↖" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"↗" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"<" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
">" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"!=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"==" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"<=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
">=" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≡" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≍" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≐" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∥" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩵" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≂" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⇌" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"≥" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋛" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≧" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪢" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≷" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩾" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≳" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≎" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≏" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊲" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⧏" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊴" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≤" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋚" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≦" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≶" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪡" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩽" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≲" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≫" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≪" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≢" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≭" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∦" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≠" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≂̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≯" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≱" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≧̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≫̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≹" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩾̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≵" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≎̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≏̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋪" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⧏̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋬" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≮" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≰" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"&NotLessFullEqual;" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≪̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⩽̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≴" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪢̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪡̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊀" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪯̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋠" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"&NotPrecedesTilde;" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋫" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⧐̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋭" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊁" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪰̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⋡" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≿̸" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≁" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≄" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≇" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≉" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∤" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≺" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪯" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≼" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≾" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∷" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∝" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⇋" form="infix" stretchy="true" lspace=".27777em" rspace=".27777em"
|
||||
"⊳" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⧐" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊵" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≻" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⪰" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≽" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≿" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∼" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≃" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≅" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"≈" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"⊥" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
"∣" form="infix" lspace=".27777em" rspace=".27777em"
|
||||
|
||||
"⊔" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
"⋃" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
"⊎" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
|
||||
"-" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"+" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"⋂" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
"∓" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"±" form="infix" lspace=".22222em" rspace=".22222em"
|
||||
"⊓" form="infix" stretchy="true" lspace=".22222em" rspace=".22222em"
|
||||
|
||||
"⋁" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⊖" form="prefix" largeop="true" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"⊕" form="prefix" largeop="true" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"∑" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⋃" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⊎" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"lim" form="prefix" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"max" form="prefix" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"min" form="prefix" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
|
||||
"⊖" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
"⊕" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"∲" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"∮" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"∳" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"∯" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"∫" form="prefix" largeop="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
|
||||
"⋓" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋒" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"≀" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋀" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⊗" form="prefix" largeop="true" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
"∐" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"∏" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
"⋂" form="prefix" largeop="true" movablelimits="true" stretchy="true" lspace="0em" rspace=".16666em"
|
||||
|
||||
"∐" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋆" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⊙" form="prefix" largeop="true" movablelimits="true" lspace="0em" rspace=".16666em"
|
||||
|
||||
"*" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
"⁢" form="infix" lspace="0em" rspace="0em"
|
||||
|
||||
"·" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⊗" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋁" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋀" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"⋄" form="infix" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"∖" form="infix" stretchy="true" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"/" form="infix" stretchy="true" lspace=".16666em" rspace=".16666em"
|
||||
|
||||
"-" form="prefix" lspace="0em" rspace=".05555em"
|
||||
"+" form="prefix" lspace="0em" rspace=".05555em"
|
||||
"∓" form="prefix" lspace="0em" rspace=".05555em"
|
||||
"±" form="prefix" lspace="0em" rspace=".05555em"
|
||||
|
||||
"." form="infix" lspace="0em" rspace="0em"
|
||||
|
||||
"⨯" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"**" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"⊙" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"∘" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"□" form="prefix" lspace="0em" rspace=".11111em"
|
||||
|
||||
"∇" form="prefix" lspace="0em" rspace=".11111em"
|
||||
"∂" form="prefix" lspace="0em" rspace=".11111em"
|
||||
|
||||
"ⅅ" form="prefix" lspace="0em" rspace=".11111em"
|
||||
"ⅆ" form="prefix" lspace="0em" rspace=".11111em"
|
||||
|
||||
"√" form="prefix" stretchy="true" lspace="0em" rspace=".11111em"
|
||||
|
||||
"⇓" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟸" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟺" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟹" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇑" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇕" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↓" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⤓" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇵" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↧" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥡" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇃" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥙" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥑" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥠" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↿" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥘" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟵" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟷" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⟶" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥯" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥝" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇂" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥕" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥏" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥜" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↾" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥔" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↓" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
"↑" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
"↑" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⤒" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⇅" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↕" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"⥮" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
"↥" form="infix" stretchy="true" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"^" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"<>" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"'" form="postfix" lspace=".11111em" rspace="0em"
|
||||
|
||||
"!" form="postfix" lspace=".11111em" rspace="0em"
|
||||
"!!" form="postfix" lspace=".11111em" rspace="0em"
|
||||
|
||||
"~" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"@" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"--" form="postfix" lspace=".11111em" rspace="0em"
|
||||
"--" form="prefix" lspace="0em" rspace=".11111em"
|
||||
"++" form="postfix" lspace=".11111em" rspace="0em"
|
||||
"++" form="prefix" lspace="0em" rspace=".11111em"
|
||||
|
||||
"⁡" form="infix" lspace="0em" rspace="0em"
|
||||
|
||||
"?" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"_" form="infix" lspace=".11111em" rspace=".11111em"
|
||||
|
||||
"˘" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"¸" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"`" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"˙" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"˝" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalLeftArrow;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalLeftRightArrow;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalLeftRightVector;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalLeftVector;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"´" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalRightArrow;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"&DiacriticalRightVector;" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"˜" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"¨" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"̑" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"ˇ" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"^" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"‾" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⏞" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⎴" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⏜" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⃛" form="postfix" accent="true" lspace="0em" rspace="0em"
|
||||
"_" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⏟" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⎵" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
"⏝" form="postfix" accent="true" stretchy="true" lspace="0em" rspace="0em"
|
||||
MathMLOperatorDictionary
|
||||
|
||||
for (0..255) {
|
||||
# $escapes{chr($_)} = sprintf("%%%02X", $_);
|
||||
# $escapes{pack("c",$_)} = sprintf("%%%02X", $_);
|
||||
$escapes{pack("c",$_)} = sprintf("%04X", $_);
|
||||
}
|
||||
|
||||
|
||||
#The bit flags that will be used
|
||||
|
||||
$NS_MATHML_OPERATOR_FORM_INFIX = '1';
|
||||
$NS_MATHML_OPERATOR_FORM_PREFIX = '2';
|
||||
$NS_MATHML_OPERATOR_FORM_POSTFIX = '3';
|
||||
$NS_MATHML_OPERATOR_STRETCHY = '(1<<2)';
|
||||
$NS_MATHML_OPERATOR_FENCE = '(1<<3)';
|
||||
$NS_MATHML_OPERATOR_ACCENT = '(1<<4)';
|
||||
$NS_MATHML_OPERATOR_LARGEOP = '(1<<5)';
|
||||
$NS_MATHML_OPERATOR_SEPARATOR = '(1<<6)';
|
||||
$NS_MATHML_OPERATOR_MOVABLELIMITS = '(1<<7)';
|
||||
|
||||
@ATTRIBUTE = ("form",
|
||||
"stretchy",
|
||||
"fence",
|
||||
"accent",
|
||||
"largeop",
|
||||
"separator",
|
||||
"movablelimits",
|
||||
"lspace",
|
||||
"rpace");
|
||||
|
||||
$NUMFLAGS = 7;
|
||||
|
||||
%FLAGS = ("", '0',
|
||||
"0", '0',
|
||||
"form=infix", $NS_MATHML_OPERATOR_FORM_INFIX,
|
||||
"form=prefix", $NS_MATHML_OPERATOR_FORM_PREFIX,
|
||||
"form=postfix", $NS_MATHML_OPERATOR_FORM_POSTFIX,
|
||||
"stretchy=true", $NS_MATHML_OPERATOR_STRETCHY,
|
||||
"fence=true", $NS_MATHML_OPERATOR_FENCE,
|
||||
"accent=true", $NS_MATHML_OPERATOR_ACCENT,
|
||||
"largeop=true", $NS_MATHML_OPERATOR_LARGEOP,
|
||||
"separator=true", $NS_MATHML_OPERATOR_SEPARATOR,
|
||||
"movablelimits=true", $NS_MATHML_OPERATOR_MOVEABLELIMITS);
|
||||
|
||||
# build the macro lists
|
||||
|
||||
print "\n\nBuilding the operator list...\n";
|
||||
|
||||
$MATHML_OPERATOR_LIST = "";
|
||||
|
||||
$rank = 0;
|
||||
@OPERATOR = split("\n",$DATA);
|
||||
|
||||
$group = 0;
|
||||
for ($count=0; $count<=$#OPERATOR; ++$count) {
|
||||
$data = $OPERATOR[$count];
|
||||
$data =~ s#^\s+##;
|
||||
if ($data eq "") {
|
||||
++$group;
|
||||
next;
|
||||
}
|
||||
|
||||
|
||||
delete @KEY{keys %KEY};
|
||||
delete @VALUES{keys %VALUES};
|
||||
|
||||
# Initialize with default values set by the REC :
|
||||
$VALUE{'fence'} = 'false';
|
||||
$VALUE{'separator'} = 'false';
|
||||
$VALUE{'lspace'} = '.27777em';
|
||||
$VALUE{'rspace'} = '.27777em';
|
||||
$VALUE{'stretchy'} = 'false';
|
||||
# $VALUE{'symmetric'} = 'true';
|
||||
# $VALUE{'maxsize'} = 'infinity';
|
||||
# $VALUE{'minsize'} = '1';
|
||||
$VALUE{'largeop'} = 'false';
|
||||
$VALUE{'movablelimits'} = 'false';
|
||||
$VALUE{'accent'} = 'false';
|
||||
|
||||
($operator,$attributes) = ($1,$2) if $data =~ /(\S+)\s*(.*)\s*$/;
|
||||
while ($attributes =~ /(\S+)=\"([^"]*)\"/g) {
|
||||
($name,$value) = ($1,$2);
|
||||
$VALUE{$name} = $value;
|
||||
$KEY{$name} = $name . '=' . $value;
|
||||
}
|
||||
|
||||
$lspace = $VALUE{"lspace"}; $lspace =~ s/em//;
|
||||
$rspace = $VALUE{"rspace"}; $rspace =~ s/em//;
|
||||
$lspace .= ($lspace =~ m#\.#)? "f" : ".0f";
|
||||
$rspace .= ($rspace =~ m#\.#)? "f" : ".0f";
|
||||
|
||||
# put all the flags together in an OR-list
|
||||
$enclose = 0;
|
||||
$flags = $FLAGS{$KEY{"form"}};
|
||||
for ($i=1; $i<$NUMFLAGS; ++$i) {
|
||||
$key = $KEY{$ATTRIBUTE[$i]};
|
||||
next if !$FLAGS{$key};
|
||||
$flags .= '|' . $FLAGS{$key};
|
||||
++$enclose;
|
||||
}
|
||||
$flags = '(' . $flags . ')' if $enclose;
|
||||
|
||||
$operator =~ s#[\"]##g;
|
||||
$string = $operator;
|
||||
$unichar = "";
|
||||
|
||||
#go over each entity and find its unicode point - collate the results in unichar
|
||||
$unicodemissed = 0;
|
||||
$i = 0;
|
||||
$unistring = '';
|
||||
while ($string ne "" && $i < 5) { # there could be &ent1;&ent2; and Perl is greedy...
|
||||
$entity = ($string =~ m#^\&(.*?)\;#)? $1:""; # so here ue use the non-greedy modifier '?'
|
||||
if ($entity ne "") {
|
||||
$string =~ s#^\&${entity}\;##;
|
||||
$unicode = $UNICODE{$entity};
|
||||
$unicodemissed = 1 if $unicode eq "";
|
||||
$unichar .= '\x' . $unicode;
|
||||
$unistring = ($unistring)? "$unistring _ 0x$unicode" : "0x$unicode";
|
||||
|
||||
$PUA{$unicode} = $entity if ($unicode ge "E000" && $unicode le "F8FF");
|
||||
}
|
||||
else {
|
||||
$entity = $1 if $string =~ m#^(.)#;
|
||||
$string =~ s#\S##;
|
||||
$entity =~ s/([\x00-\xFF])/$escapes{$1}/g;
|
||||
$unichar .= '\x' . $entity;
|
||||
$unistring = ($unistring)? "$unistring _ 0x$entity" : "0x$entity";
|
||||
}
|
||||
|
||||
++$i;
|
||||
}
|
||||
|
||||
#some operators do not have unicode points, skip them !
|
||||
if ($unicodemissed) {
|
||||
print "Missing unicode for $operator... removing it from the dictionary...\n";
|
||||
next;
|
||||
}
|
||||
|
||||
#global outputs:
|
||||
|
||||
$r = sprintf("%3d", $rank);
|
||||
$MATHML_OPERATOR_LIST .= 'MATHML_OPERATOR('
|
||||
. $r . ','
|
||||
. $unistring . ','
|
||||
# . '"' . $unichar . '",'
|
||||
. "$flags,$lspace,$rspace" . ') // '
|
||||
. "$operator $VALUE{'form'}\n";
|
||||
|
||||
++$rank;
|
||||
}
|
||||
|
||||
# $puacount = 0;
|
||||
# foreach $pua (keys %PUA) {
|
||||
# ++$puacount;
|
||||
# print "$puacount $pua $PUA{$pua}\n";
|
||||
# }
|
||||
}
|
||||
Reference in New Issue
Block a user