[system] / branches / rel-2-4-dev / pg Repository: Repository Listing bbplugincoursesdistsnplrochestersystemwww

# Log of /branches/rel-2-4-dev/pg

 Sticky Revision:

Revision 5320 - Directory Listing
Modified Mon Aug 13 23:04:20 2007 UTC (5 years, 9 months ago) by sh002i
updated version numbers

Revision 5311 - Directory Listing
Modified Fri Aug 10 19:54:23 2007 UTC (5 years, 9 months ago) by sh002i
Fix PG_restricted_eval so that no lexicals are used in the scope of the eval()

Revision 5309 - Directory Listing
Modified Fri Aug 10 18:34:50 2007 UTC (5 years, 9 months ago) by sh002i
PGanswermacros.pl, and PGauxiliaryFunctions.pl. It also includes POD
docs!

Revision 5270 - Directory Listing
Modified Thu Aug 9 23:25:31 2007 UTC (5 years, 9 months ago) by sh002i
when using loadMacros, add a newline before the file's contents in the
eval() statemet. this allows a POD directive on the first line of the
included file.

Revision 5268 - Directory Listing
Modified Thu Aug 9 23:10:35 2007 UTC (5 years, 9 months ago) by sh002i
backport: bring rel-2-4-dev in sync with HEAD

Revision 5260 - Directory Listing
Modified Thu Aug 9 17:35:39 2007 UTC (5 years, 9 months ago) by sh002i
backport (gage): This is an experimental version of PGcomplexmacros2Exp.pl

Revision 5250 - Directory Listing
Modified Thu Aug 9 02:36:56 2007 UTC (5 years, 9 months ago) by sh002i
updated for 2.4.x

Revision 5243 - Directory Listing
Modified Tue Aug 7 22:35:14 2007 UTC (5 years, 9 months ago) by
Copied from: trunk/pg revision 4974
This commit was manufactured by cvs2svn to create branch 'rel-2-4-dev'.

Revision 4974 - Directory Listing
Modified Wed Jun 6 17:58:03 2007 UTC (5 years, 11 months ago) by gage
Original Path: trunk/pg
This is an experimental version of PGcomplexmacros2Exp.pl

Revision 4969 - Directory Listing
Modified Thu May 24 17:55:37 2007 UTC (5 years, 11 months ago) by gage
Original Path: trunk/pg

Revision 4968 - Directory Listing
Modified Thu May 24 12:44:58 2007 UTC (5 years, 11 months ago) by gage
Original Path: trunk/pg

Revision 4967 - Directory Listing
Modified Thu May 24 12:05:30 2007 UTC (5 years, 11 months ago) by gage
Original Path: trunk/pg

Revision 4966 - Directory Listing
Modified Wed May 23 17:30:35 2007 UTC (5 years, 11 months ago) by gage
Original Path: trunk/pg
Added Davide Cervone's methods for evaluating formulas module 2pi

Used in complex variables in particular.

Revision 4964 - Directory Listing
Modified Tue May 22 18:02:40 2007 UTC (5 years, 11 months ago) by dpvc
Original Path: trunk/pg
Fixed an error with List answer checking when one of the elements was
the constant 0 (a check for whether a value was defined was not
properly handling the case when the answer is zero (which counts as
false in a boolean check)).

Revision 4963 - Directory Listing
Modified Tue May 22 17:46:52 2007 UTC (5 years, 11 months ago) by dpvc
Original Path: trunk/pg
When complex=>'ok' is used, make a COPY of the Complex context before
modifying it.  (Otherwise we modify the ORIGINAL copy, and that is
persistent from problem to problem within one httpd child, which would
mean one problem could affect later ones.)

Revision 4962 - Directory Listing
Modified Wed May 16 00:36:37 2007 UTC (6 years ago) by dpvc
Original Path: trunk/pg
Allow Real object to override the context's number format by setting
its format field.  E.g.:

Real(1.2345)->with(format=>"%.2f")

Revision 4961 - Directory Listing
Modified Tue May 15 17:48:28 2007 UTC (6 years ago) by gage
Original Path: trunk/pg
Update pod.

Revision 4930 - Directory Listing
Modified Wed Apr 18 22:37:59 2007 UTC (6 years, 1 month ago) by dpvc
Original Path: trunk/pg
Clear the error message in Context before it is used in an answer

Revision 4928 - Directory Listing
Modified Tue Apr 17 00:36:16 2007 UTC (6 years, 1 month ago) by dpvc
Original Path: trunk/pg
checkers get copies of their contexts.  They now use a new method
getCopy to obtain the copy either from the problem's context table or
the default table (rather than only from the default).  That way the
instructor can use parserCustomization.pl to customize the contexts

Revision 4927 - Directory Listing
Modified Tue Apr 17 00:31:13 2007 UTC (6 years, 1 month ago) by dpvc
Original Path: trunk/pg
Added a Vector2D context that has i and j defined as vectors in
2-space so that they can be used to generate vectors in 2D.  This
avoids students getting the "incorrect number of coordinates" error.

Revision 4887 - Directory Listing
Modified Thu Mar 15 22:08:55 2007 UTC (6 years, 2 months ago) by glarose
Original Path: trunk/pg
Update quiz prefix for arrays.  This is not a complete fix, but it
gets incrementally closer to a fix.

Revision 4878 - Directory Listing
Modified Wed Mar 14 00:37:40 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Corrected typo

Revision 4877 - Directory Listing
Modified Wed Mar 14 00:35:38 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg

Revision 4867 - Directory Listing
Modified Sun Mar 11 16:11:20 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
This file loads Parser.pl.   It is part of a campaign to replace the term "parser object"
with MathObject  which should sound more intuitive for those who are unaware of the development
history of the PG language.

Revision 4866 - Directory Listing
Modified Sun Mar 11 11:40:46 2007 UTC (6 years, 2 months ago) by dpvc
Original Path: trunk/pg
Fixed a deprecated usage of defined(@result)

Revision 4856 - Directory Listing
Modified Wed Mar 7 18:34:55 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg

Revision 4845 - Directory Listing
Modified Tue Mar 6 01:52:26 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg

Revision 4844 - Directory Listing
Modified Tue Mar 6 01:51:12 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Format fix

Revision 4834 - Directory Listing
Modified Sun Mar 4 23:39:20 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Formatting changes in documentation

Revision 4833 - Directory Listing
Modified Sun Mar 4 23:26:12 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
More format changes to documentation

Revision 4832 - Directory Listing
Modified Sun Mar 4 22:50:35 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
More formatting changes.

Revision 4831 - Directory Listing
Modified Sun Mar 4 22:46:01 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Documentation formatting changes

Revision 4829 - Directory Listing
Modified Sun Mar 4 22:10:40 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Updated documentation in response to comments from Davide.

--Mike

Revision 4828 - Directory Listing
Modified Sun Mar 4 21:06:17 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Use this macro package to define macros for
examining the current environment.  Useful for
creating problems and for debugging.

Revision 4827 - Directory Listing
Modified Sun Mar 4 20:58:26 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Added pod documentation for these files

Revision 4826 - Directory Listing
Modified Sun Mar 4 20:57:00 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Correct pretty_print so that it protects for HTML output
(replaces < by &lt;)

Revision 4825 - Directory Listing
Modified Sun Mar 4 20:44:37 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Correct pretty_print
so that it protects < for printing in HTML.
Replace occurences of < with &lt; in the data
This was done with straight substitution -- perhaps a protectHTML macro should have been used?

Revision 4824 - Directory Listing
Modified Sat Mar 3 00:31:14 2007 UTC (6 years, 2 months ago) by dpvc
Original Path: trunk/pg
Only show the adaptive parameters where there actually ARE some, and
fix a typo when looking up the adaptive points when there aren't any.

Revision 4823 - Directory Listing
Modified Sat Mar 3 00:17:12 2007 UTC (6 years, 2 months ago) by dpvc
Original Path: trunk/pg
Improved Formula diagonstics when adaptive parameters are used.  They
now allow you to graph the functions (they are no longer considered
multi-variable functions), and the values reported are the adapted
reflects the tests that are being performed.

Revision 4822 - Directory Listing
Modified Sat Mar 3 00:11:28 2007 UTC (6 years, 2 months ago) by dpvc
Original Path: trunk/pg

Revision 4808 - Directory Listing
Modified Thu Mar 1 23:35:18 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg

Revision 4806 - Directory Listing
Modified Thu Mar 1 22:43:38 2007 UTC (6 years, 2 months ago) by gage
Original Path: trunk/pg
Minor documentation changes.
Use html entity to represent dollar sign on the web.

Revision 4795 - Directory Listing
Modified Sun Feb 25 20:59:09 2007 UTC (6 years, 2 months ago) by dpvc
Original Path: trunk/pg
Avoid an infinite loop when string-values formulas are used in a List.
Allow diagonstics to work for complex-valued functions.

Revision 4773 - Directory Listing
Modified Sun Feb 11 04:44:27 2007 UTC (6 years, 3 months ago) by dpvc
Original Path: trunk/pg
active).  You specify an uncheckable buttons by including the
uncheckable=>1 or uncheckable=>"shift" options to the RadioButtons()
call.

Revision 4772 - Directory Listing
Modified Sat Feb 10 00:09:52 2007 UTC (6 years, 3 months ago) by dpvc
Original Path: trunk/pg
New macros for using Radio buttons with the new Parser

Revision 4771 - Directory Listing
Modified Sat Feb 10 00:07:50 2007 UTC (6 years, 3 months ago) by dpvc
Original Path: trunk/pg
Fixed an error with the custom list checker setting the wrong field
for the checker (OOPS!)

Revision 4767 - Directory Listing
Modified Sat Feb 3 15:32:06 2007 UTC (6 years, 3 months ago) by gage
Original Path: trunk/pg
Changed input to rungeKutta4 so that it matches the pod description --
i.e. it takes as its first argument a reference to a
subroutine defining a vectorField
as opposed to an answer hash.

Revision 4766 - Directory Listing
Modified Sat Feb 3 15:25:18 2007 UTC (6 years, 3 months ago) by gage
Original Path: trunk/pg
that can be written to.

Revision 4765 - Directory Listing
Modified Sat Feb 3 15:23:05 2007 UTC (6 years, 3 months ago) by gage
Original Path: trunk/pg
Begin pod documentation.

Revision 4764 - Directory Listing
Modified Sat Feb 3 15:20:25 2007 UTC (6 years, 3 months ago) by gage
Original Path: trunk/pg
added a "level" to pretty_print to prevent it from descending too far down
nested hashes.  The default level is set at 3 which is probably enough for
most purposes.

Revision 4762 - Directory Listing
Modified Thu Feb 1 04:37:11 2007 UTC (6 years, 3 months ago) by gage
Original Path: trunk/pg
Removed scommented out code and
spiffed up the documentation.

--------------------------------------------------------------------

Revision 4761 - Directory Listing
Modified Wed Jan 31 16:17:48 2007 UTC (6 years, 3 months ago) by gage
Original Path: trunk/pg
Added code to multi_cmp which makes it easier to  debug.

We will probably want to get rid of this entirely in favor of List answers, but meantime
I'm documenting the problems.

Revision 4760 - Directory Listing
Modified Wed Jan 31 16:16:44 2007 UTC (6 years, 3 months ago) by gage
Original Path: trunk/pg
Added space when combining preview latex strings    (foo  + bar   became   foo\quadbar  which didn't work
now its foo \quad bar which is better.

Revision 4729 - Directory Listing
Modified Sat Dec 16 14:10:12 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Add a new operator // to be the same as / except its TeX form is a/b
rather than \frac{a}{b}.  This makes it possible get horizontal
fractions in exponents, for example, where vertical fractions often
don't look so good.

Revision 4728 - Directory Listing
Modified Sat Dec 16 14:07:58 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Use Perl reals rather than Parser Reals in matrix for adaptive
parameters.

Revision 4727 - Directory Listing
Modified Sat Dec 16 14:07:22 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Fixed type in comment.

Revision 4701 - Directory Listing
Modified Tue Dec 5 23:23:07 2006 UTC (6 years, 5 months ago) by sh002i
Original Path: trunk/pg
changes for DelayedMailer

Revision 4680 - Directory Listing
Modified Tue Nov 28 19:12:12 2006 UTC (6 years, 5 months ago) by sh002i
Original Path: trunk/pg
SECURITY: tighter constraints on which macro files can be loaded without
restriction. Previously, any file that *contained* the strings PG.pl,

This is the second attempt to close this hole. The previous attempt
assumed that | binds tighter than ^ and $, which is not true. (Noticed by dpvc). It also failed to escape metacharacters in the file names. Revision 4679 - Directory Listing Modified Mon Nov 27 22:11:54 2006 UTC (6 years, 5 months ago) by sh002i Original Path: trunk/pg added mail_answers_to3, which currently does not work, to eventually replace mail_answers_to2, which also does not work. I thought now would be a good time to commit this, so that others can look at it if they like. The problem is that when RestrictedMailer is used within a PG safe compartment, it hangs on opening the SMTP connection and the problem times out after 60 seconds. This mockup I made works perfectly however, and I can't see how the PG safe compartment is different. Here it is: my$mailer = new WeBWorK::Utils::RestrictedMailer(
params => {
from => 'sh002i@math.rochester.edu',
smtp => 'mail.math.rochester.edu',
debug => "debug.txt",
keepconnection => 1,
subject => "generic subject",
on_errors => 'die',
},
lock_by_default => 1,
allow_change => [qw/fake_from to fake_to cc fake_cc bcc/],
allowed_recipients => [qw/sh002i@math.rochester.edu sam@uofr.net/],
fatal_errors => 1,
);
my $rmailer = new WeBWorK::Utils::RestrictedClosureClass($mailer,
qw/Open SendEnc Close Cancel skipped_recipients error error_msg/);
my $safe = new Safe;${$safe->varglob('the_date')} = date; my$hole = new Safe::Hole {};
my $rmailer_wrapped =$hole->wrap($rmailer);${$safe->varglob('TEST')}{rmailer} =$rmailer_wrapped;
my $result =$safe->reval(<<'EOF');
my $rmailer =$TEST{rmailer};
my $open_result =$rmailer->Open({
to => 'sam@uofr.net',
#subject => "this is only a test",
});
print "open_result=$open_result\n"; my$sendenc_result = $rmailer->SendEnc("Hello world, the time is " .$the_date);
print "sendenc_result=$sendenc_result\n";$rmailer->Close;
EOF
die "reval threw an exception: $@" if$@;

Revision 4678 - Directory Listing
Modified Mon Nov 27 18:57:41 2006 UTC (6 years, 5 months ago) by sh002i
Original Path: trunk/pg
formatting, ordering

Revision 4673 - Directory Listing
Modified Mon Nov 27 04:21:59 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Moved the guts of this to pg/lib/Parser/Legacy/NumberWithUnits.pl,
since most of the code is common.  This is a shell that now only
defines the FormulaWithUnits() function.

Revision 4672 - Directory Listing
Modified Mon Nov 27 04:20:40 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Abstracted the NumberWithUnits to a more general ObjectWithUnits and
moved the FormulaWithUnits to this file as well, since most of the
code is common.  Although, strictly speaking, FormulaWithUnits is not
legacy code, since the general object-with-units is here, it will be
easier to maintain FormulaWithUnits here as well.  When the Parser
gets a real units class, all of this can be removed.

Also fixed the unit lookup code to use the actual names from the Units
library, so we can now be more accurate about determining the extent
of the units, and can handle things like '5 kg m / s' now.  In the
case of ambiguous formulas with units, e.g., '5m kg' where m is a
variable, use '5*m kg' or '(5m) kg'.

Revision 4671 - Directory Listing
Modified Mon Nov 27 02:01:24 2006 UTC (6 years, 5 months ago) by gage
Original Path: trunk/pg
Make
Units::fundamental_units  and

Units::known_units  public hashes.

Revision 4670 - Directory Listing
Modified Mon Nov 27 00:08:31 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Fixed usage comments to do formulas rather than just numbers.

Revision 4669 - Directory Listing
Modified Mon Nov 27 00:00:46 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
The Units.pm library only accepts one division within the units, and
the Parser wasn't taking that into account, so students could enter
m/s/s and still get credit even if the units were m/s.  This have been
fixed.

Revision 4668 - Directory Listing
Modified Sun Nov 26 23:59:22 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Provides a formula with units (as opposed to a number with units).
This does introduce some ambiguity issues, since variable names could
look like units in some cases.  E.g., s + 5 m/s could look like
(s + 5*m/s) rather than (s + 5) meters/second.

The parser will take the largest string at the end of the answer that
could be treated as units so s + 5m/s is (s+5) meters/second.

The Units.pm library requries units to be separated by * or / and
only one / is allowed, so s + 5m s is (s+5m) seconds not (s+5) m*s.

Something like 5 m/s/s will generate an error (it shouold be written
m/s*s or m/s^2), and 5 kg m/s should be written 5 kg*m/s.

[If we made the hash of known units be public rather than private in
Units, we could do a better job of this, and could treat kg m/s as
kg*m/s for example.]

Revision 4667 - Directory Listing
Modified Sun Nov 26 21:58:43 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Fixed a problem where the TeX version included two copies of the units
(one in TeX mode and one from the string() output).

Revision 4666 - Directory Listing
Modified Sun Nov 26 21:57:39 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Updated NumberWithUnits to use Parser::LEgacy::NumberWithUnits rather
than having a separate implementation here.  This will guarantee that
it is consistent with num_cmp() and prevents unneeded duplication of
code.

Revision 4665 - Directory Listing
Modified Sun Nov 26 21:28:40 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Didn't need to override the perl fields for the integer-only methods,
since all the checking is done in the parser.

Revision 4664 - Directory Listing
Modified Sun Nov 26 21:15:24 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
This file implements special power operators that check for special
conditions (like no powers of 'e', or only integer powers).  See the
contents of the file for documentation.

