mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 708072 - Add test page for stretchy and large operators, r=karlt
This commit is contained in:
parent
b207298cb5
commit
9db5265c42
117
layout/mathml/tests/stretchy-and-large-operators.html
Normal file
117
layout/mathml/tests/stretchy-and-large-operators.html
Normal file
@ -0,0 +1,117 @@
|
||||
<!-- -*- mode: HTML; tab-width: 2; indent-tabs-mode: nil; -*- -->
|
||||
<!-- vim: set tabstop=2 expandtab shiftwidth=2 textwidth=80: -->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test Stretchy and Large Operators</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<!-- ***** BEGIN LICENSE BLOCK *****
|
||||
- Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
-
|
||||
- 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
|
||||
- Frédéric Wang.
|
||||
- Portions created by the Initial Developer are Copyright (C) 2011
|
||||
- the Initial Developer. All Rights Reserved.
|
||||
-
|
||||
- Contributor(s):
|
||||
-
|
||||
- Alternatively, the contents of this file may be used under the terms of
|
||||
- either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
- the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
- in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
- of those above. If you wish to allow use of your version of this file only
|
||||
- under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
- use your version of this file under the terms of the MPL, indicate your
|
||||
- decision by deleting the provisions above and replace them with the notice
|
||||
- and other provisions required by the LGPL or the GPL. If you do not delete
|
||||
- the provisions above, a recipient may use your version of this file under
|
||||
- the terms of any one of the MPL, the GPL or the LGPL.
|
||||
-
|
||||
- ***** END LICENSE BLOCK ***** -->
|
||||
<script type="text/javascript"
|
||||
src="stretchy-and-large-operators.js"></script>
|
||||
<script type="text/javascript">
|
||||
function createMo(aOperator, aForm)
|
||||
{
|
||||
var mo = document.createElement("mo");
|
||||
mo.appendChild(document.createTextNode(aOperator));
|
||||
mo.setAttribute("form", aForm);
|
||||
return mo;
|
||||
}
|
||||
|
||||
function createTest(aEntry)
|
||||
{
|
||||
var opname = aEntry[0];
|
||||
var operator = aEntry[1];
|
||||
var type = aEntry[2];
|
||||
var form = aEntry[3];
|
||||
|
||||
var div = document.createElement("div");
|
||||
div.appendChild(document.createTextNode(opname));
|
||||
|
||||
var math = document.createElement("math");
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case "l": // largeop
|
||||
math.appendChild(createMo(operator, form));
|
||||
var mstyle = document.createElement("mstyle");
|
||||
mstyle.setAttribute("displaystyle", "true");
|
||||
mstyle.appendChild(createMo(operator, form));
|
||||
math.appendChild(mstyle);
|
||||
break;
|
||||
|
||||
case "v": // vertical
|
||||
for (var i = 1; i < 10; i+=2) {
|
||||
var mo = createMo(operator, form);
|
||||
mo.setAttribute("minsize", (.5 * i) + "em");
|
||||
math.appendChild(mo);
|
||||
}
|
||||
break;
|
||||
|
||||
case "h": // horizontal
|
||||
for (var i = 1; i < 10; i+=2) {
|
||||
var mo = createMo(operator, form);
|
||||
var mspace = document.createElement("mspace");
|
||||
mspace.setAttribute("width", (.5 * i) + "em");
|
||||
var mover = document.createElement("mover");
|
||||
mover.setAttribute("accent", "false");
|
||||
mover.appendChild(mspace);
|
||||
mover.appendChild(mo);
|
||||
math.appendChild(mover);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
div.appendChild(math);
|
||||
document.body.appendChild(div);
|
||||
}
|
||||
|
||||
function init()
|
||||
{
|
||||
for (var i in stretchy_and_large_operators) {
|
||||
createTest(stretchy_and_large_operators[i]);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body onload="init()">
|
||||
|
||||
</body>
|
||||
</html>
|
2
layout/mathml/tests/stretchy-and-large-operators.js
Normal file
2
layout/mathml/tests/stretchy-and-large-operators.js
Normal file
File diff suppressed because one or more lines are too long
38
layout/mathml/updateOperatorDictionary.pl
Normal file → Executable file
38
layout/mathml/updateOperatorDictionary.pl
Normal file → Executable file
@ -43,6 +43,7 @@ use XML::DOM;
|
||||
$FILE_DIFFERENCES = "differences.txt";
|
||||
$FILE_NEW_DICTIONARY = "new_dictionary.txt";
|
||||
$FILE_SYNTAX_ERRORS = "syntax_errors.txt";
|
||||
$FILE_JS = "tests/stretchy-and-large-operators.js";
|
||||
|
||||
# our dictionary (property file)
|
||||
$MOZ_DICTIONARY = "mathfont.properties";
|
||||
@ -55,7 +56,8 @@ $WG_DICTIONARY = "dictionary.xml";
|
||||
|
||||
if (!($#ARGV >= 0 &&
|
||||
((($ARGV[0] eq "compare") && $#ARGV <= 1) ||
|
||||
(($ARGV[0] eq "check") && $#ARGV <= 0)))) {
|
||||
(($ARGV[0] eq "check") && $#ARGV <= 0) ||
|
||||
(($ARGV[0] eq "make-js") && $#ARGV <= 0)))) {
|
||||
&usage;
|
||||
}
|
||||
|
||||
@ -126,9 +128,38 @@ while (<$file>) {
|
||||
close($file);
|
||||
|
||||
################################################################################
|
||||
# 2) If mode "check", verify validity of our operator dictionary and quit.
|
||||
# 2) If mode "make-js", generate tests/stretchy-and-large-operators.js and quit.
|
||||
# If mode "check", verify validity of our operator dictionary and quit.
|
||||
# If mode "compare", go to step 3)
|
||||
|
||||
if ($ARGV[0] eq "make-js") {
|
||||
print "generating file $FILE_JS...\n";
|
||||
open($file_js, ">$FILE_JS") ||
|
||||
die ("Couldn't open $FILE_JS!");
|
||||
print $file_js "// This file is automatically generated. Do not edit.\n";
|
||||
print $file_js "var stretchy_and_large_operators = [";
|
||||
@moz_keys = (keys %moz_hash);
|
||||
while ($key = pop(@moz_keys)) {
|
||||
@moz = @{ $moz_hash{$key} };
|
||||
|
||||
$_ = $key;
|
||||
(m/^operator\.([\w|\.|\\]*)\.(prefix|infix|postfix)$/);
|
||||
$opname = "\\$1.$2: ";
|
||||
|
||||
if (@moz[4]) {
|
||||
print $file_js "['$opname', '$1','l','$2'],";
|
||||
}
|
||||
|
||||
if (@moz[6]) {
|
||||
$_ = substr(@moz[13], 0, 1);
|
||||
print $file_js "['$opname', '$1','$_','$2'],";
|
||||
}
|
||||
}
|
||||
print $file_js "];\n";
|
||||
close($file_js);
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ($ARGV[0] eq "check") {
|
||||
print "checking operator dictionary...\n";
|
||||
open($file_syntax_errors, ">$FILE_SYNTAX_ERRORS") ||
|
||||
@ -154,7 +185,7 @@ if ($ARGV[0] eq "check") {
|
||||
if (!@moz[4] && @moz[14]) {
|
||||
$valid = 0;
|
||||
$nb_warnings++;
|
||||
print $file_syntax_errors "warning: operator is integral but not lareop\n";
|
||||
print $file_syntax_errors "warning: operator is integral but not largeop\n";
|
||||
}
|
||||
|
||||
$_ = @moz[0];
|
||||
@ -415,6 +446,7 @@ sub usage {
|
||||
print "usage:\n";
|
||||
print " ./updateOperatorDictionary.pl compare [dictionary]\n";
|
||||
print " ./updateOperatorDictionary.pl check\n";
|
||||
print " ./updateOperatorDictionary.pl make-js\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user