--- loncom/homework/chemresponse.pm 2003/06/30 20:41:12 1.7
+++ loncom/homework/chemresponse.pm 2005/02/18 05:37:42 1.47
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# chemical equation style response
#
-# $Id: chemresponse.pm,v 1.7 2003/06/30 20:41:12 albertel Exp $
+# $Id: chemresponse.pm,v 1.47 2005/02/18 05:37:42 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -32,14 +32,42 @@ use Apache::lonxml;
use Apache::lonnet;
BEGIN {
- &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse'));
+ &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse','chem'));
}
-sub seperate_jme_window {
+sub chem_standard_order {
+ my ($reaction) = @_;
+ my ($re,$pr) = split(/->|<=>/,$reaction);
+ my @reactants = split(/\s\+/,$re);
+ my @products = split(/\s\+/,$pr);
+ foreach my $substance (@reactants,@products) {
+ $substance =~ s/(\^\d*)\s+/$1_/g; # protect superscript space
+ $substance =~ s/\s*//g; # strip whitespace
+ $substance =~ s/_/ /g; # restore superscript space
+ }
+ @reactants = sort @reactants;
+ @products = sort @products;
+ my $standard = '';
+ foreach my $substance (@reactants) {
+ $standard .= $substance;
+ $standard .= ' + ';
+ }
+ $standard =~ s/ \+ $//; # get rid of trailing plus sign
+ $standard .= ' -> ';
+ foreach my $substance (@products) {
+ $standard .= $substance;
+ $standard .= ' + ';
+ }
+ $standard =~ s/ \+ $//; # get rid of trailing plus sign
+ return $standard;
+}
+
+sub separate_jme_window {
my ($smile_input,$jme_input,$molecule,$options)=@_;
my $smilesection;
if (defined($smile_input)) {
$smilesection=<'; }
my $body=<
Molecule Editor
-
-