Revision 4663 - Directory Listing
Modified Sun Nov 26 20:30:17 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
test points can be generated for a function comparison.  By default,
this information is NOT shown (since it could give students additional
by setting the 'showTestPointErrors' flag in the Context().

Revision 4662 - Directory Listing
Modified Sun Nov 26 20:11:03 2006 UTC (6 years, 5 months ago) by dpvc
Original Path: trunk/pg
Allow overridden Parser classes to generate error messages that the
student will see.  (For formulas, error messages are trapped silently
by the overridden == and will not be seen.  This lets Parser objects
force a message to be seen.)

Revision 4654 - Directory Listing
Modified Wed Nov 15 16:50:05 2006 UTC (6 years, 6 months ago) by sh002i
Original Path: trunk/pg
SECURITY: tighter constraints on which macro files can be loaded without
restriction. Previously, any file that *contained* the strings PG.pl,

Revision 4626 - Directory Listing
Modified Fri Nov 3 23:35:31 2006 UTC (6 years, 6 months ago) by dpvc
Original Path: trunk/pg

Note:  if you use blank answers, the "n of the questions remain
unanswered" message will tell you how many of the answers should be
left blank.  It is probably worth working out a method of having blank
entries that are only marked correct when all the other answers are
correct (this would take a special grader; I have this as part of the
weighted grader, but it is not common knowledge).

Revision 4625 - Directory Listing
Modified Fri Nov 3 23:05:37 2006 UTC (6 years, 6 months ago) by dpvc
Original Path: trunk/pg
Fixed problem with checking Matrices of dimension 1 x n.
(Fixes bug 1122.)

Revision 4583 - Directory Listing
Modified Mon Oct 23 11:43:40 2006 UTC (6 years, 6 months ago) by dpvc
Original Path: trunk/pg
Make sure \cdot is only used for a numeric right-hand part (finishes
fix of bug 1114).

Revision 4582 - Directory Listing
Modified Mon Oct 23 11:38:14 2006 UTC (6 years, 6 months ago) by dpvc
Original Path: trunk/pg
Use \cdot when a number is followed by a numeric fraction.
(Fixes bug 1114.)

Revision 4571 - Directory Listing
Modified Fri Oct 13 21:43:47 2006 UTC (6 years, 7 months ago) by dpvc
Original Path: trunk/pg
Fixed problem with function checking when vars are specified with
limits and the vars are not in alphabetical order. (The Parser expects
the limits and test points to have coordinates specified in
alphabetical order, so they need to be reordered if the author has
them in another order.)

Revision 4562 - Directory Listing
Modified Tue Oct 10 15:45:11 2006 UTC (6 years, 7 months ago) by jj
Original Path: trunk/pg
Catch errors which get thrown by other filters.

Revision 4546 - Directory Listing
Modified Thu Oct 5 11:10:06 2006 UTC (6 years, 7 months ago) by dpvc
Original Path: trunk/pg
Fixed bad check for if the complex number is 1 (caused reduce to
incorrectly remove the complex number when used in multiplication).

Revision 4528 - Directory Listing
Modified Wed Sep 27 17:15:18 2006 UTC (6 years, 7 months ago) by dpvc
Original Path: trunk/pg
Fixed problem where a zero with units would me marked as "not looking
like anumber with units".

Revision 4513 - Directory Listing
Modified Fri Sep 22 16:36:57 2006 UTC (6 years, 7 months ago) by dpvc
Original Path: trunk/pg
Make ijk mode use the TeX definitions from the i, j and k constants as
defined in the context, if they exist, otherwise fall back on the
defaults.

Revision 4512 - Directory Listing
Modified Thu Sep 21 22:08:49 2006 UTC (6 years, 7 months ago) by dpvc
Original Path: trunk/pg
Fix problem with formula comparisons involving vector-valued formulas.
The coordinates for the vectors used in checking equality were plain
Perl reals rather than Parser-based reals, and so the comparisons were
being done using exact rather than fuzzy comparisons.

Revision 4511 - Directory Listing
Modified Wed Sep 20 23:38:38 2006 UTC (6 years, 7 months ago) by dpvc
Original Path: trunk/pg
Make a more sophisticated unit check so that it will handle things
like "3ft / s" (that don't have a space before the units).

Really need to make a units class for the Parser.

Revision 4510 - Directory Listing
Modified Wed Sep 20 21:50:56 2006 UTC (6 years, 7 months ago) by dpvc
Original Path: trunk/pg
Fixed unit checking so that units can include spaces (like 4 ft /
min).  Also fixed a problem where units were not being reported as
part of the student's entered answer.

Revision 4488 - Directory Listing
Modified Mon Sep 11 22:23:45 2006 UTC (6 years, 8 months ago) by dpvc
Original Path: trunk/pg
Allow matrices to set their own templates (instead of using "c" for
all columns), and handle missing open and close delimiters better.

Revision 4487 - Directory Listing
Modified Mon Sep 11 22:21:49 2006 UTC (6 years, 8 months ago) by dpvc
Original Path: trunk/pg
Allow the _check subroutine to affect the {isConstant} field.

Revision 4464 - Directory Listing
Modified Sat Sep 9 00:22:13 2006 UTC (6 years, 8 months ago) by dpvc
Original Path: trunk/pg
Add parenthesis around ijk vectors for string concatenation.

Revision 4454 - Directory Listing
Modified Thu Sep 7 01:18:08 2006 UTC (6 years, 8 months ago) by dpvc
Original Path: trunk/pg
Added ability to overrid TeX and perl versions by specifying a TeX or
perl field in the variable definition.  Also made vector-valued
variables show up in bold.

Revision 4424 - Directory Listing
Modified Tue Aug 29 11:14:28 2006 UTC (6 years, 8 months ago) by dpvc
Original Path: trunk/pg
Check routine can now return an array rather than an array reference.
(This requires pg/lib/Value/AnswerCheckers.pm to be at least version 1.80).

Revision 4423 - Directory Listing
Modified Tue Aug 29 11:12:56 2006 UTC (6 years, 8 months ago) by dpvc
Original Path: trunk/pg
Allow cmp_compare to return an array of answers, if requested (needed
by parserMultiPart.pl).

Revision 4388 - Directory Listing
Modified Sat Aug 19 23:31:38 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed the problem I pointed out at MathFest where some errors were not
being reported in the traditional num_cmp() function.  (Things like
'x+3' in a numeric field would not be reported as an error and x would
be treated as 0).  This is due to a change in version 1.14 when Sam
was normalizing the error reporting code; he didn't notice that warn

Revision 4386 - Directory Listing
Modified Thu Aug 17 23:55:17 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg

Revision 4385 - Directory Listing
Modified Wed Aug 16 01:42:46 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Report the objec type better in parser error messages.

Revision 4384 - Directory Listing
Modified Wed Aug 16 01:41:02 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed spelling errors in error messages.

Revision 4383 - Directory Listing
Modified Wed Aug 16 01:40:06 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed a problem where Set objects could incorrectly complain about the
parentheses (braces) used to declare the set.

Revision 4382 - Directory Listing
Modified Wed Aug 16 01:37:28 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed a bug where substituting values into a Formula object would not
be cleaned up properly (so later actions could incorrectly include the
same substitution).

Revision 4379 - Directory Listing
Modified Mon Aug 14 18:24:44 2006 UTC (6 years, 9 months ago) by sh002i
Original Path: trunk/pg
allow partial URLs in appletPath -- these get the server_root_url
prepended to them.

Revision 4363 - Directory Listing
Modified Wed Aug 9 14:32:14 2006 UTC (6 years, 9 months ago) by sh002i
Original Path: trunk/pg
append "1;" to these files, to satisfy Apache2.

Revision 4318 - Directory Listing
Modified Sat Jul 29 16:19:18 2006 UTC (6 years, 9 months ago) by gage
Original Path: trunk/pg
Added rungeKutta4  method to PGnumericalmacros.pl   Updated documentation on rungeKutta4a, an answer filter in PGdiffeqmacros.pl

Revision 4301 - Directory Listing
Modified Wed Jul 26 13:23:09 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Allow matrices to be created from lists of vectors or points, or from
formulas returning vectors or points.

Revision 4300 - Directory Listing
Modified Wed Jul 26 13:18:25 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed a problem with derivatives of constant-valued Matrices (and
vectors and points).  They were incorrectly getting an extra level of
nesting.

Revision 4299 - Directory Listing
Modified Wed Jul 26 12:27:07 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Extended the differentiation operator to handle multiple derivatives:

$f->D("x","y") is the same as$f->D("x")->D("y")
$f->D(2) is the same as$f->D->D
$f->D(2,"x") is the same as$f->D("x")->D("x")

and so on.

Revision 4298 - Directory Listing
Modified Wed Jul 26 02:54:01 2006 UTC (6 years, 9 months ago) by dpvc
Original Path: trunk/pg
Extended this context to handle multivariable polynomials.  So you can
use things like

Context("LimitedPolynomial")->variables->are(x => 'Real', y => 'Real');
Context()->flags->set(singlePowers=>1);
$f = Formula("1 + x + y + 2xy + x^2 + y^2"); Revision 4275 - Directory Listing Modified Mon Jul 17 21:12:44 2006 UTC (6 years, 10 months ago) by dpvc Original Path: trunk/pg Make FUNCTION_CMP retain the professor's answer exactly as typed rather than use the parsed version's reconstructed string. Revision 4181 - Directory Listing Modified Wed Jun 28 19:15:03 2006 UTC (6 years, 10 months ago) by jj Original Path: trunk/pg Fixed bug which caused warnings in problems containing hints and/or solutions containing math (i.e., requiring images). Revision 4144 - Directory Listing Modified Fri Jun 23 22:07:44 2006 UTC (6 years, 10 months ago) by dpvc Original Path: trunk/pg Use tolerance flags from the Real object itself, if available, before looking at the context. Revision 4143 - Directory Listing Modified Fri Jun 23 22:06:47 2006 UTC (6 years, 10 months ago) by dpvc Original Path: trunk/pg Fix some problems with the Diagonstics output for Formula objects. (The tolerances using in the diagnostics didn't always match the ones used in the actual testing, and the wrong values were sometimes displayed when a multi-variable function was displayed as a graph.) Revision 4134 - Directory Listing Modified Mon Jun 19 15:13:33 2006 UTC (6 years, 11 months ago) by dpvc Original Path: trunk/pg Fixed grade_problem so taht is uses the safe compartment. (This is important because the problem can supply its own grader, and that code shoudl be run in the safe compartment, just like the answer checkers are. Without this, graders could call PG_restricted_eval() and actually get access to the full WW environment rather than the safe compartment.) Revision 4124 - Directory Listing Modified Wed Jun 7 23:01:44 2006 UTC (6 years, 11 months ago) by gage Original Path: trunk/pg Make sure that WeBWorK::Constants has been loaded before this file is evaluated. Revision 4121 - Directory Listing Modified Mon Jun 5 20:43:22 2006 UTC (6 years, 11 months ago) by dpvc Original Path: trunk/pg Fixed a problem where things like x+4x would be accepted even in single-power mode (the initial x was not being identified as a single power of x correctly). Revision 4098 - Directory Listing Modified Tue May 23 20:45:02 2006 UTC (6 years, 11 months ago) by gage Original Path: trunk/pg Added support for searching for appletin anumber of places defined in$pg{directories}{appletPath}  in global.conf

Revision 4093 - Directory Listing
Modified Tue May 23 11:51:55 2006 UTC (6 years, 11 months ago) by dpvc
Original Path: trunk/pg
Fixed a problem where a pick screen error was produced if a student
entered a vector-valued formula rather than a constant vector when
parallel answers are being checked and the student used the Preview

Revision 4088 - Directory Listing
Modified Sun May 21 00:44:40 2006 UTC (7 years ago) by gage
Original Path: trunk/pg

This is still not in its final form which should involve checking the url
rather than the file location.

Revision 4044 - Directory Listing
Modified Thu Apr 6 00:23:59 2006 UTC (7 years, 1 month ago) by dpvc
Original Path: trunk/pg
Fixed a bug that caused can error when a Complex1 object was passed to
the answer checker (rather than a string that needs to be parsed).

Revision 4043 - Directory Listing
Modified Thu Apr 6 00:20:01 2006 UTC (7 years, 1 month ago) by dpvc
Original Path: trunk/pg
Fixed getFlag so that it sodesn't accidentally create the {context}
field of an object that doesn't already have one (Perl will create
hashes that don't already exist if you reference them).  This was
causing problems with the ans_array processing

Revision 4041 - Directory Listing
Modified Fri Mar 31 22:59:43 2006 UTC (7 years, 1 month ago) by dpvc
Original Path: trunk/pg
A change to the way lists are processed in AnswerChecker.pm in
December (v1.75) requires that implicitList => 0 be added to the
defaults for variable_cmp().

Revision 4028 - Directory Listing
Modified Sat Feb 18 22:42:55 2006 UTC (7 years, 3 months ago) by dpvc
Original Path: trunk/pg
Change check for zero from fuzzy check to strict check (when the
problem used absolute tolerances, in particular, this can causebig
problems).

Revision 3992 - Directory Listing
Modified Mon Jan 30 16:20:09 2006 UTC (7 years, 3 months ago) by dpvc
Original Path: trunk/pg
When checking for division by zero, don't do fuzzy check.

Revision 3971 - Directory Listing
Modified Wed Jan 25 12:47:17 2006 UTC (7 years, 3 months ago) by dpvc
Original Path: trunk/pg
Forward port to HEAD (Prevent "unquoted dx may conflict with future
usage" messages.)

Revision 3915 - Directory Listing
Modified Tue Jan 17 02:20:19 2006 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Fixed problem with formula-valued matrices producing an error message
incorrectly.  (Was checking the wrong attribute of the entries.)

Revision 3913 - Directory Listing
Modified Tue Jan 17 01:56:24 2006 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Fixed problem with variables that are multiplied with no space between
them (e.g., "ax") that was introduced when I changed the pattern to
allow multi-letter variable names.

The solution is to first check against the defined names before
checking for the more complete name pattern.

Revision 3912 - Directory Listing
Modified Fri Jan 13 21:15:19 2006 UTC (7 years, 4 months ago) by sh002i
Original Path: trunk/pg
changed license and readme to have generic "2.x" version numbers and no
unreleased development version or something at a later date.)

Revision 3872 - Directory Listing
Modified Sat Dec 31 16:31:48 2005 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Added ability to supply a code reference (rather than a Value object)
for the typeMatch and extra fields for the List answer checker (and
the String answer checker).  This makes these more useful in
overriding the match for specific problems that want better error
messages, for example.

Revision 3871 - Directory Listing
Modified Sat Dec 31 16:29:29 2005 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Avoid error when a CODE reference is checked to see if it is a Value object.

Revision 3870 - Directory Listing
Modified Sat Dec 31 15:00:37 2005 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Added ability to specify variables that are part of the union/list
rather than requiring just constants.  E.g.,

interval_cmp("(1,a),(2a-1,a)",unions=>'no',var=>'a');

or

interval_cmp("(x,y),(2x,3y)",unions=>'no',vars=>['x','y']);

Revision 3869 - Directory Listing
Modified Sat Dec 31 14:57:39 2005 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Added a new flag that controls how a list with a single entry that is
a list is handled.  In the past, the student could not specify such an
item, but now the default is to form a list with a single entry that
is a list, provided the student has used parens explicitly around his
list.  So "1,2" will be a list with two items and "(1,2)" will be a
list with one item (a list).  This improves the ability to use the
list checker for lists of arbitrary pairs (like "(1,max)") especially
when you want to check for lists of these (e.g., "(1,max),(2,min)"),
since otherwise a single pair "(1,max)" entered by the student would
become the list "1,max" rather than the list containing the single
pair.

If you really want "(1,max)" to become the list "1,max", use

List("1,max")->cmp(implicitList=>0);

to prevent single lists from forming a list of a single item.

Revision 3868 - Directory Listing
Modified Sat Dec 31 02:42:46 2005 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Now that the Parser allows multi-letter variable names, there is no
need to handle C0 specially.

Revision 3867 - Directory Listing
Modified Sat Dec 31 02:41:16 2005 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Now that the parser accepts multi-character variables, there is no
need for the special treatment of dx.  Also, allow the context to
specify the default variable to use, and if not available, take the
LAST varaible alphabetically, not the first.  (x is more likely to be
last, and the author might have added dx as a variable so that it will
not cause an error if used in other answers in the problem, for
example.)

Revision 3866 - Directory Listing
Modified Sat Dec 31 01:39:54 2005 UTC (7 years, 4 months ago) by dpvc
Original Path: trunk/pg
Allow multi-letter variable names and names like x1, x2, etc.

Revision 3814 - Directory Listing
Modified Wed Dec 14 17:47:00 2005 UTC (7 years, 5 months ago) by sh002i
Original Path: trunk/pg
Really fix fun_cmp equivalence warning message.

We show the equivalence message when: we're not in preview mode AND the
answers are equivalent AND the answers are not identical. We DON'T CARE
whether the answers are correct or not, because that leaks information
in multipart questions when $showPartialCorrectAnswers is off. Both the Parser-version (FUNCTION_CMP) and the non-Parser-version (ORIGINAL_FUNCTION_CMP) behave as descibed above now. And this time we test *before* we commit... Revision 3812 - Directory Listing Modified Wed Dec 14 00:51:23 2005 UTC (7 years, 5 months ago) by sh002i Original Path: trunk/pg parser version was ok, bug #752 fixed in non-parser version. Revision 3808 - Directory Listing Modified Tue Dec 13 18:23:46 2005 UTC (7 years, 5 months ago) by sh002i Original Path: trunk/pg give answer is equivalent message regardless of correctness. fixes bug #752. Revision 3800 - Directory Listing Modified Wed Dec 7 16:13:48 2005 UTC (7 years, 5 months ago) by dpvc Original Path: trunk/pg Prevent error message when num_cmp specifies the same string more than once (e.g., upper and lower case versions of the same thing). Revision 3792 - Directory Listing Modified Mon Dec 5 16:09:56 2005 UTC (7 years, 5 months ago) by sh002i Original Path: trunk/pg Corrected error message when mailing to an address is not allowed. This used to refer to the courseWeBWorK.ph file, which is WW1-specific. It now mentions global.conf and course.conf. Revision 3782 - Directory Listing Modified Thu Dec 1 13:17:27 2005 UTC (7 years, 5 months ago) by dpvc Original Path: trunk/pg Fixed a problem with not including parentheses when a negative number is the base of a power. (And in general, when a negative is used as an operand of a higher-precendence operation, but it really only affected powers.) Revision 3781 - Directory Listing Modified Tue Nov 29 21:25:25 2005 UTC (7 years, 5 months ago) by apizer Original Path: trunk/pg Add underscores to the anonymous unique identifier for questionnaires in WW 2 by using${setNumber}_${courseName}_$psvnNumber

Revision 3769 - Directory Listing
Modified Mon Nov 21 13:13:35 2005 UTC (7 years, 5 months ago) by dpvc
Original Path: trunk/pg
Fixed a problem with formatStudentAnswer not being defined in the
special context created for this answer checker.

Revision 3765 - Directory Listing
Modified Thu Nov 17 22:57:39 2005 UTC (7 years, 6 months ago) by dpvc
Original Path: trunk/pg
Handle the new global.conf setting for jsMath's processDoubleClicks option.

Revision 3763 - Directory Listing
Modified Thu Nov 17 13:21:43 2005 UTC (7 years, 6 months ago) by dpvc
Original Path: trunk/pg
Give better error messages when the entries in Points, Vectors and
Matrices are not of the right type.

Revision 3762 - Directory Listing
Modified Thu Nov 17 13:20:50 2005 UTC (7 years, 6 months ago) by dpvc
Original Path: trunk/pg
Adjusted the parentheses slightly so that matrices will only be formed
in Matrix context, not Point or Vector context (this produced
confusing messages for students in some circumstances where they didn't
balence their parentheses correctly).

Revision 3759 - Directory Listing
Modified Sat Nov 12 01:31:10 2005 UTC (7 years, 6 months ago) by gage
Original Path: trunk/pg
Roll back my changes.  Use Davide's method of detecting the preview Button

Revision 3758 - Directory Listing
Modified Sat Nov 12 00:58:57 2005 UTC (7 years, 6 months ago) by gage
Original Path: trunk/pg
Check to see if $inputs_ref->{previewAnswers} is defined. If it is then the preview button has been pressed. In this case emit a warning if the answer has been given previously regardless of whether the answer is correct or incorrect. The warning message indicates that the previous matching answer might have been either a preview or a submitted answer. Let's see how this works. Revision 3757 - Directory Listing Modified Sat Nov 12 00:50:07 2005 UTC (7 years, 6 months ago) by dpvc Original Path: trunk/pg Take care of the issue where Preview could be used to gather information about whether an answer is correct by using the "this answer is the same as the previous one" message. Now if Preview is used, the warning is given whether the answer is right or not. (Maybe it is not necessary to check for correct at all, since that was there to prevent the message from being issued when there are multiple answer blanks and the student is working on other ones. But the exact match check will take care of those. Should the message be issued if the student changes a correct answer to an equivalent one?) Revision 3756 - Directory Listing Modified Sat Nov 12 00:34:33 2005 UTC (7 years, 6 months ago) by dpvc Original Path: trunk/pg Updated a comment to make it more accurate. Revision 3755 - Directory Listing Modified Sat Nov 12 00:31:22 2005 UTC (7 years, 6 months ago) by dpvc Original Path: trunk/pg Make had the right idea, but used the wrong context (or what might be the wrong context in some circumstances). Revision 3754 - Directory Listing Modified Sat Nov 12 00:30:31 2005 UTC (7 years, 6 months ago) by dpvc Original Path: trunk/pg Roll back Mike's change, since this can cause unwanted error messages in list comparisons and other situations where the equality check could compare different types of objects (for example) or where the comparison could legitimately fail. We only want to report errors here when the user-supplied checker code fails. This change would cause errors to be reported, for example, when the user (incorrectly) entered a vector one time and then a formula (correctly) the next time. When the previous answer is checked against the current one, this change would report an error rather than silently ignoring the error, as it should. Revision 3753 - Directory Listing Modified Sat Nov 12 00:13:03 2005 UTC (7 years, 6 months ago) by gage Original Path: trunk/pg Changes to code checking whether the previous answer is equivalent to the current answer. In this module additional code was answer to check for errors in the overloaded == in case the two Values can't be compared. In PGanswermacros.pl the filter which handles "parse_previous_answer" was modified to make sure the context is the same in the previous answer and the current answer. Revision 3752 - Directory Listing Modified Sat Nov 12 00:12:54 2005 UTC (7 years, 6 months ago) by gage Original Path: trunk/pg Changes to code checking whether the previous answer is equivalent to the current answer. In this module additional code was answer to check for errors in the overloaded == in case the two Values can't be compared. In PGanswermacros.pl the filter which handles "parse_previous_answer" was modified to make sure the context is the same in the previous answer and the current answer. Revision 3735 - Directory Listing Modified Mon Oct 31 21:19:40 2005 UTC (7 years, 6 months ago) by apizer Original Path: trunk/pg Create an anonymous unique identifier for questionnaires in WW 2 by using$setNumber$courseName$psvnNumber in place of
$psvnNumber. Revision 3723 - Directory Listing Modified Thu Oct 20 00:57:19 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg A new parser object that handles popup menus. Mainly this is so that you can use them with the MultiPart object, which requires all the objects to be Value objects. See the comments in the file for documentation and examples. Revision 3716 - Directory Listing Modified Sun Oct 16 03:37:17 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg In the past, when Value objects were inserted into strings, they would automatically include parentheses so that if you had$f equal to 1+x
and $g equal to 1-x, then Formula("$f/$g") would mean (1+x)/(1-x) rather than 1+(x/1)-x, which is what would happen as a straing string substitution. The problem is that this would also happen for real numbers, vectors, and everything else, even when it wasn't necessary. So if$x=Real(3),
then "Let x = $x" would be "Let x = (3)". I have changed the behavior of the string concatenation for Value objects so that parentheses are only added in a few cases: for Formulas, Complex numbers, and Unions. This makes the other Value objects work more like regular variables in strings, but might cause some problems with strings that are used as formulas. For example, if$a = Real(-3), then "x + 2 $a" will become "x + 2 -3", or "x-1" rather than the expected "x - 6". (The old approach would have made it "x + 2 (-3)" which would have worked properly). For the most part, it is easier to use something like "x + 2*$a" or even "x" + 2*$a in this case, so the extra trouble of having to avoid parentheses when you really meant to substitute the value into a string didn't seem worth it. Revision 3715 - Directory Listing Modified Sun Oct 16 03:27:35 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Added a new experimental diagonstic function for the function answer checker. When enabled, it will produce graphs of the correct answer, the student answer, and the absolute and relative errors, and will list the data points used in the comparison, plus the numerical values of the results and errors. To enable the diagnostic, use ANS(fun_cmp($f,diagnostics=>1));

Note that only single-variable functions can be graphed at the moment,
so if you are using a multi-variable check, you need to disable the
graphing.  To do this use

ANS(fun_cmp($f,vars=>['x','y'],diagnostics=>[showGraphs=>0])); The diagnostic mode is only available for the Parser-based versions of the function checker, and (of course) with the native Parser objects as well: ANS(Formula($f)->cmp(diagnostics=>1));

There are now Context settings to control the diagnostics, which can
be set through Context()->diagnostics->set().  For example

Context()->diagnostics->set(formulas=>{showGraphs=>0});

would turn off graphs for all functions comparisons.  Some of the
other values you can set are:

formulas => {
showTestPoints => 1,        # show the test points and function values
showRelativeErrors => 1,    # show the relative errors for the student answer
showAbsoluteErrors => 1,    # show the absolute errors for the student answer
showGraphs => 1,            # show the various graphs
graphRelativeErrors => 1,   #  show the relative error graph
graphAbsoluteErrors => 1,   #  show the absolute error graph
clipRelativeError => 5,     #  don't show relative errors above 5
clipAbsoluteError => 5,     #  don't show absolute errors above 5
plotTestPoints => 1,        #  include dots at the test points
combineGraphs => 1,         #  show correct and student graphs in one image
},
graphs => {
divisions => 75,       # the number of data points to plot
limits => [-2,2],      # the lower and upper limit of the plot
#  (taken from the function limits if not provided)
size => 250,           # pixel size of the image (could be [width,height])
grid => [10,10],       # number of grid lines in each direction
axes => [0,0],         # where to put axes relative to origin
}

Any of these can be set in the Context(), or in the answer checker
itself.  If you set diagnostics to an array reference, the entries in
the array refer to element of the formulas hash.  If you set
diagonstics to a hash reference, then you can set values in either the
formulas or graphs hashes, as in:

ANS(Formula($f)->cmp(diagnostics=>{ formulas => {showAbsoluteErrors=>0}, graphs => {size=>300, divisions=>100}, })); If you want all function checkers to show diagnostics, use Context()->diagonstics->set(formulas=>{show=>1}); The image file names are modified to include the current time so that the names will be unique. This avoids problems with the browser cache showing a old image when a new one has been generated. But this also means that the temporary image directory will fill up fast, so you may need to empty it if you use the diagnostic images frequently. This is just a first attempt at a diagnostic feature. I think it will help when you are not sure if the tolerances are set properly, or if you think a student answer should be markes correct but isn't, as it will point out which point(s) are not being accepted. Revision 3714 - Directory Listing Modified Sun Oct 16 02:44:34 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Modified context data objects to provide a copy method so that the various types of data can copy themselves (and can provide a more comprehensive copy if necessary). Revision 3713 - Directory Listing Modified Fri Oct 14 23:33:58 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Let Parser object's cmp(debug=>1) option set the debug feature of the answer evaluator. Revision 3704 - Directory Listing Modified Tue Oct 11 17:59:30 2005 UTC (7 years, 7 months ago) by jj Original Path: trunk/pg Added syntactic sugar for pop_up_lists. A common situation is that a problem includes a short multiple-choice question along with other answers. Often, these questions are written as fill-in-the-blank where the student is told a list of legal words to put in the blanks. The idea is to make it as simple as possible for problem writers to replace the fill-in-the-blank with a drop-down list of alternatives. So, now the text of a problem can contain is the function increasing on [0,1]? \{ pop_up_list(['?', 'yes', 'no']) \} instead of is the function increasing on [0,1]? \{ pop_up_list('?' => '?', 'yes' => 'yes', 'no' => 'no') \} The result is checked with something like ANS(str_cmp('yes')); Existing problems are unaffected since the added syntax uses a reference to a list (the extra square brackets). Revision 3703 - Directory Listing Modified Mon Oct 10 23:47:26 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Add a new context flag that controls how the student answer should be displayed. The formatStudentAnswer flag can be set to 'evaluated' (the default), which shows the final numeric answer; 'parsed', which shows the fully parsed version (including extra parentheses for clarity); or 'reduced', which performs constant operations, but doesn't perform function evaluations or named-constant substitutions. For example, if the student answers 1+2+sqrt(3), then 'evaluated' will produce 4.73205, 'reduced' will show 3+sqrt(3), and 'parsed' will show 1+2+sqrt(3). Revision 3702 - Directory Listing Modified Mon Oct 10 23:41:05 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg If constant functions are not being reduced, don't mark the function call as constant (since otherwise it might be evaluated later accidentally). Revision 3696 - Directory Listing Modified Mon Oct 10 12:37:13 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Fixed a bug where correct_ans could not be overridden in the cmp() method for Lists. Revision 3689 - Directory Listing Modified Fri Oct 7 02:38:41 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Corrected a problem with contexts not being reset properly after num_cmp or fun_cmp. Revision 3680 - Directory Listing Modified Sun Oct 2 12:13:16 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Removed unneeded "my" for a varaible that is already local. Revision 3679 - Directory Listing Modified Sat Oct 1 01:17:24 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Major update to allow ImplicitPlane objects to be created automatically by the Parser when it sees equal signs. This makes it possible to use ImplicitPlanes in Lists. (Before, when the List was turned into a Formula returning a List, the equality became a plane old equality rather than an ImplicitPlane object.) This is a bit of a hack for now until I can make List and other Value objects be allowed to have Formulas as their entries rather than turn into Formulas returning Lists (or whatever type). Revision 3678 - Directory Listing Modified Sat Oct 1 01:13:27 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Handle the names of entries in Lists and Formulas returning lists better. Also do better typechecking on these lists. Finally, allow better typechecking for String objects that are being used when a Formula answer is allowed. Revision 3677 - Directory Listing Modified Sat Oct 1 01:10:27 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Allow context to override object class used to create formula objects (so that things like ImplicitPlane can create instances of themselves automatically when needed). This mechanism needs to be enlarged to encompass the other Value object classes as well (like the Context()->{parser}{...} hash). The real problem is that the List object probably shouldn't create a formula returning a list when it is passed formulas, since there really isn't much need for a formula returning a list to be autogenerated (you can create one by hand using Formula if needed). Right now, ALL the Value objects make themselves into Formulas when one of their entries is a formula. For example, Point(1,"x") produces the same thing as Formula("(1,x)"), and List(1,"x") is the same as Formula("1,x"). This is good for points, but not so good for lists. And it might sometimes be nice to have a Vector of Formulas, or a Matrix with Formula entries (rather than Formulas returning Vectors or Matrices). But this would require some serious changes internally in the Value objects, which make assumptions about their values being constant. Changing that will be for another day... Revision 3676 - Directory Listing Modified Sat Oct 1 00:59:06 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Correctly create Formula returning List when a list has formula entries. Revision 3670 - Directory Listing Modified Thu Sep 29 22:08:43 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Only add the 'dx' variable if it isn't already in the context. Revision 3669 - Directory Listing Modified Thu Sep 29 22:02:07 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Fixed a problem with the automatic upgrading of object classes for when Value objects are subclassed but are not entered into the precedence list. Revision 3662 - Directory Listing Modified Wed Sep 28 20:40:20 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Fixed a bug where if you specified a variable other than dx, the division by zero check didn't work properly. Revision 3661 - Directory Listing Modified Wed Sep 28 11:11:29 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Fixed typo in comments. Revision 3655 - Directory Listing Modified Mon Sep 26 04:11:25 2005 UTC (7 years, 7 months ago) by gage Original Path: trunk/pg Changed the numerical values of lbf to make it more accurate (assuming that lbf is an abbreviation for ft-lbs which I doubt). Also replaced the conversion factor for pounds with a more accurate figure. Revision 3654 - Directory Listing Modified Sat Sep 24 02:38:19 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Updated to be able to handle empty anwswer blanks. There is a new parameter for the MultiPart object (allowBlankAnswers) that controls whether the checker routine will be called even when there are blank entries (normally, the checker is not called unless all the entries are non-blank). Use$mp = MultiPart(1,2)->with(checkTypes=>0,allowBlankAnswers=>0);

to have the checker routine called when answers are left blank.

You can now also include blank answers in the list itself:

$mp = MultiPart(1,2,""); (there is no need to include allowBlankAnswers in this case, because the blank string will take care of itself. Revision 3652 - Directory Listing Modified Sat Sep 24 00:47:30 2005 UTC (7 years, 7 months ago) by dpvc Original Path: trunk/pg Added ability to have answers that are empty strings. String("") now will produce a valid string object regardless of the Context's defined string values. (You can prevent this using Context()->flags->set(allowEmptyStrings=>0); if you wish). String("")->cmp will produce an answer checker for an empty string (it removes the blank checker that WW installs). Revision 3638 - Directory Listing Modified Mon Sep 19 00:58:35 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed bug where str_cmp("0") was changing the correct answer to "", making it impossible to get correct. Revision 3637 - Directory Listing Modified Mon Sep 19 00:16:24 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Prevent the empty list from having open and close be set to 'start' (a value used internally). Revision 3633 - Directory Listing Modified Sat Sep 17 13:22:52 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Don't allow wrapping in label for ans_array errors. Revision 3632 - Directory Listing Modified Sat Sep 17 13:22:19 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Improved layout and labeling of error messages. Revision 3631 - Directory Listing Modified Sat Sep 17 13:02:24 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg The Parser answer checkers used to give the student answer as the parsed but unevaluated answer. This has been changed so that the student answer is now the computed result, no the parsed answer. The answer preview still shows the parsed equation. This is more consistent with the traditional answer checkers, and probably is more valuable to the students. Revision 3630 - Directory Listing Modified Sat Sep 17 12:39:09 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Better error messages for unreduced unions. Revision 3629 - Directory Listing Modified Sat Sep 17 12:25:38 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Improved error message layout and labeling for when ans_array is used. Revision 3628 - Directory Listing Modified Sat Sep 17 12:22:25 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Improved error messages for formulas returning infinity Revision 3616 - Directory Listing Modified Tue Sep 13 16:24:21 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed problem with recognizing MINF in NUM_CMP. Revision 3615 - Directory Listing Modified Tue Sep 13 14:07:32 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg The ORIGINAL_NUM_CMP was calling str_cmp as a code reference rather than as the more modern AnswerEvaluator object. This causes error messages when string answers were used. It now uses the evaluate() method of the AnswerEvaluator. Revision 3613 - Directory Listing Modified Mon Sep 12 23:28:37 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed an error where scalar() was used on a hash ref. Fixed a misfeature where operations on formulas could return Value objects of other classes; they should always return formulas, even when the formula is constant. Revision 3612 - Directory Listing Modified Mon Sep 12 20:26:01 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Avoid undefined value of$name.

Revision 3603 - Directory Listing
Modified Wed Sep 7 01:10:58 2005 UTC (7 years, 8 months ago) by dpvc
Original Path: trunk/pg
Added support for cplx_cmp() using the Parser.  Move
lib/Parser/Legacy/PGcomplexmacros.pl to the pg/macros directory to use
it.  As with the other legacy macros, $useOldAnswerMacros can be controlled to determine whether the new or the old macros are used. There is a new mode 'strict_cartesian' that is parallel to 'strict_polar'. You must enter a+bi form, but the a and b can have operations within them. Revision 3602 - Directory Listing Modified Wed Sep 7 01:06:13 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Added "strict" versions of the limited complex contexts that don't allow operations within the real and imaginary parts. Also cleaned up some of the code and fixed a few situations that had been missed before. Note that in strict mode, e^(pi i) is accepted, but e^(pi/2 i) is not. Should that be changed? It would be possible to make a context in which a*e^(b*pi/c i) is accepted. Revision 3601 - Directory Listing Modified Tue Sep 6 21:02:05 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Movified the copying of functions from Complex1:: into main:: to avoid conflicts with the PGcommonFunctions.pl versions (these errors were trapped, but still show up in the error log unnecessarily). Also commented out some code that was not doing anything other than producing error messages in the error log. (It was left over from a syntax check on the professor's answer, but the actual check was removed, leaving a portion that tries to process the answer, but usually fails (because things like "1+4i" need to be converted to "1+4*i" before they can be used in PG_answer_eval, but that was not being done). Because of this, it is not possible currently to do cplx_cmp("1+4i"), and instead you must to cplx_cmp(new Complex(1,4)). To fix this, you would need to call check_syntax (and the other filters that are called on the student's answer) before calling PG_answer_eval. Of course, you should only do this when the professor's answer isn't already a Complex object. I am going to work on a Legacy module like the ones for num_cmp and fun_cmp to replace cplx_cmp, which should avoid these problems and make the changes suggested above unnecessary. Revision 3596 - Directory Listing Modified Fri Sep 2 22:29:59 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed error in atan2 where second argument was not promoted to a Real. Revision 3591 - Directory Listing Modified Tue Aug 30 12:21:36 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg The perl method for UOP and BOP now put spaces around the operator, to prevent Perl from thinking that things like -e is a file test and *Parser::Function->call is a name reference. (Some of these had been done by hand earlier, but now the base BOP and UOP classes handle it, so we should not have problems in the future). I removed the ad hoc fixes from several other locations (Parser/Function.pm, Parser/Context/Default.pm). Also extended the operator definitions to allow operators to create function-call syntax in perl mode (for when the operator doesn't correspond to a perl operator). Revision 3589 - Directory Listing Modified Tue Aug 30 00:44:53 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Added the ability to put class-specific answer-checker defaults into the Context object. For example, Context("Vector")->{cmpDefaults}{Vector}{promotePoints} = 1; would make all Vector answer checkers include promotePoints=>1 automatically. (Note however that if a subclass of Vector is used, it will not get this defaults, since its class name would be different. Perhaps something more sophisticated will be needed in the future.) Revision 3588 - Directory Listing Modified Tue Aug 30 00:41:34 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Added a parserCustomization.pl file that is loaded whenever the Parser.pl file is. This can be used on a course-by-course basis to customize features of the Parser. Some examples are listed in the file. You need to be VERY careful when doing this, as this will affect ALL problems that use the Parser. Your changes may cause some .pg files to fail if they rely on the default behavior that you are changing. If you wish to override settings in one of the predefined contexts (like "Vector"), then define$context{Vector} as a copy of
$Parser::Context::Default::context{Vector}, as in the commented out examples. Then Context("Vector") will use your copy rather than the original. If you were to change the version in Parser::Context::Default, that would change the parser for ALL courses, not just yours. Revision 3587 - Directory Listing Modified Tue Aug 30 00:36:55 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Added a Point context that is a copy of the Vector context. This will allow users to override some settings in Vector context (namely, how they are entered and displayed) without preventing users from being able to enter points (in Point context). Revision 3578 - Directory Listing Modified Fri Aug 26 14:06:39 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg Fix bug where perl functions which may need parentheses by forcing them when the function starts Parser::Function->. This seems to work, but there might be a better way to do it, or need other cleaning up. Revision 3577 - Directory Listing Modified Fri Aug 26 04:19:09 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg When making on-the-fly image names, replace periods in the student login name to avoid problems with pdflatex. Changed the replacement in set names to use the same new trick (the old way had an infintesimal chance of collision). The new scheme is first double all instances of "Q". Then replace periods with "-Q-". Revision 3576 - Directory Listing Modified Thu Aug 25 20:01:25 2005 UTC (7 years, 8 months ago) by glarose Original Path: trunk/pg Add some electrical units. Take two, hopefully in the correct branch this time. Revision 3574 - Directory Listing Modified Thu Aug 25 18:32:01 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg Updated instructions to match changes to global.conf.dist and the move or PGanswermacros.pl. Revision 3573 - Directory Listing Modified Thu Aug 25 18:24:55 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg A separate copy of this file is no longer needed. Revision 3572 - Directory Listing Modified Thu Aug 25 18:21:21 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg This makes the pg/lib/Parser/Legacy copy of PGanswermacros.pl the official copy here. This still leaves the original answer evaluators as the default, but simplifies the update process, and we don't have to maintain two copies of the original functions. Revision 3569 - Directory Listing Modified Thu Aug 25 03:40:44 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed problem with Context's not properly initializing themselves with the WW environment parameters (like zeroLevelTol and useBaseTenLog). The copy method and the method that did an initialized copy used to be separate routines, but that turned out to be unnecessary, so they have now been merged (copy always tries to initialize the WW values when it can, and when the copied context doesn't already have them). The reason this is complicated is that a number contexts are set up before the global.conf data is available, so these can't be initialized with the WW values. Also, these default contexts are stored in the persistant processes, and we don't want to leave possibly course-specific values lying around in them, so whenever a context is selected, it is copied from the standard version and the WW parameters are inserted into it. The problem author can only modify the copy, not the original, so this is OK with mod_perl. The context's copy method now always tries to initialize (we used to have to call initCoopy to get a copy that has the WW parameters inserted). That turned out to cause trouble with code that handled contexts without the usual Context() command. Revision 3568 - Directory Listing Modified Thu Aug 25 03:32:16 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed log and log10 perl methods so that log obeys the useBaseTenLog flag, and log10 doesn't try to call main::log10, which is not available from within this preloaded package. The in- and outside the safe compartment stuff is very confusing, and functions that are not overloaded native perl functions seem to be not callable from the Value::Formula package, so the perl method now calls Parser::Function->call() directly (doesn't look pretty, but I've given up on that). Revision 3566 - Directory Listing Modified Thu Aug 25 00:35:18 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg In order to overcome an MSIE bug that affects jsMath, the call is changed from jsMath.ProcessBeforeShowing() to jsMath.wwProcess(), which is added by the jsMath-ww.js file. (This routine uses an onload handler for MSIE to put off the processing until MSIE can handle it properly, but allows all others to do it at the usual time.) Revision 3562 - Directory Listing Modified Wed Aug 24 19:07:10 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Changed stringify to check for an answer that is zero by using the zeroLevelTol value directly (rather than use the fuzzy equality check for zero, which depends on the tolType in a bad way). Revision 3560 - Directory Listing Modified Wed Aug 24 11:44:49 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Made relative tolerances the default for when the tolType is not one of 'relative' or 'absolute'. Revision 3557 - Directory Listing Modified Wed Aug 24 01:35:01 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg Hopefully fixed the logic of setting numerical tolerance defaults. Revision 3556 - Directory Listing Modified Tue Aug 23 23:59:46 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg Fixed problem with display_matrix_mm so its behaviour matches its documentation. This may break problems which relied on its previous incorrect behavior. Revision 3555 - Directory Listing Modified Tue Aug 23 23:57:01 2005 UTC (7 years, 8 months ago) by dpvc Original Path: trunk/pg Use a default for the zeroLevelTol set in the current context. Revision 3554 - Directory Listing Modified Tue Aug 23 23:10:02 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg Deleted commented out line (which had been used for debugging). Revision 3553 - Directory Listing Modified Tue Aug 23 22:56:50 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg This adds wiring to the pg side for special bits of html to be included before/after the body of a problem. You also need to update global.conf (and probably want to update Tasks.pm). A commented out example in global.conf.dist shows how to use this to produce boxed problems a la the Union College server. In this approach, the added parts are not used for problems rendered in the Library Browser or Problem Set Detail. This addresses bug 817. This solution may not be suitable for inclusion of needed bits for modes such as asciimath or tth because the those bits of html are probably needed for display in the Library Browser. It is hard to distinguish bits which are always wanted, and those which are only wanted for use by Problem. Revision 3547 - Directory Listing Modified Mon Aug 22 01:26:04 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg Part of change dealing with bug 813. Possible things still to do here: change names of variables to reflect that they contain commands and not scripts have a variable for the path to cat remove the scripts themselves Revision 3544 - Directory Listing Modified Sun Aug 21 21:46:49 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg Removed bits which were accidentally included during last commit. Revision 3543 - Directory Listing Modified Sun Aug 21 18:12:30 2005 UTC (7 years, 8 months ago) by jj Original Path: trunk/pg Should fix bug 696 by replacing consecutive whitespace with a single space for answers in an individual ans_rule. Revision 3540 - Directory Listing Modified Sun Aug 21 05:21:07 2005 UTC (7 years, 9 months ago) by jj Original Path: trunk/pg level_curve_check now forces the use of the old style (not Parser::Legacy) answer evaluators resolving bug 820. Revision 3539 - Directory Listing Modified Sun Aug 21 00:04:40 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Updated to handle jsMath version 2. Revision 3536 - Directory Listing Modified Sat Aug 20 23:07:13 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added code to handle the case where the professor's answer is in expondential notation using a little e instead of a big one. (Perl will convert .0000001 to 1E-07, for example, before it is passed to num_cmp.) Revision 3531 - Directory Listing Modified Mon Aug 15 22:42:37 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed more undefined values Revision 3529 - Directory Listing Modified Mon Aug 15 01:50:21 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Changed Context() call to direct reference to context, so as not to leave the wrong content selected as the current one. Revision 3525 - Directory Listing Modified Sun Aug 14 00:23:10 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added methods for testing containment of one set in another, and so on. These include:$A->contains($B) Test if$B is a subset of $A (or an element of$A if $B$ is a real number).

$A->isSubsetOf($B)      Test if $A is a subset of$B.

$A->isEmpty True if$A is the empty set.

$A->intersects($B)      True if $A and$B have numbers in common.

$A->intersect($B)       The set of numbers common to both $A and$B.

Be careful of the difference between "intersect" and "intersects".
One is a set the other a true/false value.

Revision 3524 - Directory Listing
Modified Sun Aug 14 00:18:46 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added a copy method that produces a deep copy of the given object.
This probably should be used through the new() methods to ducplicate
the data used when creating an object, otherwise changes to the
sub-objects will cause changes to the outer one.  For example, if an
interval is used to create a union and then the internal data for the
interval is changed by hand, the changes will also occur in the
union.  That is, Value objects contain their data by REFERENCE.  This
should probably be changed, but fortunately, no one should be
adjusting the internal structure of the objects by hand.

Revision 3523 - Directory Listing
Modified Sat Aug 13 22:38:39 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added canBeInUnion and isSetOfReals methods to the Parser package
(similar to the ones in the Value package), replacing the
canBeInterval flag and other ad hoc checks.

Removed ability to form interval like [a] now that we have sets.

Revision 3522 - Directory Listing
Modified Sat Aug 13 22:34:31 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Maintain parentheses correctly when converting to perl.

Revision 3520 - Directory Listing
Modified Sat Aug 13 21:45:46 2005 UTC (7 years, 9 months ago) by jj
Original Path: trunk/pg
Implimentation of COMMENT for comments to appear in the library browser.

Revision 3518 - Directory Listing
Modified Sat Aug 13 21:34:50 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Allow a list of numbers to be converted to a set.

Revision 3517 - Directory Listing
Modified Sat Aug 13 21:31:46 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Pass the canBeInUnion call on to the Formula's root node

Revision 3516 - Directory Listing
Modified Sat Aug 13 20:59:28 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added isSetOfReals and canBeInUnion methods to the Value objects, and
replaced the ad hoc tests for these conditions to call these
routines.

Cleaned up the make() methods for Intervals, Sets and Unions, and
improved the new() methods to handle more cases better.

Fixed Value::makeValue() to handle an array reference correctly.

I don't THINK any of this will break anything.  :-)

Revision 3515 - Directory Listing
Modified Sat Aug 13 20:55:35 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Make formulas that produce lists get default open and close parens,
and have them retained in Formula() results.

Revision 3514 - Directory Listing
Modified Sat Aug 13 19:10:41 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Make sure the singletons are sorted before comparing them to the
intervals (and each other).

Revision 3513 - Directory Listing
Modified Sat Aug 13 18:51:54 2005 UTC (7 years, 9 months ago) by jj
Original Path: trunk/pg
Fixed treatment of options in setting the mode and optional parameters
related to reducing unions.

Revision 3512 - Directory Listing
Modified Sat Aug 13 18:19:01 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Can't use the length check when reducing unions, since it could
contain a single set that is not reduced, and we need to check that,
too.

Revision 3511 - Directory Listing
Modified Sat Aug 13 17:50:11 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed reduction warnings for individual sets, intervals and unions (in
making it work for lists, I broke it for the single items).

Revision 3510 - Directory Listing
Modified Sat Aug 13 17:32:58 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed a problem with redefine when used with classes that store their
data in a on-standard form (i.e., by overridding the create()
method).  Now they can define uncreate() to get the original data back
for use with redefine().

Revision 3509 - Directory Listing
Modified Sat Aug 13 17:24:00 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed mad error message (change needed due to new message translation
facility).

Revision 3508 - Directory Listing
Modified Sat Aug 13 16:58:56 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added isReduced method to tell if a Union, Set or Interval is already
reduced.  Fixed up sort to use CORE::sort, and added sort and reduce
to Intervals, which do nothing, but are there for consistency.

Revision 3507 - Directory Listing
Modified Sat Aug 13 16:57:14 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed error in testing is a union is reduced (didn't test if sets
within a union were reduced properly).

Revision 3506 - Directory Listing
Modified Sat Aug 13 16:47:23 2005 UTC (7 years, 9 months ago) by jj
Original Path: trunk/pg
Moved a chunk of duplicated code to its own function, and tweaked the setting
of the context in a few cases.

Revision 3505 - Directory Listing
Modified Sat Aug 13 16:33:50 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added sort methods to Union and Set that return objects with their
data sorted.

Revision 3504 - Directory Listing
Modified Sat Aug 13 15:57:17 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Moved the union and set reduction checks from cmp_equal to cmp_compare
so that the messages can be produced even in lists of unions.

Improved the message facilities for the list comparison so that
cmp_compare can make errors that refer to the number of the entry in
the student's answer (otherwise an extra "There was a problem with
your nth value" message needs to be prepended, which looks bad if it
can be avoided).

Use the "extra" answer checker to report syntax error messages in unordered
lists.

Revision 3503 - Directory Listing
Modified Sat Aug 13 15:44:41 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed problem with call to $equation->Error (due to change in error-handling that allows for translation of error messages). Revision 3502 - Directory Listing Modified Sat Aug 13 05:54:10 2005 UTC (7 years, 9 months ago) by jj Original Path: trunk/pg If a problem file sets$refreshCachedImages=1 inside the pg file, then
cached copies of on the fly graphics are ignored and the graphic is
regenerated.

Revision 3501 - Directory Listing
Modified Sat Aug 13 01:40:45 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added differentiation of (single-variable) functions created with
parserFunction.

Revision 3500 - Directory Listing
Modified Sat Aug 13 01:39:14 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed typo in previous update.

Revision 3499 - Directory Listing
Modified Sat Aug 13 00:41:24 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added sets to the differentiation information (no derivatives allowed)

Revision 3498 - Directory Listing
Modified Sat Aug 13 00:35:11 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed a typo in an error message.

Revision 3497 - Directory Listing
Modified Sat Aug 13 00:25:27 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added ability for Unions and Sets to simplify themselves
(automatically or on demand), and added flags to the Context and
answer checkers to control these features.  The new Context flags
are

reduceUnions                tells whether unions are automatically
reduced when they are created.

reduceUnionsForComparison   tells whether unions are reduced
before comparing them for equality
or inequality (etc) if they aren't

reduceSets                  tells whether redundent elements are
removed from sets as they are created.

reduceSetsForComparison     tells whether sets are reduced before
comparing them.

All of these default to true.

The Interval, Set, Union, and List answer checkers not have two new
flags for controlling these values:

studentsMustReduceUnions    tells whether unions and sets will be
counted as incorrect when they are not
reduced to non-overlapping intervals
and at most one set with no repeated
entries.

showUnionReduceWarnings     tells whether an error message will
be produced for non-reduced unions and
sets, or if they will be marked wrong
silently.  (Not available in Lists.)

Both of these are true by default, since most professors probably want
their students to write intervals in reduced form.  (Is this true?)
This corresponds the the current behavior of the interval checkers,
which require the student's answer to be the same set of intervals as
in the professor's, but with the addition of an error message when the

Revision 3495 - Directory Listing
Modified Fri Aug 12 23:21:52 2005 UTC (7 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed use of undefined value for $position in TeX and String methods. Revision 3494 - Directory Listing Modified Fri Aug 12 23:02:11 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Made the 'R' constant in Interval context show up as a bold R in TeX mode. Revision 3493 - Directory Listing Modified Fri Aug 12 22:56:04 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Detect preview mode correctly for either WW1 or WW2. Revision 3492 - Directory Listing Modified Fri Aug 12 22:55:19 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Adjust spacing. Revision 3491 - Directory Listing Modified Fri Aug 12 22:54:38 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Mark function as constant if it is. Revision 3489 - Directory Listing Modified Fri Aug 12 18:43:25 2005 UTC (7 years, 9 months ago) by jj Original Path: trunk/pg Completed conversion of interval_cmp to use Parser objects. Also, minor updates to number_list_cmp. Revision 3488 - Directory Listing Modified Fri Aug 12 17:40:07 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Avoid problem with undefined value being passed to protectHTML. Revision 3487 - Directory Listing Modified Fri Aug 12 17:09:42 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Changed how Intervals implement the requireParenMatch flag for the interval and union answer checker. (Use a Context flag rather than a flag on the interval itself.) Moved the getFlag method from Formula.pm to Value.pm so it can be used by any object class. New feature where classes can add more context flags to set (and reset after the answer checker runs). Revision 3484 - Directory Listing Modified Fri Aug 12 01:26:11 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Removed erroneous dollar sign. Revision 3483 - Directory Listing Modified Fri Aug 12 01:21:48 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added redefine() function to complement undefine() for various Context() values. For example Context()->operators->undefine('+'); makes '+' undefined, but Context()->operators->redefine('+'); will put it back. You can specify a context from which to take the redefinition, and a name in that context, as in Context()->operators->redefine('U',from=>"Interval"); Context()->operators->redefine('u',from=>"Interval",using=>"U"); Context()->operators->redefine('U',from=>$content);

where $content is a reference to a Context object. The undefine() function lets you undefine several items at once, as in Context()->operators->undefine('+','-'); For redefine, you must put multiple names in square brackets because of the optional parmeters: Context()->operators->redefine(['+','-']); Revision 3482 - Directory Listing Modified Fri Aug 12 01:15:30 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed bug with missing fields in initialization. Revision 3477 - Directory Listing Modified Thu Aug 11 20:57:18 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added ability to subtract intervals, sets and unions. Adjusted the precedence of the union 'U' to be above _ and + so that things like (1,5) U (7,10) - {8} U (2,3) will do ((1,5) U (7,10)) - ({8} U (2,3)) rather than the previous (1,5) U ((7,10) - {8}) U (2,3). Finally, added a constant 'R' to the Interval context that is equivalent to (-inf,inf), so you can do things like R-{0} now. Still need to work out reducing unions so that things like (1,3)U(2,4) can become (1,4). Revision 3474 - Directory Listing Modified Thu Aug 11 14:37:18 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Changes needed for new Set object, plus for moving string, TeX and perl into Value.pm. Also removed unneeded spaces in perl versions of the constants (these were to fix problems with the minus sign, but that is now being handled by the minus operators themselves). Revision 3473 - Directory Listing Modified Thu Aug 11 14:34:24 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Changes needt for Set object, and fixed a bug with unions containing constant intervals with non-constant ones. Revision 3472 - Directory Listing Modified Thu Aug 11 14:33:09 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Changes needed to Set object. Also, use Parser to handle unions defined as strings rather than doing it by hand (that's the whole point, isn't it?). Added object promotion from lower-precedence classes (for better error messages), and fixed up the comparison routine. Revision 3471 - Directory Listing Modified Thu Aug 11 14:28:07 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Changes needed for Set object, better handling of an interval given as a string, and a few misc. fixes. Revision 3470 - Directory Listing Modified Thu Aug 11 14:25:53 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Changes needed for new Set object, and moving of string, TeX and perl methods to Value.pm Revision 3469 - Directory Listing Modified Thu Aug 11 14:23:16 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added changes needed for the new Set object. Revision 3468 - Directory Listing Modified Thu Aug 11 14:22:36 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added in the Set object class. Also made more comprehensive defaults for string, TeX and perl output, so these don't have to be subclassed so often. These handle looking up the open and close parens and recursively handling the entries in a list-type object. Revision 3467 - Directory Listing Modified Thu Aug 11 14:20:31 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Properly maintain open and close parens in emtpy lists. Revision 3466 - Directory Listing Modified Thu Aug 11 14:19:26 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added new Set object class to the Parser. It implements a finite set of real numbers, for use with unions and intervals. E.g., (1,2) U {3} or (1,2) U {3,4,5}. You can created Set objects in your perl code via the Set() command, e.g, Set(3,4,5) or Set("{1,2,3}"). You should set the Context to Context("Interval") if you plan to use Set objects, as this defined the braces to form sets (rather than using them as parentheses, which is the default WW behavior). Note that in Interval context, you can NOT use braces as parentheses. Current, Set objects are only allowed to be sets of numbers. It would be possible to extend that in the future. Revision 3465 - Directory Listing Modified Thu Aug 11 00:38:33 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Make upper-case alias a hidden one (since it is not needed for the pattern). Revision 3464 - Directory Listing Modified Thu Aug 11 00:37:35 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Dereference aliases to aliases properly. Revision 3463 - Directory Listing Modified Wed Aug 10 23:05:41 2005 UTC (7 years, 9 months ago) by jj Original Path: trunk/pg Default behavior of number_list_cmp set to be backward compatible (no hints of any kind or partial credit). These features can now be activated by optional arguments. Also improvements on parser-based interval_cmp. Revision 3462 - Directory Listing Modified Wed Aug 10 18:57:17 2005 UTC (7 years, 9 months ago) by jj Original Path: trunk/pg Hopefully improved some of how the temporary context is set for number_list_cmp. Many whitespace changes (spaces to tabs). Work in progress for a version of interval_cmp which uses Parser, temporarily called interval_cmp2. Revision 3460 - Directory Listing Modified Wed Aug 10 15:07:12 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Interval (and Union) checker now accepts requireParenMatch flag for deciding whether the interval type must match. Setting requireParenMatch to 0 will let (1,2) match (1,2] or [1,2], etc. Revision 3459 - Directory Listing Modified Wed Aug 10 15:05:34 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Cosmetic change. Revision 3458 - Directory Listing Modified Wed Aug 10 14:28:59 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg The Parser versions of num_cmp and fun_cmp incorrectly left the current Context set to the base context used by the answer checker. The Context is now correctly reset to the one in effect before the call to num_cmp or fun_cmp. Also removed some redundant values in if-then checks. Revision 3457 - Directory Listing Modified Wed Aug 10 14:22:48 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Enable commas when mode=>"frac" is specified. Revision 3455 - Directory Listing Modified Mon Aug 8 15:56:09 2005 UTC (7 years, 9 months ago) by jj Original Path: trunk/pg Changed number_list_cmp to use Parser. Revision 3446 - Directory Listing Modified Mon Aug 1 15:14:20 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed a bug that would cause step() to produce an error when called on a constant value. Also, added fact() function that was defined in Algparser but not in Parser (which uses x! notation). Revision 3445 - Directory Listing Modified Mon Aug 1 14:20:16 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added missing "step" function that was defined in the AlgParser but not in the Parser. Be sure to copy the updated PGanswermacros.pl to the pg/macros directory. Revision 3444 - Directory Listing Modified Mon Aug 1 13:10:52 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Make List("1,2,3") work like List("1","2","3") rather than produce a list with one element that is a list. Revision 3443 - Directory Listing Modified Mon Aug 1 12:42:21 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Added postfilter to Parser-based implementation of NUM_CMP so that the student's answer is updated to be the result of evaluating the answer (when there is no error in evaluating the answer). This correctly reflects the behaviour of the original NUM_CMP. Revision 3442 - Directory Listing Modified Mon Aug 1 12:37:35 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed typo that caused hilighting of the position of errors to be lost. Revision 3441 - Directory Listing Modified Mon Aug 1 12:04:23 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Updates to make mode=>'frac' properly emulate the original num_cmp behavior (it now allows decimals and fractions instead of requiring a fraction). There is also a new LimitedNumeric-StrictFraction context (not currently used) that disallows decimals and requires fractions. Revision 3440 - Directory Listing Modified Mon Aug 1 12:01:39 2005 UTC (7 years, 9 months ago) by dpvc Original Path: trunk/pg Folded in Mike's changes for status messages. Revision 3426 - Directory Listing Modified Fri Jul 29 19:44:04 2005 UTC (7 years, 9 months ago) by sh002i Original Path: trunk/pg Fix use of$SIG{__WARN__} and $SIG{__DIE__}. * Each change to$SIG{__WARN__} and $SIG{__DIE__} is now dynamically scoped with "local", rather than changing globally and then restoring at the end of the block. * The special value "DEFAULT" is used instead of sub {CORE::die(@_)} or sub {CORE::warn(@_)} when preparing to eval STRING code. * Where$SIG{__WARN__} and $SIG{__DIE__} are overridden to do preprocessing with PG_errorMessage, the previously installed handlers will be called instead of the built-in warn or die functions after preprocessing occurs. (For example, the warn and die handlers defined in Apache::WeBWorK or the warn handler defined in WeBWorK::PG will be called.) * The behavior in process_answers is modified so that the custom handlers are installed once before the answer evaluation loop. This causes them to be in effect during the setup/teardown code, but I don't think this will be a problem. Revision 3400 - Directory Listing Modified Fri Jul 22 22:59:12 2005 UTC (7 years, 9 months ago) by gage Original Path: trunk/pg Made listVariables and listFormVariables synonyms for listing all variables available to the problem. Revision 3393 - Directory Listing Modified Wed Jul 20 18:30:59 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Added a modification of the grades that shows where the state_summary_msg can be added. This message is printed at the bottom of each problem page. The current default is a blank message, which means that the default message defined in Problem.pm is printed. There is currently no way to turn the message off entirely. Perhaps on the next revision. Revision 3387 - Directory Listing Modified Sat Jul 16 22:31:41 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Added documentation for macros used in constructing sequential problems. Revision 3386 - Directory Listing Modified Sat Jul 16 22:01:08 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Macros that aid the construction sequentialProblems. For these problems certain sections of text are hidden until earlier answers have been answered correctly. -- Mike Revision 3385 - Directory Listing Modified Sat Jul 16 21:59:35 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Added support for sequentialProblems. Revision 3384 - Directory Listing Modified Sat Jul 16 19:24:31 2005 UTC (7 years, 10 months ago) by jj Original Path: trunk/pg Fixed typo related to useBaseTenLog. Revision 3383 - Directory Listing Modified Fri Jul 15 02:57:01 2005 UTC (7 years, 10 months ago) by jj Original Path: trunk/pg Fixed typo. Revision 3375 - Directory Listing Modified Wed Jul 13 03:03:25 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg This file implements an easy way to add functions that are defined within the Parser's Context. See the comments in the file itself for documentation on how to use it. Revision 3374 - Directory Listing Modified Wed Jul 13 01:46:49 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Wrong correction in the previous commit. Use CODE::push Revision 3373 - Directory Listing Modified Wed Jul 13 01:23:38 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Made modifications that allow use of complex numbers in matrices. You can also LR decompose a non-square matrix. Documentation is still needed and further testing. Revision 3372 - Directory Listing Modified Wed Jul 13 01:22:43 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Made modifications that allow the use of complex numbers in matrices Revision 3371 - Directory Listing Modified Tue Jul 12 22:39:56 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Make error messages potentially localizable (by making them use sprintf-style strings rather than variable subtitution). Revision 3370 - Directory Listing Modified Tue Jul 12 22:29:53 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg A first pass at making parser error messages localizable. The Context()->{error}{msg} hash can be used to specify translations of the standard messages. For example, Context()->{error}{msg}{'Division by zero'} = "Don't divide by zero, dude!"; Context()->{error}{msg}{'Function '%s' has too many inputs'} = "You passed too many arguments to '%s'"; (I didn't translate into another language, here, but you could do that, too.) The msg hash could also be used within answer checkers to make certain answer messages more appropriate for the given type of expected answer. Revision 3369 - Directory Listing Modified Tue Jul 12 21:05:37 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Fixed various perl compiler warnings (due to extra "my", and so on). Revision 3367 - Directory Listing Modified Tue Jul 12 02:02:46 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Fixed problem with minus signs in formulas that are turned into perl mode. Perl needs extra spaces to avoid problems with -e type operators. Revision 3364 - Directory Listing Modified Fri Jul 8 21:45:14 2005 UTC (7 years, 10 months ago) by jj Original Path: trunk/pg Fixed typo in installation instructions. Revision 3363 - Directory Listing Modified Thu Jul 7 02:40:52 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Added some pod documentation to this file. It needs more -- several methods of MatrixReal1 have been overridden Revision 3360 - Directory Listing Modified Tue Jul 5 22:13:16 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Added some pod documentation Revision 3359 - Directory Listing Modified Tue Jul 5 21:58:51 2005 UTC (7 years, 10 months ago) by sh002i Original Path: trunk/pg chech tthPreamble path and mtime to deal with changes to the file between runs. this is necessary now that dangerousMacros.pl is cached. Closes bug #798. Revision 3353 - Directory Listing Modified Tue Jul 5 01:43:30 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Don't load Parser.pl (it causes trouble with the Matrix.pm module). We only needed it because of the calls to Real() that were being used by Formula objects, so have them call Value::Real directly. be sure to get the latest versions of Parser and Value (including the top-level Parser.pm and Value.pm) in order to use this update. Revision 3352 - Directory Listing Modified Tue Jul 5 01:38:19 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Modified the perl() method to make calles to Value:: directly rather than to the main:: stubs for creating Value objects. This will make it work better from within packages or when Parser.pl hasn't been loaded. A few things still won't work in this case; e.g., calls to Closed() for intervals (these could be handled better using ->with()) and to functions like Factorial and log10 that are defined in Parser.pl. Finally, there should be better object-based control over what routines are called to create these objects, so that subclasses of the Value objects will be able to be generated correctly. Revision 3351 - Directory Listing Modified Tue Jul 5 00:31:57 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Modified formatting Revision 3350 - Directory Listing Modified Tue Jul 5 00:08:54 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Main file that calls in the legacy modules. Revision 3349 - Directory Listing Modified Mon Jul 4 22:11:08 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Add comment Revision 3348 - Directory Listing Modified Mon Jul 4 20:18:40 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Folded in Mike's changes to checkbox_cmp. Revision 3347 - Directory Listing Modified Mon Jul 4 20:12:22 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg This is an attempt at making the traditional answer checkers call the new Parser in place of their original ones. That is, if you follow the instructions in the README file, then problems that use std_num_cmp(), fun_cmp(), etc. will really be using the new Parser instead of the original PGanswermacros.pl versions. The old answer checkers are still available, and can be switched back on a site-wide, course-wide, or problem-by-problem basis. See the README for details. Revision 3346 - Directory Listing Modified Mon Jul 4 19:52:38 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Rewrote checkbox_cmp as an AnswerEvaluator Revision 3345 - Directory Listing Modified Mon Jul 4 19:49:06 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Reworked some of the code for AnswerEvaluator The messages printed out when using the debug flag should now be somewhat better. -- Mike Revision 3344 - Directory Listing Modified Mon Jul 4 19:39:37 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Fixed problem with sorting (problem with$a, $b, I think). Revision 3343 - Directory Listing Modified Mon Jul 4 16:21:04 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Handle TeX versions of variables whose names include underscores better. Revision 3342 - Directory Listing Modified Mon Jul 4 15:53:26 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Better messages when adaptive parameters are too big. Revision 3341 - Directory Listing Modified Mon Jul 4 15:43:53 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Implement "remove trailing zeros" format, like in prfmt(). I still think '%g' works better in most cases ('%f#' will print larger values without using scientific notation, which is nice, but will print small numbers like .000000005 as 0, even though the fuzzy comparison of this to zero will not be true.) Revision 3340 - Directory Listing Modified Mon Jul 4 15:22:40 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Commenting out unused code. This file still needs a lot of work. Revision 3339 - Directory Listing Modified Mon Jul 4 15:22:22 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Don't use the overloaded Real class for doing adaptive parameter checks (use non-fuzzy checks, since we are checking the fuzziness by hand). Revision 3338 - Directory Listing Modified Mon Jul 4 15:21:52 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Restored str_filters -- removing it broke some of the other answer evaluators. str_filters takes a string, filters it and then returns the filtered string. The actual filters have been changed to work with answer hashes rather than with strings, so str_filters warps the string in an answer hash before sending it through the filters. sorry for the breakage. -- Mike Revision 3336 - Directory Listing Modified Mon Jul 4 13:15:57 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Change so as not to use raw HTML in the error messages. Revision 3335 - Directory Listing Modified Mon Jul 4 03:28:09 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Allow Parser::Number::NoDecimals() to accept a context to be modified (rather than always changing the curent context). Revision 3334 - Directory Listing Modified Sun Jul 3 20:10:37 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Updates to allow string matches to be case-insensitive. This is now the default, and can be overridden in the Context by setting the string's "caseSensitive" attribute. e.g.: Context()->strings->add("FooBar"=>{caseSensitive=>1}); would rewuire "FooBar" to be entered exactly as typed. Revision 3333 - Directory Listing Modified Sun Jul 3 20:06:33 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Adjusted some spacing Revision 3332 - Directory Listing Modified Sun Jul 3 20:05:28 2005 UTC (7 years, 10 months ago) by dpvc Original Path: trunk/pg Fixed a bug in the enable/disable routines that would cause them to always work on the current context rather than the one whose enable/disable method was being called. Revision 3328 - Directory Listing Modified Fri Jul 1 15:52:36 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Added commment Revision 3325 - Directory Listing Modified Wed Jun 29 17:10:11 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Added comments. Revision 3324 - Directory Listing Modified Wed Jun 29 16:19:42 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Fixed bug in radio_cmp closing bug #258. We now check to make sure that only a single string is being passed and not an array. (The latter occurs if checkboxes are used instead of radio buttons.) The presence of two checked checkboxes triggers a warning. Revision 3323 - Directory Listing Modified Wed Jun 29 02:48:55 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg MASSIVE changes to str_cmp and related subroutines (mostly in STR_CMP). This answer evaluator now produces an AnswerEvaluator type rather than a subroutine. Revision 3322 - Directory Listing Modified Wed Jun 29 02:47:40 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Corrected how preview_latex_strings are handled when two AnswerHashes are ANDed or ORed. Revision 3320 - Directory Listing Modified Tue Jun 28 19:38:16 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Format changes. Revision 3319 - Directory Listing Modified Tue Jun 28 19:36:52 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Many changes to this file. I've fixed multi_cmp which will check a comma separated string of answers. I have commented out many other routines which do not appear to be in use. Revision 3314 - Directory Listing Modified Fri Jun 24 20:11:23 2005 UTC (7 years, 10 months ago) by gage Original Path: trunk/pg Fixed conceptual error in compare_vec_solution. This should fix bug #670. In my opinion the entire concept of vec_solution_cmp should be reconsidered. In solving an underdetermined linear equation of the form Ax-b=0 it seems to me that the solutions answer in the form: x= a +bt+cu+ds where a,b,c,d are vectors should simply be evaluated to see if it satisfies Ax-b=0 for 5 or six values of a,b,c,d -- checking the solution should use a vector valued version of fun_cmp. As it is, the student's coefficients for a,b,c,d are compared with the instructors to see if they span the same space. This is quite a bit more complicated -- and indeed the method came up with the wrong answer. I believe I have the method corrected, but I would suggest that this answer evaluator be replaced with one which operates more directly and is therefore easier to maintain. Am I missing something in this analysis? Has someone else created answer evaluators for this type of problem? -- Mike Revision 3305 - Directory Listing Modified Tue Jun 21 19:56:00 2005 UTC (7 years, 10 months ago) by jj Original Path: trunk/pg New context which allows students to use C(n,r) and P(n,r) in their answers. To support this, the webwork versions of these functions have been moved from PGaux... to PGcommon... Revision 3298 - Directory Listing Modified Thu Jun 16 15:32:02 2005 UTC (7 years, 11 months ago) by dpvc Original Path: trunk/pg New flag showAllErrors for when a custom checker is supplied. This will cause all errors generated in the user's code to be reported (normally, messages from the Value and Parser packages are ignored). Revision 3297 - Directory Listing Modified Thu Jun 16 04:04:23 2005 UTC (7 years, 11 months ago) by dpvc Original Path: trunk/pg Fixed typos in comments. Revision 3296 - Directory Listing Modified Thu Jun 16 04:03:40 2005 UTC (7 years, 11 months ago) by dpvc Original Path: trunk/pg Fixed a problem with auto-generated functions getting an incomplete variable list. Revision 3295 - Directory Listing Modified Thu Jun 16 00:52:13 2005 UTC (7 years, 11 months ago) by gage Original Path: trunk/pg Fixed documentation for$graph->size()

Revision 3294 - Directory Listing
Modified Wed Jun 15 23:55:17 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Implements a Parser context in which only polynomials (of a single
variable) can be entered.  Only sums of multiples of powers of the
variable are allowed to be entered (though the coefficients can
contain mathematical operations).  An optional flag lets you specify
that only one term of each degree is allowed, so the student would
have to combine 1+x+x+x^2 to get 1+2x+x^2 in that case.

Revision 3291 - Directory Listing
Modified Wed Jun 15 22:00:32 2005 UTC (7 years, 11 months ago) by jj
Original Path: trunk/pg
Changed whitespace removal of TeX strings to safer version.

Revision 3274 - Directory Listing
Modified Thu Jun 9 11:16:01 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Fixed Disable() and Enable() so that they can be called as

Context()->functions->disable()
and
Context()->functions->enable()

as well as

Parser::Context::Functions::Disable()
and
Parser::Context::Functions::Enable()

The former is the preferred syntax.

Revision 3273 - Directory Listing
Modified Mon Jun 6 02:32:20 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Forgot to check hardcopy mode.  Fixed some problems with that.  The
answer array items have to turn off verbatim mode that is used when
answer are included in the hardcopy.  This causes paragraph breaks
between entries in a singleResult MultiPart that includes ans_arrays,
which make the output less pretty, but at least they show up.

Revision 3270 - Directory Listing
Modified Mon Jun 6 00:01:44 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
This file implements a Multi-Part parser object that allows you to tie
several input blanks to a single answer checker that can compare the
student's answers in several blanks in order to determine which are
correct.

For example:

$mp = MultiPart("x^2",1,-1)->with( singleResult => 1, checker => sub { my ($correct,$student,$self) = @_;  # get the parameters
my ($f,$x1,$x2) = @{$student};      # extract the student answers
Value::Error("Function can't be the identity") if ($f == 'x'); Value::Error("Function can't be constant") if ($f->isConstant);
return $f->eval(x=>$x1) == $f->eval(x=>$x2);
},
);
.
BEGIN_TEXT
$$f(x)$$ = \{$mp->ans_rule(20)\} produces the same value at $$x$$ = \{$mp->ans_rule(10)\} as it does at $$x$$ = \{$mp->ans_rule(10)\}. END_TEXT ANS($mp->cmp);

This produces three answer blanks all tied to the same checker, which
is supplied by the user when the MultiPart is specified.  This one
checks if two inputs to a function provide the same output.

The answer blanks can each produce a separate row in the results area
at the top of the page, or they con be combined into a single row, as
in this case.  The checker routine can provide error messages for
individual parts via the setMessage() method, or for the problem as a
whole, as above.  Finally, the ans_array() method can be used to
produce answer blanks for individual entries for those objects that
support such arrays.

See the documentation at the top of the file for additional details.

Revision 3269 - Directory Listing
Modified Sun Jun 5 23:52:11 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Added ability to have Matrix, Vector and Point objects produce input
arrays similar to the ones available in PGmatrixmacros.pg.  This
provides some substantial new functionality, and it may still have
some shaking down to do, but it should not affect the existing

To create an answer array for a matrix, vector or point, use the new
ans_array() or named_ans_array() methods of these objects.  For
example:

Context("Matrix");
$M = Matrix([1,2],[3,4]); BEGIN_TEXT \{$M->TeX\} = \{$M->ans_array\} END_TEXT ANS($M->cmp);

This creates a matrix, then prints it ans creates an answer array of
the appropriate size for the matrix.  The answer checker will
automatically know to handle the multiple entry blanks.

To used a named answer rule, use:

Context("Matrix");
$M = Matrix([1,2],[3,4]); BEGIN_TEXT \{$M->TeX\} = \{$M->named_ans_array('fred')\} END_TEXT NAMED_ANS(fred =>$M->cmp);

Both methods also take an optional argument that specifies the width
of the answer rules.  The default is 5.

You can get a multi-input point or vector array as well, and you can
make column vectors as follows:

Context("Vector");
$V = ColumnVector("1+x","3x","1-x"); BEGIN_TEXT \{$V->TeX\} = \{$V->ans_array\} END_TEXT ANS($V->cmp);

Note that you can make answer arrays for matrices and vectors of
formulas as well as constants, provided the formula is an explicit
matrix or vector of formulas, and is not obtained by matrix
arithmatic.

For concistencey, all objets now have ans_rule and named_ans_rule
methods as well.  The default width is 20 for these.

Revision 3268 - Directory Listing
Modified Sun Jun 5 23:36:28 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Removed some unused lines and comments.
Removed unnecessary spaces from around answer-rule-extension rules,
and made the TeX version of this rule be based on the width, as is
the case for ans_rule.

Revision 3267 - Directory Listing
Modified Sun Jun 5 23:25:20 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Allow for vectors to be marked as Column Vectors.

Revision 3266 - Directory Listing
Modified Sun Jun 5 23:24:29 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Better handling of delimiters that are explicitly set byt he user.
Fixed an incorrect call during object class promotion.
Added ability to sepcify that a vector is a Column Vector.

Revision 3265 - Directory Listing
Modified Sun Jun 5 23:22:20 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Better handling of open and close delimiters that are explicitly set.

Revision 3264 - Directory Listing
Modified Sun Jun 5 23:18:01 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Fix some incorrect calls when the promoting types to higher precedence
object types.

Revision 3263 - Directory Listing
Modified Sun Jun 5 23:08:32 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Fixed a bug with Matrix->perl() method that would cause an extra level
of nesting in constant matrices.

Revision 3261 - Directory Listing
Modified Sat Jun 4 13:50:41 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Avoid possible infinite loop with length and typeref calls.

Revision 3260 - Directory Listing
Modified Sat Jun 4 13:50:01 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Remove unneeded comment.

Revision 3259 - Directory Listing
Modified Fri Jun 3 22:03:23 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Added a ->with() method that lets you set fields of a Parser object as
you create it.  For example:

$f = Formula("sqrt(x)")->with(limits=>[0,3]); or ANS(Formula("(x+1)/x")->with(checkUndefinedPoints=>1,test_at=>[[0]])->cmp); or ANS($f->with(test_points=>[[0],[1],[2]])->cmp);

Revision 3258 - Directory Listing
Modified Fri Jun 3 19:14:00 2005 UTC (7 years, 11 months ago) by dpvc
Original Path: trunk/pg
Better control over number of points that can be undefined, and
new ability to specify required test points plus additional random
ones.  (Previously, if you set the test points, no random points were
generated.)  For example:

$f = Formula("(x^2-1)/(x-1)");$f->{test_at} = [[1]];  # test at x=1 plus random points

as opposed to

$f->{test_points} = [[-1],[0],[1]]; which tests only the points x = -1, x = 0 and x = 1. Revision 3257 - Directory Listing Modified Thu Jun 2 22:50:24 2005 UTC (7 years, 11 months ago) by dpvc Original Path: trunk/pg Modified the Formula answer checker to allow checking of points where the functions are undefined (i.e., attempt to check that the domains agree). This can be enabled by setting the checkundefinedPoints flag in the Context(), or in the formula itself. Test points where the function is undefined will be retained and the student's answer will have to be undefined at the same points. If the points are selected at random, the points where the function is undefined are kept in addition to the ones where it is defined, so the required number of test points where the function IS defined will still need to be found. The number of undefined points can be up to the number of defined points. This number can be reduced by setting the max_undefined flag. If you want to guarantee that a specific undefined point be tested, you can provide that point using the test_points field of the formula. For example: Context()->flags->set(checkUndefinedPoints=>1);$f = Formula("(x^2-1)/(x-1)");
$f->{test_points} = [[-1],[0],[1],[2]]; ANS($f->cmp);

will guarantee that the singularity at x=1 is tested, so the answer
x+1 will not be marked as correct.

If an answer matches at all the test points where the functions are
both defined, but some of the undefind points differ between the two
functions, the answer checker will generate an error message
indicating that the domains of the functions don't agree.  (This is
ONLY generated with the functions match except for that.)  This can be
controlled by setting the showDomainErrors flag in the formula's cmp()
call:

ANS($f->cmp(showDomainErrors=>0)); The default is to show these errors. Revision 3256 - Directory Listing Modified Thu Jun 2 19:53:06 2005 UTC (7 years, 11 months ago) by dpvc Original Path: trunk/pg Fixed an accidental hard-coded operation from always being "add" to being the correct operation when promoting the operations to an object of higher precedence. (But since formulas are normally the highest precedence, this will never have occurred.) Revision 3225 - Directory Listing Modified Sat May 14 01:42:25 2005 UTC (8 years ago) by dpvc Original Path: trunk/pg Changed loadMacros() to use search for amcros files via a user-cusomizable path of directories. This is specified in the global.conf file, and can include any number of directories. The path can include "." to mean look in the .pg file's directory. This makes it possible to store special macros files with the code that uses them. By default, the path is ".", the course/templates/macro directory, then the pg/macros directory (in that order). This duplicates the current behaviour, except for the ".", which is new. You must also make the updates to the global.conf, webwork2/lib/WeBWorK/PG.pm, and webwork2/lib/WeBWorK/PG/Local/pm files. Revision 3221 - Directory Listing Modified Mon May 2 00:58:00 2005 UTC (8 years ago) by dpvc Original Path: trunk/pg During a call(), if the evaluation produced an error message generated by Value::Error, report it, otherwise report a generic message. Revision 3220 - Directory Listing Modified Mon May 2 00:56:19 2005 UTC (8 years ago) by dpvc Original Path: trunk/pg Changed the call method to check if the function is actually defined inthe parser before calling the parser method. This allows things like C(n,r) to be moved here but not automatically included in the Context. Revision 3219 - Directory Listing Modified Fri Apr 29 22:30:55 2005 UTC (8 years ago) by dpvc Original Path: trunk/pg Added derivative of |x| as x/|x|. Revision 3218 - Directory Listing Modified Fri Apr 29 02:37:13 2005 UTC (8 years ago) by dpvc Original Path: trunk/pg Fixed a bug with adaptive parameters where the relative tolerance was not being properly computed. This allowed large constants to be treated as correct when they shouldn't be. Revision 3217 - Directory Listing Modified Wed Apr 27 21:30:13 2005 UTC (8 years ago) by dpvc Original Path: trunk/pg Copy parameters like limits, etc, to the newly created formula when 'C0' is added by the "upToConstant=>1" option in formula cmp(). Revision 3216 - Directory Listing Modified Wed Apr 27 21:29:10 2005 UTC (8 years ago) by dpvc Original Path: trunk/pg Use correct form of "x" with lists (rather than hack using split()). Revision 3214 - Directory Listing Modified Sat Apr 9 18:33:07 2005 UTC (8 years, 1 month ago) by gage Original Path: trunk/pg Provide a default warning subroutine if none has been defined. Revision 3210 - Directory Listing Modified Thu Mar 31 19:44:49 2005 UTC (8 years, 1 month ago) by dpvc Original Path: trunk/pg Added a check that the coordinates are numeric. This avoids an error were <i+j+k> was accepted as OK. Revision 3208 - Directory Listing Modified Tue Mar 29 19:16:36 2005 UTC (8 years, 1 month ago) by dpvc Original Path: trunk/pg Provide an easy means of generating a custom answer checker based on an user-supplied subroutine. Most of the work is done by the Parser's answer checker framework, and the user's routine is called at the point that the student's answer is compared to the correct answer. Revision 3207 - Directory Listing Modified Tue Mar 29 13:14:17 2005 UTC (8 years, 1 month ago) by dpvc Original Path: trunk/pg Handle error messages in the list checker better. In particular, make the error messages generated by custom checkers called on elements in the list look better. Also, in an ordered list, if the student enters extra values, call an answer checker to do a syntax check. (By default, use the first element again, but the user can supply a separate object to use for the checker using the extra=>object option.) Revision 3206 - Directory Listing Modified Tue Mar 29 03:25:29 2005 UTC (8 years, 1 month ago) by dpvc Original Path: trunk/pg Compartmentalize the equality check one step further. The cmp_equal method now calls a new cmp_compare method to perform the actual comparison (rather than use == directly). The cmp_compare method either calls a user-supplied checker routine, or defaults to using the == operator. The list checker also uses cmp_compare to check the individual items in the list. The list checker also calls a new cmp_list_checker method to perform the list check. This can be overridden by a user-supplied list-checking routine. To supply an alternate checking routine, use the "checker" option to the cmp() method of the correct answer object. For example: sub check { my ($correct,$student,$ans) = @_;
return 0 unless $correct->length ==$student->length;
my ($x,$y) = $student->value; # break up a point; return$x**2 - $y**2 = 1; # check if it is on a hyperbola } Point(1,0)->cmp(checker=>~~&check); This will check if the student's point lies on the given hyperbola. All the usual error messages will be issued if the student's answer is not a point, or is of the wrong dimension, etc. You can use sub list_check { my ($correct,$student,$ans) = @_;
my @correct = @{$correct}; my @student = @{$student};
...
return ($score,@errors); } List(...)->cmp(list_checker=>~~&list_check); to replace the list-checking routine with your own custom one. The$correct and $student values are array references to the elements in the lists provided by the professor and student. (Note that you do NOT get a List() object; this allows you to handle lists of formulas, since a List of formulas becomes a formula returning a list). The checker routine should return the number of correct elements in the student's list ($score), and a list of error messages produced while
checking the two lists (@errors).  (This is a list of messages, since
you might want to include an error for each entry in the list, for
example).

If your checker or list_checker routine wants to die with an error
message, use Value::Error(message).  This will put the message in the
WeBWorK display area at the top of the page.  If you use die(message),
or if the code fails due to a runtime error, then "pink screen of
death" will be produced indicating the error and asking the student to
report the error to the professor.

Revision 3205 - Directory Listing
Modified Tue Mar 29 02:55:10 2005 UTC (8 years, 1 month ago) by dpvc
Original Path: trunk/pg
Properly handle string values in postprocessing of vectors and other
related lists.  (It used to report a dimension error for things like 'NONE').

Revision 3204 - Directory Listing
Modified Mon Mar 28 23:47:50 2005 UTC (8 years, 1 month ago) by dpvc
Original Path: trunk/pg
Peroperly negate infinities even when reduceConstants is not in
effect.

Revision 3203 - Directory Listing
Modified Mon Mar 28 23:46:06 2005 UTC (8 years, 1 month ago) by dpvc
Original Path: trunk/pg
Handle extra parentheses better.

Revision 3202 - Directory Listing
Modified Mon Mar 28 23:45:27 2005 UTC (8 years, 1 month ago) by dpvc
Original Path: trunk/pg
Handle log as ln or log properly.

Revision 3199 - Directory Listing
Modified Sun Mar 20 13:13:44 2005 UTC (8 years, 2 months ago) by dpvc
Original Path: trunk/pg
Implements an experimental answer checker for implicitly defined
curves and surfaces.

Revision 3196 - Directory Listing
Modified Wed Mar 16 13:40:29 2005 UTC (8 years, 2 months ago) by dpvc
Original Path: trunk/pg
satisfies a given equality.  See the comments in the file for details

Revision 3195 - Directory Listing
Modified Wed Mar 16 13:36:33 2005 UTC (8 years, 2 months ago) by dpvc
Original Path: trunk/pg
Now that the uverloaded operators handle subclassing properly, we can
use promotePrecedence in the compare routines, just in case we define
a subclass with even HIGHER precedence!

Revision 3194 - Directory Listing
Modified Wed Mar 16 13:35:01 2005 UTC (8 years, 2 months ago) by dpvc
Original Path: trunk/pg
removed a commented-out line that was no longer needed.

Revision 3193 - Directory Listing
Modified Wed Mar 16 13:33:59 2005 UTC (8 years, 2 months ago) by dpvc
Original Path: trunk/pg
Fixed a typo.

Revision 3192 - Directory Listing
Modified Wed Mar 16 13:30:28 2005 UTC (8 years, 2 months ago) by dpvc
Original Path: trunk/pg
Update the overloaded operators so that they can be overridden by
subclasses of the predefined object classes.  This involves calling
the objects method rather than using a hard reference to the routine
in the parent class.

Also, change the name of the string comparison routine to
compare_string to avoid conflicts with cmp that is used to produce the

Finally, in Value.pm, promotePrecedence no longer has to do fancy
footwork to get "special" precedence to work (this was a hack to get
around the misfeature of the overloaded operators -- now that that is
being handled correctly, there is no need for it).

Revision 3191 - Directory Listing
Modified Wed Mar 16 04:17:35 2005 UTC (8 years, 2 months ago) by dpvc
Original Path: trunk/pg
Fixed error with asec and acsc where the parameters were not being
passed properly.

Revision 3187 - Directory Listing
Modified Sat Feb 26 23:03:12 2005 UTC (8 years, 2 months ago) by gage
Original Path: trunk/pg
Allow subclasses of AnswerEvalutor to be used.  Check for a match

Revision 3180 - Directory Listing
Modified Sat Feb 19 16:47:36 2005 UTC (8 years, 3 months ago) by gage
Original Path: trunk/pg
Small correction that makes sure that _init subroutines are read
properly.  The original works on some versions of perl, but not on
others.

Revision 3177 - Directory Listing
Modified Fri Feb 18 00:04:09 2005 UTC (8 years, 3 months ago) by dpvc
Original Path: trunk/pg
Missed one situation when making the previous update.  Fixed it.

Revision 3174 - Directory Listing
Modified Thu Feb 17 16:12:45 2005 UTC (8 years, 3 months ago) by dpvc
Original Path: trunk/pg
Fixed it so that direct calls to the add, sub, mult, etc functions
would work as expected (even though there is no need to call them directly).

Revision 3172 - Directory Listing
Modified Tue Feb 15 21:58:54 2005 UTC (8 years, 3 months ago) by dpvc
Original Path: trunk/pg
Updated the answer checkers so that you can more easily specify how
the correct answer shoudl be displayed.  In the past, you could use
something like Real(sqrt(2))->cmp(correct_ans=>"sqrt(2)") to do this,
but that is awkward.  Now the Compute() function (which parses and
then evaluates a string) sets things up so that the original string
will be what is used as the correct answer.  That means
Compute("sqrt(2)")->cmp will have the same result as the example
above.

You can also set the {correct_ans} properly of any Parser object to
have that value used as the correct answer.  For example

$x = Real(sqrt(2));$x->{correct_ans} = "sqrt(2)";
ANS($x->cmp) would also produce the same answer checker as the two previous examples. All three methods should work. Use the one that is most convenient for you. Revision 3171 - Directory Listing Modified Tue Feb 15 21:53:23 2005 UTC (8 years, 3 months ago) by dpvc Original Path: trunk/pg Improved the Real(), Complex(), Point(), Vector(), Matrix() and String() constructors so that they will process formulas passed to them as strings rather than requiring perl objects for these. For example, you can use Real("2/3") rather than Real(2/3) if you want. Also, Real("1+x") will return a formula returning a real (essentially the same as Formula("1+x") in this case). Revision 3166 - Directory Listing Modified Tue Feb 15 02:20:52 2005 UTC (8 years, 3 months ago) by dpvc Original Path: trunk/pg Fixed an error with Matrix() that could cause it to loop infinitely when bad data is passed to it. Also, allow Matrix(), Point(), Vector(), and Real() to accept string values that are evaluated to produce the value returned. (Sorry, accidentally committed with a blank message.) Revision 3165 - Directory Listing Modified Tue Feb 15 02:16:10 2005 UTC (8 years, 3 months ago) by dpvc Original Path: trunk/pg *** empty log message *** Revision 3159 - Directory Listing Modified Thu Feb 10 22:34:01 2005 UTC (8 years, 3 months ago) by dpvc Original Path: trunk/pg Fixed a problem that caused errors to occur when ImplicitPlane() was called with a formula whose constant term is a negative number that is produced by a computation. Revision 3158 - Directory Listing Modified Wed Feb 9 18:36:18 2005 UTC (8 years, 3 months ago) by apizer Original Path: trunk/pg Allow labels A - ZZ Arnie Revision 3136 - Directory Listing Modified Sat Feb 5 14:07:55 2005 UTC (8 years, 3 months ago) by jj Original Path: trunk/pg Work around IE bug for ordered lists. Maybe someday this can be undone. Revision 3093 - Directory Listing Modified Sun Jan 16 00:52:49 2005 UTC (8 years, 4 months ago) by gage Original Path: trunk/pg Undoing some of the temporary changes I made to the warn message. This may break what happens with xmlrpc however. (sigh) Revision 3074 - Directory Listing Modified Tue Jan 4 17:56:33 2005 UTC (8 years, 4 months ago) by dpvc Original Path: trunk/pg Fixed index problem with matrix multiplciation. (It was returning the transpose!) Revision 3071 - Directory Listing Modified Sat Jan 1 22:29:41 2005 UTC (8 years, 4 months ago) by gage Original Path: trunk/pg Temporary modifications which allow the Warning mechanisms to work when using the XML access methods. This needs to be looked at again. There is also a problem with defining permissions for creating directories. There is a temporary #FIXME that seems to work. Revision 3047 - Directory Listing Modified Sat Dec 18 21:52:58 2004 UTC (8 years, 5 months ago) by gage Original Path: trunk/pg Changed comment to This answer is the same as the one you just submitted or previewed. This addreses bug #557 Revision 3039 - Directory Listing Modified Fri Dec 17 17:11:46 2004 UTC (8 years, 5 months ago) by gage Original Path: trunk/pg Added a check to handle the case when the$errors flag was not defined.

Revision 2991 - Directory Listing
Modified Tue Nov 9 15:23:38 2004 UTC (8 years, 6 months ago) by gage
Original Path: trunk/pg
Defined some variables that were causing warning messages.
Someone more familiar with this script should look at this
to make sure that this subsection of the parser is working correctly.

-- Mike

Revision 2988 - Directory Listing
Modified Fri Nov 5 17:54:12 2004 UTC (8 years, 6 months ago) by jj
Original Path: trunk/pg
Avoids some name collisions for images converted from gif to png in
hardcopy, specifically if two problems have different gif images
with the same name (but the gifs are in different directories).  Now one
png won't overwrite the other.

Revision 2986 - Directory Listing
Modified Thu Nov 4 22:01:18 2004 UTC (8 years, 6 months ago) by apizer
Original Path: trunk/pg
relative tolerence was not being used correctly. Fixed this.

Arnie

Revision 2985 - Directory Listing
Modified Wed Nov 3 22:39:21 2004 UTC (8 years, 6 months ago) by dpvc
Original Path: trunk/pg
Fixed a bug in processing absolute values with implicit
multiplication.

Revision 2984 - Directory Listing
Modified Wed Nov 3 22:00:56 2004 UTC (8 years, 6 months ago) by dpvc
Original Path: trunk/pg
Modifications needed for the control of jsMath's "missing font"
message.

Revision 2982 - Directory Listing
Modified Wed Nov 3 21:27:42 2004 UTC (8 years, 6 months ago) by dpvc
Original Path: trunk/pg
Fixed an error where any plane is accepted if the d is 0 in
ax + by + cz = 0.

Revision 2972 - Directory Listing
Modified Tue Nov 2 20:47:23 2004 UTC (8 years, 6 months ago) by sh002i
Original Path: trunk/pg

Revision 2969 - Directory Listing
Modified Tue Nov 2 01:55:21 2004 UTC (8 years, 6 months ago) by dpvc
Original Path: trunk/pg
Fixed typo in a comment.

Revision 2958 - Directory Listing
Modified Sun Oct 24 14:36:35 2004 UTC (8 years, 6 months ago) by jj
Original Path: trunk/pg
This seems to fix bug 713.  I don't see why one would want the line below
commented out.

Revision 2957 - Directory Listing
Modified Sun Oct 24 14:33:36 2004 UTC (8 years, 6 months ago) by jj
Original Path: trunk/pg
Make combinations function C(n,k) return 0 when k>n, which is standard.
Maybe P(n,k) should do the same instead of throwing an error?

Revision 2938 - Directory Listing
Modified Tue Oct 19 00:24:47 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Added reduction rules to remove redundent negatives.
Override string and TeX methods that avoid redundent parentheses.

Revision 2937 - Directory Listing
Modified Tue Oct 19 00:23:01 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Added "areParallel" method as a synonym for "isParallel".

Revision 2936 - Directory Listing
Modified Tue Oct 19 00:22:07 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Don't promote an object unless it is a Value object.

Revision 2935 - Directory Listing
Modified Tue Oct 19 00:20:02 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Prevent automatically reducing negatives in student answer, so the
sign doesn't change behind our back.

Revision 2934 - Directory Listing
Modified Tue Oct 19 00:15:54 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Handle error messages better.  Produce an error if the student answer
is a constant vector.  Prevent reduction of some negatives in order to
avoid -(a+bt).  Allow students to provide answer in terms of points
rather than vectors.

Revision 2933 - Directory Listing
Modified Tue Oct 19 00:11:50 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Changed the order of variables in calls to Plane() so that it
corresponds to the usage in ImplictPlane().  Also fixed a typo in
capitalization of @N.

Revision 2932 - Directory Listing
Modified Tue Oct 19 00:08:04 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Updated i(), j() and k() functions to check if the Parser is loaded,
and if not, return a value that will cause perl to report a better
error than calling the parser outside of its normal context.

Since the current answer checkers call perl directly to evaluate their
expressions, when a variable is used by a student that is not a
variable used by the checker, this can cause perl to try to parse
those variables as function calls, or other perl constructs (like
matches if you use 'm' or translations if you use 'y').  This is bad
(and is not a problem with the new parser).

In particular, if the student uses 'k' in a formula for which k is not
defined, for example, perl will try to call the k() function.

Revision 2916 - Directory Listing
Modified Wed Oct 13 18:41:07 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Clear error messages before doing the answer check (this clears old
messages left over inclass this checker is called by another one,
e.g. when using UNORDERD_ANS()).

Revision 2915 - Directory Listing
Modified Wed Oct 13 03:31:17 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Trap errors in functions that are not native perl functions (like
acos() and csc(), etc.).  In the past, if an error occurred within the
definition of a function, the error message that was reported was the
internal error within the definition of the function.  For example
csc(0) would report "illegal division by zero", while acos(-2) would
report "can't take sqrt of -3".  Now the errors will be "can't take
csc of 0" and "can't take acos of -2".

Revision 2914 - Directory Listing
Modified Wed Oct 13 02:41:33 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Added support for useBaseTenLogs to make log() work like ln() or
log10() depending on the value in the course.conf file.

Also fixed a bug that caused the WeBWorK parameters not to be
copied into contexts by initCopy().

Revision 2912 - Directory Listing
Modified Wed Oct 13 01:35:51 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg

Revision 2909 - Directory Listing
Modified Tue Oct 12 20:49:25 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
In Complex context, make sqrt() and log() of negative numbers return
their complex values.  Also make ^ and ** do the same with negative
bases.  These can be controlled by setting/clearing the
"negativeIsComplex" entry for these functions and operators.

Revision 2908 - Directory Listing
Modified Tue Oct 12 20:46:43 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Don't allow 'nan' to be made into a Real object.

Revision 2907 - Directory Listing
Modified Tue Oct 12 20:44:20 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
In StandardPrecedence mode, make the precedence of function apply
match that in use by that AlgParser.

Revision 2900 - Directory Listing
Modified Tue Oct 12 00:52:47 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Don't give coordinate hints during parallel vector checks.  Also fixed
a typo.

Revision 2855 - Directory Listing
Modified Sat Oct 2 11:55:31 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
added generic string-only context, and converted contextABCD and
contextTF to use it.

Revision 2842 - Directory Listing
Modified Wed Sep 29 15:47:30 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Allow string constants to include spaces.

Revision 2832 - Directory Listing
Modified Mon Sep 27 17:47:04 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Fix problem with TeX output of implicit multiplication between
items that would put two digits next to each other (like 2 3^2).

Revision 2824 - Directory Listing
Modified Thu Sep 23 21:31:41 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Two new Parser contexts, one for matching problems involving answers
like A, B, C and D, the other for T/F answers.  These contexts have an
advantage over the standard str_cmp() checker in that it will give

Revision 2823 - Directory Listing
Modified Thu Sep 23 21:09:14 2004 UTC (8 years, 7 months ago) by dpvc
Original Path: trunk/pg
Fixed Parser so that you can replace the Formula class as well as the
other object types.

Revision 2803 - Directory Listing
Modified Sun Sep 19 15:11:08 2004 UTC (8 years, 8 months ago) by dpvc
Original Path: trunk/pg
The $Parser::class variable was being handled after the "use" statements at the end, so had to put a BEGIN around it. Revision 2802 - Directory Listing Modified Sun Sep 19 14:43:32 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Eliminated unneeded parentheses in TeX output when unary minus and plus are used with fractions. Revision 2801 - Directory Listing Modified Sun Sep 19 14:41:57 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg More changes for the isZero and isOne checks. (Missed this file when I committed the others.) Revision 2800 - Directory Listing Modified Sun Sep 19 14:27:39 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Added isZero and isOne checks for Parser::Value objects (i.e., for constants within formulas). These now correctly handle vector and matrices, in particular. The isOne and isZero checks are used in the reduce() method to simplify formulas. Revision 2799 - Directory Listing Modified Sun Sep 19 11:49:32 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Added a new flag to the Formula()->cmp answer checker that allows a constant-valued formula to be evaluated and then use the checker for the resulting type. This is useful when you want the correct answer for a numeric check to be shown in a symbolic form (like "pi/4") rather than as a decimal number. To do this, use Formula("pi/4")->cmp(eval=>1); rather than Real(pi/4)->cmp, which would show the correct answer as 0.785398. Note that Formula("pi/4")->cmp would also match against pi/4, but it does it as a function rather than a number, so error messages might be issued indicating that the checker is expecting a formula that returns a number, rather than just a number; this might be confusing to a student. It would also accept answers like "pi/4-x+x" as correct, whereas with eval=>1 this would produce an error message saying that the answer was supposed to be a number not a formula returning a number. Similarly, if you want to show sqrt(2)/2 as the correct answer, use Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0); Formula("sqrt(2)/2")->cmp(eval=>1); The first line tells the parser not to automatically reduce expressions that only involve constants, so that the value of the formula in the second line will not be reduced to a decimal before the cmp method is called. Revision 2798 - Directory Listing Modified Sun Sep 19 11:29:06 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Make Formula()->eval return a Real (ie, aValue::Real object) rather than a perl number. That way, you can use$f->eval->cmp rather than
needing Real($f->eval)->cmp, and so on. Also make Formula()->perl do the same, for consistency. (This could have been accomplished by having the Parser::Number class evaluate to a Real, but for efficiency during computation, we put off making the Real object until the end. It probably doesn't make that big a difference, but every little bit helps.) Revision 2797 - Directory Listing Modified Sun Sep 19 01:16:10 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg File needed to reduction flags that was accidentally left out of the previous commit. Sorry! Revision 2796 - Directory Listing Modified Sun Sep 19 01:15:03 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Added flags that control the reductions performed by Formula()->reduce. Each reduction operation can be individually enabled or disabled in the context, and in the reduce() call itself. More complex reductions need to be developed. Revision 2795 - Directory Listing Modified Sat Sep 18 23:16:37 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed typo in addParens method name. Revision 2791 - Directory Listing Modified Thu Sep 16 23:43:54 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Don't reduce constants in the display of student answers (so they can tell how the parser interprets their answer). The drawback is that the final number is not displayed. (We may need to add more columns to the results display.) Revision 2790 - Directory Listing Modified Thu Sep 16 23:03:03 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Use extra parens in the string version of the student's answer, but not in the professor's (unless the problem sets the showExtraParens flag). Revision 2789 - Directory Listing Modified Thu Sep 16 22:24:32 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Added context flags to control automatic reduction of operations that involve only constant values. The default is to combine constants, but this can now be disabled. Also added a new flag to control the addition of extra parentheses that make string values painfully unambiguous (these are for situations that students tend to get wrong). By default this is turned off (so that professor answers won't contain excessive parentheses), but the answer checker will be made to turn this on for student answers. Finally, when extra parens are added to formulas, they alternate between ( ) and [ ] to make it easier to read. Revision 2788 - Directory Listing Modified Thu Sep 16 22:19:59 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Produce an error when attempting to auto-create a formula using a function that has been removed from the current context. Revision 2781 - Directory Listing Modified Tue Sep 14 21:36:45 2004 UTC (8 years, 8 months ago) by apizer Original Path: trunk/pg Fixed bug with useBaseTenLog Arnie Revision 2772 - Directory Listing Modified Sun Sep 12 11:11:47 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Make partial credit in list answer checkers be the default (now that WeBWorK can handle this). Revision 2771 - Directory Listing Modified Sat Sep 11 17:11:29 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed a bug with constants where the values were being cached so that changes in the context were not being reflected in the formulas that use them. Revision 2768 - Directory Listing Modified Fri Sep 10 23:55:31 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg When creating formulas from functions, don't evaluate even if the formula is constant. (This makes it possible to create automatically create formulas even if they only contain constants.) Revision 2757 - Directory Listing Modified Fri Sep 10 14:50:14 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg No longer produces the message that there are too many answers if hints are being shown about individual entries in a list. (This gave away the answer about which ones to remove.) Revision 2756 - Directory Listing Modified Fri Sep 10 14:48:35 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Changed the error message produced for functions that have been removed from the parser. I hope this will be more appropriate for students. Revision 2746 - Directory Listing Modified Wed Sep 8 02:00:52 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed error where AlgParser produces \sech and \csch, which are not defined in TeX. This fixes bug #665. Revision 2733 - Directory Listing Modified Sat Sep 4 20:45:31 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg This file defined an answer checker for lists of variable names (ordered or unordered, and optionally enclosed in parentheses). You can use this answer checker for questions that give a system of equations and ask which variables are the dependent and which the independent variables, for example. Revision 2732 - Directory Listing Modified Sat Sep 4 20:42:45 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg This file provides an answer checker that determines whether two students answers compose to form a given function. The student answers are not allowed to be the identity function, or a function that is trivially generated from the composition. See the comments within the file for details about how to use it. Revision 2731 - Directory Listing Modified Sat Sep 4 20:40:43 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg This file defines a NumberWithUnits class for that provides an answer checker for numbers with units. It uses the same units package that the standard answer checkers use, but this will eventually be replaced by a more complete Units class within the parser itself. The class produces a preview string in which the units show appropriately. Revision 2730 - Directory Listing Modified Sat Sep 4 20:31:55 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg This file defines a DifferenceQuotient class that provides an answer checker for difference quotients. These include a variable "dx" (or a user specified one) that can be used as part of the formula, and the student must simplify the answer at least enough to remove the dx from the denominator. Revision 2729 - Directory Listing Modified Sat Sep 4 20:29:52 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg This file provides some convenient tools for generating random points and vectors that are not the zero vector, plus some other misc. utilities. Revision 2728 - Directory Listing Modified Sat Sep 4 20:28:33 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg This file defines a ParametricLine class that provides an answser checker for lines in any dimension given parametrically. The answer checker will recognize the line even if the point and direction vector used by the student are not the same as the ones used by the professor. See the comments within the file for examples of how to use it. Revision 2727 - Directory Listing Modified Sat Sep 4 20:26:23 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg This macro file defines an ImplicitPlane (and inplicit line) class of Parser object that provides an answer checker for planes (or hyperplanes in any dimension) of the form ax + by + cz = d. Students can provide their answer in any (linear) form that is equivalent to this. The class accepts several formats for specifying the correct-answer plane. Revision 2726 - Directory Listing Modified Sat Sep 4 20:21:32 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg These files provide contexts for the Parser in which only limited operations are allowed. The LimitedNumeric context is analogous to strict_num_cmp(). The other contexts are similar, but for the indicated type of answer. In the LimitedVector context, for example, the student can enter vectors, and can perform numeric operations within the coordinates of the vectors, but can't perform vector operations like vector addition or cross product. Revision 2701 - Directory Listing Modified Sat Aug 28 15:53:09 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Only convert (f(x))^2 to f^2(x) for specified functions f (as marked in the Context). Revision 2698 - Directory Listing Modified Sat Aug 28 13:52:33 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Add better error reporting in PG translator. In particular, these changes add two new features: 1) produce a full stack trace when a .pg file dies, and 2) convert (eval nnn) references to filenames, when possible, in warn and die messages while processing a .pg file. There is also a change in the webwork tree that is needed to make this all work, so be sure to apply updates in both trees. Revision 2697 - Directory Listing Modified Sat Aug 28 12:43:57 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Two more minor TeX improvements. Revision 2696 - Directory Listing Modified Sat Aug 28 12:34:56 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Improved TeX and string output in a number of situations. Improved use of parentheses to avoid things like x+-3. Fixed wrong parentheses in powers. Display (sin(x))^2 as sin^2(x) in TeX output. Revision 2692 - Directory Listing Modified Fri Aug 27 21:49:36 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Use the current context if the answer doesn't have one itself (like with Value objects). Revision 2688 - Directory Listing Modified Fri Aug 27 19:42:59 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Added in functMaxConstantOfIntegration support in the adaptive parameter answer checking. Also added a flag to the formula answer checker that allows checking a formula up to a constant (for integration problems). This really just adds a new parameter to the context and adds that to the formula, so there is nothing deep about this. ANS(Formula("2x")->cmp(upToConstant=>1)); Finally, don't look for adaptive parameters if they aren't actually used in the professor's formula (even if they are defined). Revision 2687 - Directory Listing Modified Fri Aug 27 00:28:27 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Added ability to have linear adaptive parameters in the function answer checker. It only works for real-valued functions, though. To use a parameter, use Context()->variables->add(a=>'Parameter'); and then use 'a' as a variable within your answer. The student will not be allowed to enter the parameter, but the professor will. Note that the correct answer will show the full professor's answer, including the parameters, even though the student can't type it. Is this the right behaviour? Revision 2684 - Directory Listing Modified Tue Aug 24 21:35:21 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Added the makeUnion call that was removed earlier. The AnswerChecker for formulas sometimes called it (when the student's answer is constant). Revision 2682 - Directory Listing Modified Tue Aug 24 03:36:54 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed a bug with sin^2 x that introduced when I adjusted the error report for implied multiplication. Revision 2681 - Directory Listing Modified Tue Aug 24 03:34:47 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg TeX mode now adds parentheses around fractions, when needed. Revision 2680 - Directory Listing Modified Tue Aug 24 03:33:30 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Made string function look for a string field in teh definition of the function as an override for its name. (This way, you can make asin appear as arcsin or even sin^(-1) if you want). Revision 2679 - Directory Listing Modified Tue Aug 24 03:31:47 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed wrong error messages when operators are undefined in a context. Revision 2678 - Directory Listing Modified Mon Aug 23 23:55:37 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Modified the parser so that the classes for the various object constructors are stored in the context table rather than hard-coded into the parser. That way, you can override the default classes with your own. This gives you even more complete control to modify the parser. (You had been able to replace the definitions of operators, functions and list-like objects, but could not override the behaviour of numbers, strings, variables, and so on. Now you can.) This effects most of the files, but only by changing the name of the calls that create the various objects. There are also a couple of other minor fixes. Revision 2676 - Directory Listing Modified Mon Aug 23 05:00:16 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Better highlighting for syntax error involving implied multiplication. (No highlighted had been done in the past.) Revision 2675 - Directory Listing Modified Mon Aug 23 04:59:05 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Get the type right when evaluating an AbsoluteValue and obtaining a Value object. Revision 2674 - Directory Listing Modified Mon Aug 23 04:58:00 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Remove more lines in error messages produced while evaluation student answers. Revision 2673 - Directory Listing Modified Mon Aug 23 01:21:27 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Moved WW-specific routines from Parser.pm to WeBWorK.pm. Changed error reporting when the error message was not generated by the parser directly. (The stack trace and line number references are removed before the error is reported.) Revision 2672 - Directory Listing Modified Sun Aug 22 22:46:14 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Added easy calls to disable/enable collections of functions or individual functions in the current context. So you can say Parser::Context::Functions::Disable('Trig'); to disallow the use of trig functions, or Parser::Context::Functions::Disable('Trig','Numeric'); Parser::Context::Functions::Enable('sqrt'); to disable trig and numeric functions (like log, exp, abs, etc) but allow sqrt. Note that disabling sqrt() does not disable x^(1/2) (this must be done through disabling the ^ and ** operators), and disabling abs() does not disable |x| (which must be done by removing the '|' definition from the Context's parens list). Revision 2671 - Directory Listing Modified Sun Aug 22 21:18:06 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Fixed some inconsistencies between handing of matrices within the parser and Value packages. Added a predefined Matrix context. Revision 2670 - Directory Listing Modified Sun Aug 22 16:06:28 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Had the default granularity the wrong direction. Revision 2669 - Directory Listing Modified Sun Aug 22 15:42:50 2004 UTC (8 years, 8 months ago) by dpvc Original Path: trunk/pg Made the granularity of the test-point intervals be a parameter that can be set on a global or variable-by-variable basis, so this is now controlable from the .pg file. For example: Context("Numeric")->variables->are( k=>{limits=>[1,10], resolution=>1}, x=>{limits=>[-2,2], granularity=>1000}, ); will make k be a variable that will only take on integer values between 1 and 10, and x a variable that will take on one of 1000 different values evenly spaced between -2 and 2 (so resolution is 4/1000 in this case). These parameters can also be set for an individual formula:$f = Formula("k^2-1");
$f->{resolution} = 1;$f->{limits} = [0,10];

Revision 2668 - Directory Listing
Modified Sun Aug 22 02:55:38 2004 UTC (8 years, 8 months ago) by dpvc
Original Path: trunk/pg
Fixed TeX output of Matrices to use \array rather than \matrix for
constant matrices).  Made intervals produce formulas when of of the
endpoints is a formula.  Removed unneeded comment.

Revision 2667 - Directory Listing
Modified Sun Aug 22 02:51:53 2004 UTC (8 years, 8 months ago) by dpvc
Original Path: trunk/pg
formulas that return points, vectors or matrices.

Revision 2666 - Directory Listing
Modified Sun Aug 22 00:56:32 2004 UTC (8 years, 8 months ago) by dpvc
Original Path: trunk/pg
Formulas can now be compared even if their variables are complex
numbers, or even points or vectors!  This makes it possible to ask
students for complex functions like z^2+i and so on.

You can specify limits for variables either via
Context()->variables->set(x=>{limits=>[0,1]})  (for reals) or
Context()->variables->set(z=>{limits=>[[-2,2],[0,1]]}) (for complexes).
Similarly for points and vectors (where the number of sub arrays
depends on the dimension).  You can also give the limits for a
specific formula by assigning to its ->{limits} field:

$f = Formula("sqrt(x-10)");$f->{limits} = [10,12];

There are now named variable types for 'Point2D', 'Point3D',
'Vector2D' and 'Vector3D', in addition to 'Real' and 'Complex'.
You can also specify a variable type by giving an explicit instance of
a value of the given type.  E.g.

Context()->variables->add(r=>Vector(0,0,0));   # a vector in R^3
Context()->variables->add(X=>'Vector3D');      # a vector in R^3

There still needs to be more error checking in processing
user-supplied limits, but I'm not sure how much overhead is worth it.

Revision 2665 - Directory Listing
Modified Sun Aug 22 00:41:44 2004 UTC (8 years, 8 months ago) by dpvc
Original Path: trunk/pg
Made the default context be Numeric context rather than Full context.
Since there is only one variable in this context, it will speed up
function answer checking.  It will also encourage you to choose the
correct context explicitly.

Also changed Complex context to have z as the only variable.  If you
want x and y as reals, you need to add them in by hand.  Again, this
is for efficiency in answer checking.

Revision 2664 - Directory Listing
Modified Sat Aug 21 22:02:14 2004 UTC (8 years, 8 months ago) by dpvc
Original Path: trunk/pg
Added a file to perform WeBWorK-specific modifications to the
Parser/Value packages.  (I've tried to make these independent of
WeBWorK, so you can use them in other perl code if you want to.)

The parameters for fuzzy reals and some of the other parameters now
are taken from the pg->{ansEvalDefaults} values (as defined in
global.conf or course.conf).  More still needs to be done with this,
however.

Revision 2661 - Directory Listing
Modified Fri Aug 20 15:56:56 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
A number of fixes to make handing lists work better.  In particular,
you can now specify checks for whether the right kinds of parentheses
(or none at all) are used on the student's answer.  Some of the flags
for the list checker have been changed to accommodate this.

Revision 2660 - Directory Listing
Modified Fri Aug 20 15:52:32 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
A number of adjustments to get negative infinities to work better.
They used to be stored as separate Parser strings, but now they are
flagged versions of a single string.

All of the problems are really due to the fact that there is no
Infinity class in the Parser (only a Value version).  That should be
changed, but will require some work, and can be put off for now.

It would be best if the classes within the two packages would match up
nearly 1-to-1, but for historical reasons, they don't.  Since the
introduction of Real, String and Infinity classes to the Value
package, The Infinity class is the one main difference between the
two, and once that is fixed, everything needs to be looked over to
check for unnecessary complications due to the historical lack of classes
in one or the other package.

Revision 2658 - Directory Listing
Modified Fri Aug 20 11:17:06 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Make blank patterns be ^$(which should never match) rather than empty (which always matches). this fixes a problem where if a context has no functions, for example, the parser would attempt to create function calls to a function named ''. Revision 2657 - Directory Listing Modified Fri Aug 20 11:13:51 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Handle trapped error messages that are not produced by the parser error reporter (i.e., by bugs within the parser itself). Also added an error if implied multiplication is attempted when the operator for it is not defined in the current context. Revision 2656 - Directory Listing Modified Fri Aug 20 02:13:38 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg We need to protect the HTML in the professor's answer so that if it contains <, for example, it won't disappear. Revision 2655 - Directory Listing Modified Fri Aug 20 02:11:50 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed typo. Revision 2654 - Directory Listing Modified Fri Aug 20 02:11:08 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Avoid possible infinite recursion in promotePrecedence() when special precedence is used. Revision 2653 - Directory Listing Modified Thu Aug 19 17:31:18 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed error with handling of +infinity and -infinity. (They had been defined as strings, but now we can let the + and - operators handle them). Revision 2650 - Directory Listing Modified Thu Aug 19 14:23:00 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Added Parser::Number::NoDecimals() function that causes the parser to give an error message when the student types a decimal number. This means the student must enter fractions as fractions, or values like sqrt(2) or pi/4 symbolically not numerically. Revision 2649 - Directory Listing Modified Thu Aug 19 14:19:32 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed an error in the generation of regexp patterns for the various data types. Revision 2648 - Directory Listing Modified Thu Aug 19 12:38:47 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg The answer checkers now work with subclasses of Formulas that are not part of the Value:: package tree itself (we call Value::isFormula() rather than checking the class directly). I also removed the various cmp_* flags that stored method names as they ended up not needing to be used (they were intended as a means of overriding the default method names, but subclassing turned out to be a better approach). I moved some initialization of the answer checker out of the anonymous subroutine that is installed in the checker and just have that subroutine call the correct answer's main checker (which I renamed). Finally, I changed the student_ans value to be an HTMLized version of the student answer, since the student could include things like < in his answer (e.g., for vectors), in which case his whole answer might disappear. I wonder if this couldn't be handled better at a higher level, as it seems wrong to make the student_ans be HTML rather than the parsed string. I originally thought Problem.pm could do the protecting of HTML special characters, but this won't work without additional changes, since some answer checkers put HTML into student_ans to mark sytanx errors in the student answer, and you DON'T want to protect those HTML characters. The student_ans field is probably being misused in this, and there might want to be another field that gets used by Problem.pm in place of student_ans (which can be HTML protected) when it is non-empty; say student_HTML or something like that. The answer checkers could use that field if it wants to add HTML to the student answer, and student_ans otherwise, with the assurance that it's HTML characters will be protected. That way, if a second answer checker calls the first (like some list checkers do), then the second checker doesn't have to worry about removing HTML from the student ans, and doesn't ahve to wonder whether the student_ans actually contains an error message or syntax markings rather than the actual student answer. Revision 2647 - Directory Listing Modified Thu Aug 19 12:18:56 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Context() now accepts a reference to an actual Context object rather than a name of a predefined context, and will switch to that. Revision 2646 - Directory Listing Modified Thu Aug 19 12:16:41 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Make it possible to create subclasses of objects in the value package that are not actually in the Value:: package tree. This makes it possible to have .pl files (that are run via loadMacros) that create new Value object classes that are local to the problem rather than global to the system. (With mod_perl, if a .pl file added to the Value:: tree itself, the results would be persistent, and this could adversely affect future problems processed by the same httpd child process. It could lead to "redefined subroutine" errors, or worse.) This provides a safe way to extend the parser on a problem-specific basis. This technique is used in the line and plane answer checkers (coming soon), for example. If such a checker becomes widely used, it can always be added into the Value:: tree at a later time. Revision 2645 - Directory Listing Modified Thu Aug 19 12:02:15 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Make sure equality always returns a defined value, and put spaces around the equal sign in string output. Revision 2644 - Directory Listing Modified Thu Aug 19 12:01:12 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Make sure loadMacros() doesn't try to load these files more than once. Revision 2643 - Directory Listing Modified Thu Aug 19 11:55:56 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Use the standard precedences rather than the experimental ones by default. The professor will need to specificaly request the non-standard ones, for now. Revision 2634 - Directory Listing Modified Tue Aug 17 15:21:58 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Changed the string used for the student answer to be taken from the unevaluated formula rather than the fully-evaluated one. This leaves constants unreplaced, for one thing. Currently the parser combines constants automatically during the parse [which should be controllable by a flag], so student answers that produce numbers are fully evaluated at this point already, except for constant substitution. This could be changed so that even for numberic results, the student sees the parsed expression (rather than the numeric result), which might help them identify where they and the parser differ in their interpretation. It is still nice to see the final computed result, however, but there is no place to show the parsed input as well as the final result. One solution would be to add another column (wasting space). Another would be to make the value shown be "parsed-value = computed-value" when they are not the same thing. A bit ugly, but works within the current framework. Revision 2632 - Directory Listing Modified Tue Aug 17 12:05:18 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed typo in name of random generator. Revision 2629 - Directory Listing Modified Tue Aug 17 02:01:27 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed a number of minor problems with creating perl functions from formulas (this is done automatically as part of the function answer checker, so is showing up now that I have that checker in place). Also improved error messages in the function answer checker, and fixed a bug when students enter a constant list or union when the answer checker expects formulas. Revision 2628 - Directory Listing Modified Mon Aug 16 21:41:05 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Allow parser "constants" to be (in reality) formulas. That way, for example, you can defined T, N and B to be the formulas for the unit tangent, normal and binormal of a space curve (as functions of "t") and the student can write anwers in terms of T, N and B (without having to compute them). You could have created FUNCTIONS T(t), N(t) and B(t), and added them to the parser to get almost the same effect, but the students would have had to include the "(t)". (If you want that, go ahead and do it that way.) Revision 2627 - Directory Listing Modified Mon Aug 16 20:22:16 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Removed unwanted side-effects of some type-match checks, and moved the ignoreStrings flag so that it is available for the checkers of ANY type. Revision 2626 - Directory Listing Modified Mon Aug 16 19:44:26 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg One more fix for handling intervals properly (I think it's really right this time). Also, named constants that end in numbers will produce TeX output with the number as a subscript (this was already true for variable names). Revision 2625 - Directory Listing Modified Mon Aug 16 18:35:12 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Added string comparison to all Value object classes (to compare the string value of an object to another string). Overloaded perl '.' operator to do dot product when the operands are formulas returning vectors. (Part of the auto-generation of formulas). A few improvements to real and complex class output results. Made Union class slightly more robust and removed need for makeUnion method other than in the Union itself. Revision 2624 - Directory Listing Modified Mon Aug 16 13:44:45 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Added support for unorderd list or formulas with partial credit. Fixed type mismatch reporting in formula answer checker. Fixed an error with Unions producing incorrect perl versions under some circumstances. Revision 2622 - Directory Listing Modified Sun Aug 15 22:46:57 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Created the first draft of the Parser's function answer checker. Some work still needs to be done, in particular, type mismatches are not being reported, and lists are being processed only as ordered lists with no partial credit. This doesn't implement everything from fun_cmp. In particular, there is no support for parameter matching at the moment. This will have to be added, but I'm not quite sure how to do it when the function's return value is not a real number (e.g., an interval). On the other hand, this checker is more forgiving about domain errors: if tries a point where the professor's function is not defined, it ignores that one and looks for another (until it decides it can't find one). Once it has these points, it tries them on the student's answer, and if the student's function is undefined, then the student answer is wrong (since it is not defined somewhere that the professor's funciton is). This avoids the "Error evaluating student function at ..." messages, which just confused most students anyway. Revision 2621 - Directory Listing Modified Sun Aug 15 17:05:41 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Improved error messages, particularly when the student enters a formula in an answer that should be constant, and also for incorrect answers in lists of answers. There are a few other miscellaneous output improvements as well. Revision 2620 - Directory Listing Modified Sun Aug 15 12:02:05 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Had to put back the global context variable after all. :-( It gets reset in Parser.pl, so it should be OK even with mod_perl. Revision 2619 - Directory Listing Modified Sun Aug 15 00:45:46 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Modified Context() function so that it no longer uses a global package variable for storing the user's context table. Revision 2617 - Directory Listing Modified Sun Aug 15 00:13:38 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg The Union answer checker now uses the generic List checker, so that it will be able to produce partial credit and hints about which Intervals are correct. Revision 2616 - Directory Listing Modified Sat Aug 14 21:29:21 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Added an equality operator (not active initially) that can be used for things like equations of planes and so on. I'm working on the answer checker for that. Revision 2615 - Directory Listing Modified Sat Aug 14 21:27:45 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg *** empty log message *** Revision 2612 - Directory Listing Modified Sat Aug 14 19:29:42 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed some bugs in the handle of the context in ->string and ->TeX methods of Value objects. Revision 2611 - Directory Listing Modified Sat Aug 14 15:59:35 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed a typo in one of the parser answer checkers. Added a line that was incorrecctly removed in the parser. Revision 2610 - Directory Listing Modified Sat Aug 14 13:55:54 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg The class file for the Value::String object. (Forgot to add it before the last commit. Sorry!) Revision 2609 - Directory Listing Modified Sat Aug 14 13:54:52 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Added a String type to the Value package. Mostly this is to make it possible to generate an answer checker for it that uses the parser. It also makes it more consistent for handling things like stringify, especially when they are recursively called internally. Added new default strings "NONE" and "DNE", since these get used a lot. Modified how the default parameters are set up for the answer checkers, and how the answer checker reports the expected answer type in type mismatch error messages. Revision 2608 - Directory Listing Modified Sat Aug 14 13:49:56 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Added Infinity function (similar to i and pi) for creating infinity constants. Revision 2607 - Directory Listing Modified Sat Aug 14 11:26:49 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Allow unary + and - to work on infinities. Revision 2606 - Directory Listing Modified Sat Aug 14 11:25:47 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Can now specify that the objects stringify themselfs in their TeX forms rather than their answer-string forms. This makes it easier to use the objects in the text of a problem (without having to call ->TeX explicitly each reference). Use Context()->texStrings to start outputting TeX strings, and Context()->normalStrings to switch back. Revision 2605 - Directory Listing Modified Sat Aug 14 02:50:18 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Incorporated infinities into Parser package better. They have been stored as String objects (with extra data) in the parser, and I've left it that way, but now they convert to/from Vallue::Infinity objects correctly, and these are used for generating the output. Also added the Infinity answer checker, and adjusted the error messages produces by type mismatches in the answer checkers and elsewhere. Revision 2604 - Directory Listing Modified Fri Aug 13 23:49:16 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Fixed some output issues with intervals and unions. Revision 2603 - Directory Listing Modified Fri Aug 13 23:01:07 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Added an Infinite object class for the Value package. Still need to add it to the Parser package. Revision 2602 - Directory Listing Modified Fri Aug 13 22:57:27 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Changed the way the parser checks to see if it is loaded. Revision 2601 - Directory Listing Modified Fri Aug 13 19:06:09 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Added ability to report incorrect coordinates in point and vector answers, and incorrect endpoints and endpoint types in intervals. Separated these kinds of checks from the typeMatch check, where they didn't really belong. Added ability to specify intervals and unions as strings in Interval() and Union(), which makes it easier to make constants of these types. There are still problems comparing intervals that contain infinities; I really need to make the infinity object to solve this, so have put off trying to fix that for now. Revision 2600 - Directory Listing Modified Fri Aug 13 14:39:16 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg Handle list entries that are not Value objects better. Revision 2599 - Directory Listing Modified Fri Aug 13 14:19:23 2004 UTC (8 years, 9 months ago) by dpvc Original Path: trunk/pg The List object's answer checker is now considerably improved. It will allow you to specify an unorderd or ordered check, and whether to print various kinds of hints for wrong answers. The checker can return partial credit, but WW doesn't deal well with this at the moment (some small changes to Problem.pm can take care of that). Partial credit should be based on$showPartialCorrectAnswers,
but it is disabled for now.

The list answer checker probably still needs some work, especially
with non-numeric lists.

Revision 2597 - Directory Listing
Modified Fri Aug 13 11:38:22 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added option to number checker to have it not report type mismatches
for the known strings (like 'infinity').  (Really need a class for
infinities, and a Value.pm class for strings.)

Revision 2596 - Directory Listing
Modified Thu Aug 12 23:11:32 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Have parser handle infinities better.

Revision 2594 - Directory Listing
Modified Thu Aug 12 20:17:18 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixes for handling intervals better.  In particular, deal better with
ambiguous situations, like (1,2) that could be a point.

You can use [a,a] to specify the single point a.  I'd like to make {a}
represent this (and maybe even {a,b,c} to form finite sets), but this
would interfere with the use of { and } as alternative parentheses.
(Does anyone really use these?)

Do we need a cross product for intervals (and sets) as a means of
representing regions in R^2 (or higher)?

Revision 2593 - Directory Listing
Modified Thu Aug 12 16:48:52 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
This is a preliminary attempt at adding answer checkers that use the
parser.  If you have a parser object (like a formula or a vector), you
can use the ->cmp method to get an answer checker appropriate for the
object.  For example:

Context('Vector');
$v = Vector(1,2,3); # print text of problem ANS($v->cmp);

would produce an answer checker that matched against the vector <1,2,3>.
Most of the parameters are set in the Context, but additional ones can
be passed to the checker (this still needs work).

See the sample problems for more examples.

The checkers for Reals, Complexes, Points, Vectors, Matrices and
Intervals work pretty well.  The ones for List and Union objects need
more work, as they only do an ORDERED check at the moment (the student
answers must be in the same order).  This needs to be fixed.
The checker for Formula objects (which corresponds to fun_cmp) still
needs to be written.

Revision 2592 - Directory Listing
Modified Thu Aug 12 16:40:47 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
A number of small fixes.  Most were to fix minor bugs in string and
TeX output, particulary for the various list-based objects (like
vectors, intervals, etc.).  There were also some bug fixes in the
intervals when the coordinates are formulas.

Revision 2590 - Directory Listing
Modified Wed Aug 11 18:02:44 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Added Real() command to create fuzzy reals.

Revision 2583 - Directory Listing
Modified Tue Aug 10 11:22:19 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Fixed generation of LaTeX version of sqrt(...).

Revision 2580 - Directory Listing
Modified Mon Aug 9 21:38:58 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Forgot to add this file.  It implements the "fuzzy real" class.

Revision 2579 - Directory Listing
Modified Mon Aug 9 21:38:01 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Significant update to new parser.

New features include:

Better control over format of vector output (you can now
specify ijk-format rather than <...> format)

"Fuzzy" reals, where the relations like == return true when the
two values are "close enough".  (This is controlable using
parameters similar to those used in NUM_CMP).

The fuzzy reals are now used in vectors/points/matrices/complexes/intervals
and so on so that their relations will also be fuzzy.  E.g.,
(1E-13,2) == (0,3) will be true, and norm(Vector(0,1E-13)) will
equal 0.

The two main portions of the parser (the Parser and Value packages)
now share a common context object for configuration purposes.

Revision 2576 - Directory Listing
Modified Wed Aug 4 20:52:28 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Make Parser work with PGauxiliaryFunctions.pl, and add the macro files
needed to initialize the parser.

Revision 2574 - Directory Listing
Modified Wed Aug 4 20:23:11 2004 UTC (8 years, 9 months ago) by dpvc
Original Path: trunk/pg
Make Parser live nicely with Complex1.pm.

In particular, make the i() function determine whether it should
call the Complex::i() function or the Parser version.

Revision 2558 - Directory Listing
Modified Wed Jul 28 20:32:33 2004 UTC (8 years, 9 months ago) by sh002i
Original Path: trunk/pg
merged changes from rel-2-1-a1 -- stop using that branch.

Revision 2518 - Directory Listing
Modified Fri Jul 16 01:32:52 2004 UTC (8 years, 10 months ago) by gage
Original Path: trunk/pg
Will create the tempDirectory if it is missing.

this is useful if, for example, you switch the tmp directory from
webwork2/courses/courseName/html/tmp  to something like

/ww/htdocs/tmp/courseName

You don't want to create a courseName node for every course, you would
prefer to create only /ww/htdocs/tmp

the current version will create the node courseName if it doesn't exist
(or the name tmp in the first example) but will not create files
higher up the tree.

Revision 2488 - Directory Listing
Modified Sun Jul 11 21:36:26 2004 UTC (8 years, 10 months ago) by gage
Original Path: trunk/pg
Added better error messages.  Removed and extraneous slash.

Revision 2469 - Directory Listing
Modified Thu Jul 8 15:29:45 2004 UTC (8 years, 10 months ago) by apizer
Original Path: trunk/pg
Create equations directory if it doesn't exist.  All directories under
tmp should be recreated if they don't exist.

Arnie

Revision 2461 - Directory Listing
Modified Wed Jul 7 21:26:52 2004 UTC (8 years, 10 months ago) by apizer
Original Path: trunk/pg
Change permission of tmp files so that they can be removed.

Arnie

Revision 2445 - Directory Listing
Modified Tue Jul 6 21:21:20 2004 UTC (8 years, 10 months ago) by jj
Original Path: trunk/pg
Allow psvn to equal 0.  It could happen in situations where a problem
isn't really assigned to the person.

Revision 2443 - Directory Listing
Modified Tue Jul 6 15:16:51 2004 UTC (8 years, 10 months ago) by jj
Original Path: trunk/pg
Allow new option for image.  extra_html_tags are added to the img tag of the
image.  Allows you to control the vertical alignment of an image.

Revision 2420 - Directory Listing
Modified Sat Jun 26 21:56:44 2004 UTC (8 years, 10 months ago) by jj
Original Path: trunk/pg
Most of the work for adjusting vertical alignment of images is here.

Revision 2409 - Directory Listing
Modified Fri Jun 25 16:27:55 2004 UTC (8 years, 10 months ago) by jj
Original Path: trunk/pg
Allow option of not using the cache.  If its path is the empty string, then
we just return the md5 hash of the latex string followed by a 1.

Revision 2400 - Directory Listing
Modified Fri Jun 25 12:32:14 2004 UTC (8 years, 10 months ago) by dpvc
Original Path: trunk/pg
Fixed error in ANS_NUM_TO_NAME.

Revision 2396 - Directory Listing
Modified Thu Jun 24 22:07:22 2004 UTC (8 years, 10 months ago) by dpvc
Original Path: trunk/pg
Moved the <BR> in std_print_q from the beginning of a line to the end
of a line.  This prevents unexpected initial blank lines.

Revision 2393 - Directory Listing
Modified Thu Jun 24 21:01:23 2004 UTC (8 years, 10 months ago) by dpvc
Original Path: trunk/pg
Removed the experimental Parser-based implementations of i(), j() and k().

Revision 2392 - Directory Listing
Modified Thu Jun 24 21:00:26 2004 UTC (8 years, 10 months ago) by dpvc
Original Path: trunk/pg
Removed skip and rule from problem header generated in TeX mode here,
and let the snippets handle it (they were producing redundent rules).

Also removed some unwanted spaces in htmllink().

(Accidentally committed experimental change to dangerousMacros.pl, and
don't know how to prevent it at this point, so I'll commit a change
back to the original in a moment.)

Revision 2389 - Directory Listing
Modified Thu Jun 24 18:13:33 2004 UTC (8 years, 10 months ago) by dpvc
Original Path: trunk/pg
Removed extra spaces from around dvipng images.

(These can cause bad line breaks, e.g. between mathematics and the
punctuation that follows.)

Revision 2370 - Directory Listing
Modified Wed Jun 23 01:19:15 2004 UTC (8 years, 10 months ago) by sh002i
Original Path: trunk/pg
moved DISPLAY_MODE_FAILOVER into this file

Revision 2369 - Directory Listing
Modified Wed Jun 23 01:18:58 2004 UTC (8 years, 10 months ago) by sh002i
Original Path: trunk/pg
ImageGenerator is now using WeBWorK::Constants

Revision 2363 - Directory Listing
Modified Tue Jun 22 18:03:07 2004 UTC (8 years, 10 months ago) by jj
Original Path: trunk/pg
When using the imageCache (which is always), put images into subdirectories
based on the first two characters of their md5 hash.

Revision 2345 - Directory Listing
Modified Thu Jun 17 20:02:12 2004 UTC (8 years, 11 months ago) by apizer
Original Path: trunk/pg
Changed pacckage name from strict to ww_strict per Sam's suggestion
to prevent redefining warnings.

Arnie

Revision 2292 - Directory Listing
Modified Fri Jun 11 16:40:44 2004 UTC (8 years, 11 months ago) by dpvc
Original Path: trunk/pg
Fixed a bug in jsMath mode where it would not display < (when it looked like
part of a tag).

Also, removed unwanted spaced around input box.

Revision 2277 - Directory Listing
Modified Tue Jun 8 02:06:32 2004 UTC (8 years, 11 months ago) by sh002i
Original Path: trunk/pg
Reformatted the FUNCTION_CMP subroutine to make it more readable. Also,
one functional change:

< (defined ($inputs_ref->{$prev_ans_label} and $inputs_ref->{$prev_ans_label} =~/\S/) )
> (defined $inputs_ref->{$prev_ans_label} and $inputs_ref->{$prev_ans_label} =~/\S/)

I think the latter was what was intended.

Revision 2274 - Directory Listing
Modified Mon Jun 7 23:53:45 2004 UTC (8 years, 11 months ago) by sh002i
Original Path: trunk/pg
got rid of remaining calls to "wwerror". Fixes bug #530.

Revision 2270 - Directory Listing
Modified Mon Jun 7 11:52:47 2004 UTC (8 years, 11 months ago) by dpvc
Original Path: trunk/pg
Removed redundant HTML_jsMath check.

Revision 2267 - Directory Listing
Modified Mon Jun 7 01:34:34 2004 UTC (8 years, 11 months ago) by dpvc
Original Path: trunk/pg
Added jsMath support to these files.

Basically, HTML_jsMath should do whatever HTML_dpng mode does.  I simply included
it HTML_jsMath every time HTML_dpng appeared.

Revision 2253 - Directory Listing
Modified Sat Jun 5 16:13:33 2004 UTC (8 years, 11 months ago) by jj
Original Path: trunk/pg
Allow on-the-fly graphics in jsmath and asciimath modes.

Revision 2243 - Directory Listing
Modified Wed Jun 2 20:18:48 2004 UTC (8 years, 11 months ago) by jj
Original Path: trunk/pg
Fixed bug which caused some debug output to always appear.

Revision 2232 - Directory Listing
Modified Mon May 31 15:44:43 2004 UTC (8 years, 11 months ago) by jj
Original Path: trunk/pg
Re-use on-the-fly graphs, unless problem seed has change, source file has changed, or the problem is being rendered without being part of a real set.

Revision 2215 - Directory Listing
Modified Mon May 24 21:24:41 2004 UTC (8 years, 11 months ago) by jj
Original Path: trunk/pg
Allow default size of on the fly graphics to be set in global.conf, and make pop-ups of those graphs have windows closer to the size of the graph.  Also, pop-ups always make a new window - important for problems which make you compare two or more popped up graphs.

Revision 2206 - Directory Listing
Modified Mon May 24 17:51:44 2004 UTC (8 years, 11 months ago) by jj
Original Path: trunk/pg
Made on the fly graph names use problem seed rather than psvn.  It is a better identifier for pages like SetMaker.  Also made image names workable for set names containing periods (for the day when set names are free to contain periods).

Revision 2201 - Directory Listing
Modified Mon May 24 02:32:45 2004 UTC (8 years, 11 months ago) by dpvc
Original Path: trunk/pg
update to asciimath for MSIE.

Revision 2199 - Directory Listing
Modified Mon May 24 01:59:53 2004 UTC (8 years, 11 months ago) by dpvc
Original Path: trunk/pg
Support for asciimath.

Added preliminary support for asciimath rendering.  You must use a
MathML-enabled browser.

Revision 2193 - Directory Listing
Modified Mon May 24 01:05:03 2004 UTC (8 years, 11 months ago) by sh002i
Original Path: trunk/pg
failover data now passed in via %envir.

Revision 2173 - Directory Listing
Modified Sun May 23 01:33:22 2004 UTC (8 years, 11 months ago) by jj
Original Path: trunk/pg

Revision 2167 - Directory Listing
Modified Sat May 22 22:32:43 2004 UTC (8 years, 11 months ago) by gage
Original Path: trunk/pg
Moved be_strict after package main;

Revision 2166 - Directory Listing
Modified Sat May 22 22:16:20 2004 UTC (8 years, 11 months ago) by dpvc
Original Path: trunk/pg
Files needed for jsMath display mode.

Revision 2164 - Directory Listing
Modified Sat May 22 22:10:30 2004 UTC (8 years, 11 months ago) by gage
Original Path: trunk/pg
Moving ww_strict.pm forward to 5.8.3 compatible version
with require Carp; commented out

Revision 2163 - Directory Listing
Modified Sat May 22 21:34:58 2004 UTC (8 years, 11 months ago) by gage
Original Path: trunk/pg
Moved ww_strict.pm back to be identical with strict.pm from perl 5.6

Revision 2158 - Directory Listing
Modified Sat May 22 20:48:51 2004 UTC (8 years, 11 months ago) by gage
Original Path: trunk/pg
We are now using ww_strict.pm instead of strict.pm in be_strict;

Revision 2157 - Directory Listing
Modified Sat May 22 20:46:20 2004 UTC (8 years, 11 months ago) by gage
Original Path: trunk/pg
We are using our own version of strict.pm that has a require Carp;  commented out.
This is included in be_strict which is used to implement strict within PG macro files
which need to be evaluted inside the Safe compartment

Revision 2155 - Directory Listing
Modified Sat May 22 18:04:23 2004 UTC (8 years, 11 months ago) by jj
Original Path: trunk/pg
Moved nicestring to PGbasicmacros.

Revision 2153 - Directory Listing
Modified Sat May 22 15:53:00 2004 UTC (8 years, 11 months ago) by gage
Original Path: trunk/pg
Removed warning messages.  The macroDirectory and courseScripts directory are now defined from the %envir
variable which is shared directly with the new Safe compartment rather than via calls to $main::macroDirectory which seemed to be unstable in some instances. I've left the FIXME sign in place just in case there are still problems. Revision 2151 - Directory Listing Modified Sat May 22 01:23:17 2004 UTC (9 years ago) by gage Original Path: trunk/pg Roll back the previous changes. They were added to HEAD instead of to the experimental branch. Revision 2150 - Directory Listing Modified Sat May 22 01:19:11 2004 UTC (9 years ago) by gage Original Path: trunk/pg Experimental refactorization of answer evaluators will take place on this branch. Revision 2144 - Directory Listing Modified Fri May 21 23:58:13 2004 UTC (9 years ago) by apizer Original Path: trunk/pg Removed old commented out code dealing with PGsort. Arnie Revision 2143 - Directory Listing Modified Fri May 21 23:56:48 2004 UTC (9 years ago) by apizer Original Path: trunk/pg Use the new PGsort which uses a true/false compare (e.g. < or lt ) rather than a -1,0,1 compare (e.g. <=> or cmp ). Arnie Revision 2142 - Directory Listing Modified Fri May 21 23:54:00 2004 UTC (9 years ago) by apizer Original Path: trunk/pg Replaced PGsort with a version that uses quick sort. This fixes the problem the old PGsort had with Perl compiled with ithreads. Arnie Revision 2135 - Directory Listing Modified Fri May 21 01:34:28 2004 UTC (9 years ago) by sh002i Original Path: trunk/pg Modified DVIPNG_ARGS to work with dvipng >= 1.0. Revision 2061 - Directory Listing Modified Sun May 9 17:45:41 2004 UTC (9 years ago) by gage Original Path: trunk/pg Modifications to PGbasicmacros and PGanswermacros which check whether a function answer is the same as the function answer submitted previously. Gives warning message if the same incorrect answers is submitted twice in a row. The functions must both compile in order to recognize that they are the same answer. Two syntactically incorrect entries will not be recognized as equivalent, even if they are in some sense. Revision 2060 - Directory Listing Modified Sun May 9 17:43:32 2004 UTC (9 years ago) by gage Original Path: trunk/pg Cosmetic fixes to code layout. Revision 2057 - Directory Listing Modified Sat May 8 22:53:03 2004 UTC (9 years ago) by gage Original Path: trunk/pg Preliminary changes that may eventually allow us to solve the be_strict problem for 5.8.0 Revision 2056 - Directory Listing Modified Sat May 8 22:51:38 2004 UTC (9 years ago) by gage Original Path: trunk/pg Updating answer evaluators in PGanswermacros.pl Beginning to include code that will allow us to check whether the current answer is the same as the one submitted previously. Revision 1964 - Directory Listing Modified Thu Apr 22 14:39:28 2004 UTC (9 years ago) by jj Original Path: trunk/pg Added convention to beginproblem that point value of "" means that we don't print the point value at all. It will also supress printing of the filename if someone is supposed to have filenames printed, which is appropriate for the one known time this convention is used. Revision 1943 - Directory Listing Modified Sun Apr 4 20:05:34 2004 UTC (9 years, 1 month ago) by jj Original Path: trunk/pg Synched with ASU version. Defunct functions deleted, new functions added, and documentation added. Revision 1941 - Directory Listing Modified Sun Apr 4 15:56:59 2004 UTC (9 years, 1 month ago) by jj Original Path: trunk/pg WW 2 didn't like the top line. Inserting a comment seems to fix it. Also corrected a typo. Revision 1932 - Directory Listing Modified Sat Apr 3 15:44:55 2004 UTC (9 years, 1 month ago) by jj Original Path: trunk/pg Added support for useBaseTenLog for ww2. Revision 1896 - Directory Listing Modified Wed Mar 17 00:45:28 2004 UTC (9 years, 2 months ago) by gage Original Path: trunk/pg Changed the naming of arrays from ArRaY[0,0,0] to ArRaY__0:0:0:__ This involved changes in PG.pl and PGmorematrixmacros (ans_array_filter) Made other cosmetic fixes to code. Added names to many filters to help with debugging. It seems to work for now. Revision 1834 - Directory Listing Modified Thu Mar 4 17:41:06 2004 UTC (9 years, 2 months ago) by gage Original Path: trunk/pg Added comments Revision 1831 - Directory Listing Modified Thu Mar 4 13:06:32 2004 UTC (9 years, 2 months ago) by gage Original Path: trunk/pg Changed documentation spacing Revision 1812 - Directory Listing Modified Mon Feb 16 20:34:01 2004 UTC (9 years, 3 months ago) by gage Original Path: trunk/pg This is a new attempt to fix the problem that there was no preview string if the units were incorrect. The previous fix caused difficulties if strings were entered for numerical answers. The new code has been added to the subroutine fix_answers_for_display which already performed answer cleanup of various kinds. Revision 1797 - Directory Listing Modified Thu Feb 12 20:26:26 2004 UTC (9 years, 3 months ago) by toenail Original Path: trunk/pg Reordered pre-filters in NUM_CMP to allow for latex previews of answers with no units Revision 1791 - Directory Listing Modified Thu Feb 12 14:23:36 2004 UTC (9 years, 3 months ago) by gage Original Path: trunk/pg Added RECORD_FORM_DATA for making sticky form data which is not specifically related to answers. Revision 1785 - Directory Listing Modified Mon Feb 9 17:18:39 2004 UTC (9 years, 3 months ago) by gage Original Path: trunk/pg Modifications to checkbox_cmp to include preview_latex_string. this completes the squashing of bug #400 Revision 1784 - Directory Listing Modified Mon Feb 9 17:09:06 2004 UTC (9 years, 3 months ago) by gage Original Path: trunk/pg Made changes to the check box macros so that they will remain sticky when more than one check box is checked. Involves splitting a null separated string ( or perhaps converting a reference to an array). uses a new subroutine contained_in(elem, array_or_arrray_ref_or_null_separated_string) this resolves part of bug #400 --Mike Revision 1780 - Directory Listing Modified Fri Feb 6 02:55:55 2004 UTC (9 years, 3 months ago) by gage Original Path: trunk/pg Corrected format of one line. --Mike Revision 1779 - Directory Listing Modified Fri Feb 6 02:52:42 2004 UTC (9 years, 3 months ago) by gage Original Path: trunk/pg Allow a 256 error from dvipng. This seems to be necessary on webwork.math.rochester.edu, so I'm commiting it to the CVS as well to keep the two systems in sync. --Mike Revision 1765 - Directory Listing Modified Fri Jan 30 18:04:37 2004 UTC (9 years, 3 months ago) by jj Original Path: trunk/pg Fix bug from last fix, and a second bug caused by$Global::htmlModeDefault
being accidentally called $Global::htmldisplayModeDefault in this file. Revision 1764 - Directory Listing Modified Fri Jan 30 15:28:46 2004 UTC (9 years, 3 months ago) by jj Original Path: trunk/pg Some sites use only one display mode. In that case, the "choice of one" display mode should not be displayed. Revision 1759 - Directory Listing Modified Mon Jan 26 16:59:30 2004 UTC (9 years, 3 months ago) by gage Original Path: trunk/pg Minor change to the definition of the timer Revision 1758 - Directory Listing Modified Mon Jan 26 16:36:29 2004 UTC (9 years, 3 months ago) by jj Original Path: trunk/pg If LaTeX formula ends in a backslash after removing training spaces, then we removed too much space, so we add a space to the end of it so it ends '\ \)'. Revision 1710 - Directory Listing Modified Tue Jan 6 14:04:34 2004 UTC (9 years, 4 months ago) by apizer Original Path: trunk/pg fixed bug in call to Romberg routine. Romberg now requires parameters of the form "level => 8". This was fixed previously I thought. Not sure how the fix was lost. Arnie Revision 1690 - Directory Listing Modified Sun Dec 28 19:46:57 2003 UTC (9 years, 4 months ago) by gage Original Path: trunk/pg Zeroed the variable storing the responses to questionnaires. Should fix the error on questionnaires revealed by the persistance of mod_perl modules. Changed warning message in dangerousMacros.pl to more accurately describe what is wrong when the gif2eps script cannot be executed. (Based on actual experience running a course on webwork.math.rochester.edu -- I couldn't remember what my own warning message implied.) --Mike Revision 1688 - Directory Listing Modified Sat Dec 27 21:34:04 2003 UTC (9 years, 4 months ago) by gage Original Path: trunk/pg Added error messages that should make it easier to tell if certain directories have not been created. Also checks that files are actually created and written at each step of the process. --Mike Revision 1620 - Directory Listing Modified Fri Nov 7 14:55:12 2003 UTC (9 years, 6 months ago) by apizer Original Path: trunk/pg fixed a bug in line 2469 replacing \npsvnNumber by \n$psvnNumber

Arnie

Revision 1556 - Directory Listing
Modified Wed Oct 1 02:40:09 2003 UTC (9 years, 7 months ago) by sh002i
Original Path: trunk/pg
changed the way the IO modules work: shared subroutines are in IO now,
and IO has a hash %WeBWorK::PG::IO::SHARE which can be added to
Translator's %shared_subroutine_hash directly.

Revision 1555 - Directory Listing
Modified Wed Oct 1 02:31:54 2003 UTC (9 years, 7 months ago) by sh002i
Original Path: trunk/pg
changed documentation to reflect the fact that reh refresh and mtime
flags are no longer used

Revision 1553 - Directory Listing
Modified Tue Sep 30 01:20:55 2003 UTC (9 years, 7 months ago) by sh002i
Original Path: trunk/pg

Revision 1550 - Directory Listing
Modified Tue Sep 30 01:18:25 2003 UTC (9 years, 7 months ago) by sh002i
Original Path: trunk/pg
check to see if $envir->{texDisposition} is defined before trying to access it. Revision 1540 - Directory Listing Modified Sat Sep 27 16:47:34 2003 UTC (9 years, 7 months ago) by gage Original Path: trunk/pg When displaying a raw student answer, nulls are converted to \0 so that they can be seen. This is probably redundant since strings with multiple values separated by nulls are supposed to be converted to references to arrays before they reach this point. --Mike Revision 1535 - Directory Listing Modified Fri Sep 26 21:16:18 2003 UTC (9 years, 7 months ago) by gage Original Path: trunk/pg Added line which prints out the raw student answer when the debug flag is on. --Mike Revision 1534 - Directory Listing Modified Thu Sep 25 05:42:31 2003 UTC (9 years, 7 months ago) by sh002i Original Path: trunk/pg removed unneeded #! line Revision 1528 - Directory Listing Modified Thu Sep 25 01:29:21 2003 UTC (9 years, 7 months ago) by sh002i Original Path: trunk/pg fixed #! line Revision 1525 - Directory Listing Modified Thu Sep 25 00:29:59 2003 UTC (9 years, 7 months ago) by sh002i Original Path: trunk/pg removed unneeded #! lines Revision 1524 - Directory Listing Modified Thu Sep 25 00:28:15 2003 UTC (9 years, 7 months ago) by sh002i Original Path: trunk/pg added image generation modules from WW2 Revision 1506 - Directory Listing Modified Fri Sep 19 01:30:13 2003 UTC (9 years, 8 months ago) by gage Original Path: trunk/pg Fixed check_string filter so that it places a value in preivew_text_string and in preview_latex_string in the answer hash. For example entering DNE did not show up in answer preview, which bothered some students. --Mike Revision 1505 - Directory Listing Modified Mon Sep 15 05:47:38 2003 UTC (9 years, 8 months ago) by lr003k Original Path: trunk/pg It seems as though the way I tried to fix long decimals isn't working the way I wanted it too, so I've commented it out for now. ~Liam Revision 1494 - Directory Listing Modified Tue Sep 9 02:06:31 2003 UTC (9 years, 8 months ago) by jj Original Path: trunk/pg Put mbox around entries of a matrix in TeX-based modes to protect math inside of them. Revision 1490 - Directory Listing Modified Sun Sep 7 17:40:54 2003 UTC (9 years, 8 months ago) by gage Original Path: trunk/pg Corrected a typo in EV4 --Mike Revision 1483 - Directory Listing Modified Fri Sep 5 13:19:45 2003 UTC (9 years, 8 months ago) by gage Original Path: trunk/pg Added EV4 routine supplied by Zig Fiedorowicz --Mike Revision 1463 - Directory Listing Modified Fri Aug 15 16:51:09 2003 UTC (9 years, 9 months ago) by gage Original Path: trunk/pg Changes to mail that make it work properly with ALLOW_MAIL_TO --Mike Revision 1462 - Directory Listing Modified Fri Aug 15 16:49:42 2003 UTC (9 years, 9 months ago) by gage Original Path: trunk/pg Made changes to rh_sticky_answers so that they are addressed correctly. Long term I would like to remove all references to main:: except for those in the init routines. The references can be replaced by a locally defined pointer to the value in the current safe compartment. This procedure should make it easier to maintain the macros. All references to global variables will occur in the init routine. --Mike Revision 1456 - Directory Listing Modified Thu Aug 14 16:10:01 2003 UTC (9 years, 9 months ago) by gage Original Path: trunk/pg At least a temporary fix for mail_answers_to2 These evaluators are run in the grader and the environment variables have disappeared?? I can't find them at any rate. this is at best a temporary fix until we get the global variable situation under control when using cached code. --Mike Revision 1455 - Directory Listing Modified Thu Aug 14 13:27:54 2003 UTC (9 years, 9 months ago) by gage Original Path: trunk/pg Made changes to anstext and a few other answer evaluators so that they evaluated "main::" correctly. Still need to fix install problem grader --Mike Revision 1454 - Directory Listing Modified Tue Aug 12 16:43:36 2003 UTC (9 years, 9 months ago) by jj Original Path: trunk/pg Redoing fix to random so that random(2,7,3) won't produce 8. The original fix was lost in the merger with mod-perl version. Revision 1453 - Directory Listing Modified Wed Aug 6 18:59:26 2003 UTC (9 years, 9 months ago) by jj Original Path: trunk/pg New file with linear programming simplex method related macros. Revision 1452 - Directory Listing Modified Tue Aug 5 16:37:10 2003 UTC (9 years, 9 months ago) by jj Original Path: trunk/pg Revised documentation for test_points. Revision 1451 - Directory Listing Modified Tue Aug 5 16:34:38 2003 UTC (9 years, 9 months ago) by jj Original Path: trunk/pg Added some documentation for test_points. Revision 1450 - Directory Listing Modified Tue Aug 5 16:24:48 2003 UTC (9 years, 9 months ago) by jj Original Path: trunk/pg Added option of test_points to fun_cmp. Revision 1390 - Directory Listing Modified Tue Jul 15 17:55:32 2003 UTC (9 years, 10 months ago) by apizer Original Path: trunk/pg Back off from Cervone's new definition of BR Arnie Revision 1385 - Directory Listing Modified Mon Jul 14 20:22:19 2003 UTC (9 years, 10 months ago) by apizer Original Path: trunk/pg Fixed a bug in Davide Cervone's changes Arnie Revision 1379 - Directory Listing Modified Mon Jul 14 15:16:30 2003 UTC (9 years, 10 months ago) by apizer Original Path: trunk/pg Incorporated Davide Cervone's improvements and bug fixes. This mostly involved removing unwanted spaces, etc. Arnie Revision 1365 - Directory Listing Modified Fri Jul 11 20:18:57 2003 UTC (9 years, 10 months ago) by lr003k Original Path: trunk/pg In order to make ans_array entries "sticky" I've had to change some stuff. The answer labels for these entries are now put into$main::PG_FLAGS{ANSWER_ENTRY_ORDER} as an array reference in PG.pl.
In processProblem8.pl the labels are caught again in the subroutines logCourseData and encode_submitted_answers. It is important that
they're caught there rather than earlier because then the translator would think that every entry was it's own answer.
Professor Gage says that processProblem8.pl is no longer used in webwork2, and he says he'll fix this there.

Revision 1351 - Directory Listing
Modified Fri Jul 11 16:30:04 2003 UTC (9 years, 10 months ago) by apizer
Original Path: trunk/pg
incorporate some of davide Cervone'e changes

Arnie

Revision 1333 - Directory Listing
Modified Wed Jul 9 23:20:23 2003 UTC (9 years, 10 months ago) by jj
Original Path: trunk/pg
Fixed new bug introduced by, er, my previous bug fix.

Revision 1332 - Directory Listing
Modified Wed Jul 9 20:29:04 2003 UTC (9 years, 10 months ago) by lr003k
Original Path: trunk/pg
Fixed a rounding problem.

Revision 1331 - Directory Listing
Modified Wed Jul 9 20:28:40 2003 UTC (9 years, 10 months ago) by lr003k
Original Path: trunk/pg
Removed the last change, it's now handled in display_matrix.

Revision 1328 - Directory Listing
Modified Wed Jul 9 19:45:40 2003 UTC (9 years, 10 months ago) by gage
Original Path: trunk/pg
Added $to PG_random_generator in the subroutine SRAND. Why it worked before as a bare word is anyone's guess. Now that$PG_random_generator
is a local variable the bareword no longer works properly.
--Mike

Revision 1327 - Directory Listing
Modified Wed Jul 9 18:06:52 2003 UTC (9 years, 10 months ago) by lr003k
Original Path: trunk/pg
Added a pretty_matrix sub routine to fix some rounding problems.

Revision 1319 - Directory Listing
Modified Mon Jul 7 02:27:15 2003 UTC (9 years, 10 months ago) by jj
Original Path: trunk/pg
Made box option functional for display_matrix.  It lets you specify an
element to be boxed.

Revision 1318 - Directory Listing
Modified Mon Jul 7 01:34:38 2003 UTC (9 years, 10 months ago) by jj
Original Path: trunk/pg
Fixed bugs in matrix display when top_labels are present.

Revision 1317 - Directory Listing
Modified Fri Jul 4 05:08:37 2003 UTC (9 years, 10 months ago) by jj
Original Path: trunk/pg
Fixed tick marks for graphs - x/y values were reversed.

Revision 1314 - Directory Listing
Modified Wed Jul 2 15:27:59 2003 UTC (9 years, 10 months ago) by apizer
Original Path: trunk/pg

Arnie

Revision 1312 - Directory Listing
Modified Tue Jul 1 17:55:12 2003 UTC (9 years, 10 months ago) by gage
Original Path: trunk/pg
Fixed error in sourceAlias.  The variable is %main::envir not
$main::envir !!! --Mike Revision 1311 - Directory Listing Modified Tue Jul 1 15:36:43 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Changed the defintion of *i to be inside the Complex package. this and the change to dangerousMacros seems to have cured bug #116 In dangerousMacros, I've added sub i {Complex::i}; after sub i; --Mike Revision 1310 - Directory Listing Modified Tue Jul 1 15:35:51 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Changed the defintion of *i to be inside the Complex package. this and the change to dangerousMacros seems to have cured bug #116 --Mike Revision 1305 - Directory Listing Modified Tue Jul 1 00:48:01 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Latest attempt to get a version of dangerousMacros.pl that will work with both 5.6.1 adn 5.6.0 --Mike Revision 1304 - Directory Listing Modified Mon Jun 30 23:24:29 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg removed unnecessary "no strict, use strict" pair --Mike Revision 1303 - Directory Listing Modified Mon Jun 30 20:36:57 2003 UTC (9 years, 10 months ago) by apizer Original Path: trunk/pg added missing hyperbolic, inverse trig, and inverse hyperbolic functions cintributed by Davide Cervone Arnie Revision 1298 - Directory Listing Modified Fri Jun 27 19:53:50 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Fixed typo in beginproblem --Mike Revision 1294 - Directory Listing Modified Fri Jun 27 13:57:09 2003 UTC (9 years, 10 months ago) by lr003k Original Path: trunk/pg Added a vec_solution_cmp. Used for problems where the answer needs to be v1_s*v2+t*v3 where v1,v2,and v3 are vectors. v1 has to be a linear combination of the professors answer where the first one has a nonzero coefficient. The others are a basis, and are compared with compare_basis. Revision 1290 - Directory Listing Modified Thu Jun 26 22:43:15 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Merge the time optimized branch and the main branch. I forgot one subroutine --Mike Revision 1286 - Directory Listing Modified Thu Jun 26 21:08:47 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Make sure that the local my variables are updated in PGbasicmacros as well as the variables in main::. --Mike Revision 1285 - Directory Listing Modified Thu Jun 26 21:04:09 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Adding preliminary ability to decompose non-square matrices. Won't work if a permutation is required (i.e. a pivot) --Mike Revision 1280 - Directory Listing Modified Thu Jun 26 17:42:18 2003 UTC (9 years, 10 months ago) by malsyned Original Path: trunk/pg Merged the changes needed to work with the new WW2 translator optimizations into the main pg branch. Revision 1278 - Directory Listing Modified Thu Jun 26 13:55:43 2003 UTC (9 years, 10 months ago) by lr003k Original Path: trunk/pg Matrices now displayed in previewer. Revision 1276 - Directory Listing Modified Wed Jun 25 16:26:42 2003 UTC (9 years, 10 months ago) by lr003k Original Path: trunk/pg committed the wrong thing Revision 1274 - Directory Listing Modified Wed Jun 25 15:43:03 2003 UTC (9 years, 10 months ago) by lr003k Original Path: trunk/pg fixed a bug Revision 1267 - Directory Listing Modified Tue Jun 24 15:25:58 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Changes that allow these files to work with caching version of Webwork2.0 -- optimized for speed --Mike Revision 1266 - Directory Listing Modified Tue Jun 24 15:24:09 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Changes that allow these files to work with optimized version of WeBWorK2.0 which uses caching of macro files. --Mike Revision 1265 - Directory Listing Modified Tue Jun 24 14:58:03 2003 UTC (9 years, 10 months ago) by lr003k Original Path: trunk/pg Made the code more object-oriented Revision 1253 - Directory Listing Modified Mon Jun 23 18:34:44 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg More changes to make these files compatible with WeBWorK2.0 and cached compartments -- Mike Revision 1251 - Directory Listing Modified Mon Jun 23 16:24:32 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Changes made to PGbasicmacros so that it can be cached. Changes should be compatible with webwork1.8 --MIke Revision 1250 - Directory Listing Modified Mon Jun 23 15:43:11 2003 UTC (9 years, 10 months ago) by gage Original Path: trunk/pg Made changes required to allow caching of these files. My tests indicate that these changes are compatible with webwork1.8 One possible problem might be the mail-to answer macros which access the environement variable directly I think I have this properly patched, but it has not been tested yet. --Mike Revision 1238 - Directory Listing Modified Fri Jun 20 19:05:38 2003 UTC (9 years, 11 months ago) by lr003k Original Path: trunk/pg Matrices now take math constants. Revision 1237 - Directory Listing Modified Fri Jun 20 18:59:44 2003 UTC (9 years, 11 months ago) by lr003k Original Path: trunk/pg Student answer now displayed in a html table given by jones's display matrix method in PGmatrixmacros. The braces were giving me headaches so I set the option to none, at least for now. Revision 1161 - Directory Listing Modified Fri Jun 13 17:36:10 2003 UTC (9 years, 11 months ago) by lr003k Original Path: trunk/pg Was not accepting negative answers, the sign problem is fixed now. Revision 1158 - Directory Listing Modified Fri Jun 13 17:12:18 2003 UTC (9 years, 11 months ago) by sh002i Original Path: trunk/pg rollback change to the way ImageGenerator::add is called. -sam Revision 1155 - Directory Listing Modified Fri Jun 13 02:33:56 2003 UTC (9 years, 11 months ago) by sh002i Original Path: trunk/pg changes to the math_ev3 functions in PGbasicmacros.pl to support new interface to ImageGenerator and some cleanup. -sam Revision 1140 - Directory Listing Modified Thu Jun 12 19:14:38 2003 UTC (9 years, 11 months ago) by gage Original Path: trunk/pg Answer labels are now prefixed by a Quiz prefix which allows more than one problem to appear on the same page. -- Mike Revision 1127 - Directory Listing Modified Wed Jun 11 19:18:19 2003 UTC (9 years, 11 months ago) by lr003k Original Path: trunk/pg Was working from an older copy before my last update, sorry. Revision 1126 - Directory Listing Modified Wed Jun 11 18:34:40 2003 UTC (9 years, 11 months ago) by jj Original Path: trunk/pg Fixed isPrime, which had said that 4 was prime, and shortened its loop. Revision 1123 - Directory Listing Modified Wed Jun 11 15:28:47 2003 UTC (9 years, 11 months ago) by lr003k Original Path: trunk/pg Ok, there is the ans_array_filter added which allows for the answer to be coming from the ans_array. Revision 1122 - Directory Listing Modified Wed Jun 11 14:54:27 2003 UTC (9 years, 11 months ago) by lr003k Original Path: trunk/pg Added two methods for naming the blanks in ans_array. The names now have the format ArRaY3[1,0,2] (this would be the name of the 3rd answer (it's taken from main::answer_count which is then incremented so the answer before it is AnSwEr2 and the answer after it is AnSwEr4) and it would be the second matrix or vector in the answer ( I need to take multiple vectors for things like basis cmp, so ans_array_extension puts the vectors in different locations) and the 0 and 2 are row and column in that matrix or vector. Revision 1121 - Directory Listing Modified Wed Jun 11 14:47:59 2003 UTC (9 years, 11 months ago) by lr003k Original Path: trunk/pg I removed the subroutine answer_matrix since it really belongs in basic macros with the other answer blank methods. Revision 1120 - Directory Listing Modified Wed Jun 11 14:46:35 2003 UTC (9 years, 11 months ago) by lr003k Original Path: trunk/pg I've added ans_array and ans_array extension and moved answer_matrix here since this is probably where it should be with all the other answer blank methods. I still have to comment the code. Revision 1117 - Directory Listing Modified Wed Jun 11 04:00:37 2003 UTC (9 years, 11 months ago) by gage Original Path: trunk/pg Added a feature to correspond to a change made in process_answers in Translator.pm. Each answer evaluator is given the answer AND the answer label (e.g. AnSWer1) of the answer. The label is placed in the answer hash at$hash{ans_label} for use by filters
that need to know the label of the answer they are evaluating.

--Mike

Revision 1115 - Directory Listing
Modified Wed Jun 11 02:43:42 2003 UTC (9 years, 11 months ago) by apizer
Original Path: trunk/pg
Fixed error concerning variable \$string.
Cleaned up how polynomials are displayed.

Arnie

Revision 1102 - Directory Listing
Modified Tue Jun 10 16:23:47 2003 UTC (9 years, 11 months ago) by lr003k
Original Path: trunk/pg
ok, I'm pretty sure that this one is the one we want. Unfortunately the other one was an old one, that cmpl_cmp4 was not used
anywhere and I had removed it later, and this one has multi_cmp. Sorry for all the confusion.

Revision 1097 - Directory Listing
Modified Mon Jun 9 23:26:19 2003 UTC (9 years, 11 months ago) by jj
Original Path: trunk/pg
Slightly better handling of top_labels in tth mode when force_tex is set; namely
it ignores the labels instead of letting the TeX code confuse tth so badly that
the matrix is basically lost.

Revision 1094 - Directory Listing
Modified Mon Jun 9 22:46:25 2003 UTC (9 years, 11 months ago) by jj
Original Path: trunk/pg
Fixed bug when the function is sampled at a point where it is not defined.

Revision 1091 - Directory Listing
Modified Mon Jun 9 21:53:11 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
Added > /dev/null tags to the commands which run tex and dvi for
HTML_img mode.  These will probably work now for the most part.
I don't know how well this will work if there is an error in
getting either tex or dvips to run.

For many problems using WeBWorK1.8 and typeset3 mode  thing work fine.
Please submit example problems where the images don't show up or some
other image related error occurs as bugs to
http://webwork3.math.rochester.edu/bugzilla
--Mike

Revision 1090 - Directory Listing
Modified Mon Jun 9 21:24:08 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
Fixed a patch to round (and Round) originally due to Mark Schmitt
which didn't get included in the latest updates and transfer to pg
--Mike

Revision 1088 - Directory Listing
Modified Mon Jun 9 21:05:11 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
Commented out code  that is not used (I believe)

comp_cplx4 and cplx_cmp4

-- Mike

Revision 1080 - Directory Listing
Modified Mon Jun 9 17:49:36 2003 UTC (9 years, 11 months ago) by apizer
Original Path: trunk/pg
remove unneccsary shebang lines

Arnie

Revision 1079 - Directory Listing
Modified Mon Jun 9 17:36:12 2003 UTC (9 years, 11 months ago) by apizer
Original Path: trunk/pg
removed unneccesary shebang lines

Revision 1073 - Directory Listing
Modified Mon Jun 9 13:30:46 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
This module contains IO used in saving an answer to a file.
--Mike

Revision 1072 - Directory Listing
Modified Mon Jun 9 02:27:04 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
The file PGcomplexmacros.pl is partially in sync with the version in
subroutines from Liam.
--Mike

Revision 1071 - Directory Listing
Modified Mon Jun 9 02:26:17 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
courseScripts CVS
--Mike

Revision 1070 - Directory Listing
Modified Mon Jun 9 02:02:20 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
Bringing this version of Matrix.pm up to date with the latest in
courseScripts.
--Mike

Revision 1069 - Directory Listing
Modified Mon Jun 9 02:01:41 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
courseScripts.
In particular dvipng is active in this script to make HTML_img
useable in WeBWorK2.0.  Not yet finished with this.
--Mike

Revision 1068 - Directory Listing
Modified Mon Jun 9 01:59:37 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
in courseScripts
--Mike

Revision 1066 - Directory Listing
Modified Mon Jun 9 00:54:33 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
--Mike

Revision 1064 - Directory Listing
Modified Mon Jun 9 00:34:51 2003 UTC (9 years, 11 months ago) by gage
Original Path: trunk/pg
Adding recent macro files to the pg collection
--Mike

Revision 1050 - Directory Listing
Added Fri Jun 6 21:39:42 2003 UTC (9 years, 11 months ago) by sh002i
Original Path: trunk/pg
moved PG modules and macro files from webwork-modperl to pg
-sam

Sort log by: