/[suikacvs]/messaging/manakai/bin/daf.pl
Suika

Diff of /messaging/manakai/bin/daf.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.15 by wakaba, Sat May 20 05:11:37 2006 UTC revision 1.19 by wakaba, Sun Nov 5 10:57:29 2006 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl -w  #!/usr/bin/perl -w
2  use strict;  use strict;
3  use Message::Util::QName::Filter {  use Message::Util::QName::Filter {
   c => q<http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#>,  
   DIS => q<http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#>,  
4    dis => q<http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis-->,    dis => q<http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis-->,
5    dp => q<http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Perl/>,    dp => q<http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Perl/>,
   fe => q<http://suika.fam.cx/www/2006/feature/>,  
6    ManakaiDOM => q<http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#>,    ManakaiDOM => q<http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#>,
   pc => q<http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/PerlCode#>,  
7    swcfg21 => q<http://suika.fam.cx/~wakaba/archive/2005/swcfg21#>,    swcfg21 => q<http://suika.fam.cx/~wakaba/archive/2005/swcfg21#>,
   Util => q<http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/>,  
8  };  };
9    
10  our$VERSION=do{my @r=(q$Revision$=~/\d+/g);sprintf "%d."."%02d" x $#r,@r};  our$VERSION=do{my @r=(q$Revision$=~/\d+/g);sprintf "%d."."%02d" x $#r,@r};
# Line 19  use Pod::Usage; Line 14  use Pod::Usage;
14  our %Opt = (create_module => []);  our %Opt = (create_module => []);
15  my @target_modules;  my @target_modules;
16  GetOptions (  GetOptions (
17      'create-dtd-driver=s' => sub {
18        shift;
19        my $i = [split /\s+/, shift, 3];
20        $i->[3] = 'dtd-driver';
21        push @{$Opt{create_module}}, $i;
22      },
23    'create-dtd-modules=s' => sub {    'create-dtd-modules=s' => sub {
24      shift;      shift;
25      my $i = [split /\s+/, shift, 3];      my $i = [split /\s+/, shift, 3];
# Line 44  GetOptions ( Line 45  GetOptions (
45    'daem-file-suffix=s' => \$Opt{daem_suffix},    'daem-file-suffix=s' => \$Opt{daem_suffix},
46    'dafs-file-suffix=s' => \$Opt{dafs_suffix},    'dafs-file-suffix=s' => \$Opt{dafs_suffix},
47    'dafx-file-suffix=s' => \$Opt{dafx_suffix},    'dafx-file-suffix=s' => \$Opt{dafx_suffix},
48      'dtd-file-suffix=s' => \$Opt{dtd_suffix},
49    'help' => \$Opt{help},    'help' => \$Opt{help},
50    'load-module=s' => sub {    'load-module=s' => sub {
51      shift;      shift;
# Line 98  $Opt{dis_suffix} = '.dis' unless defined Line 100  $Opt{dis_suffix} = '.dis' unless defined
100  $Opt{daem_suffix} = '.dafm' unless defined $Opt{daem_suffix};  $Opt{daem_suffix} = '.dafm' unless defined $Opt{daem_suffix};
101  $Opt{dafx_suffix} = '.dafx' unless defined $Opt{dafx_suffix};  $Opt{dafx_suffix} = '.dafx' unless defined $Opt{dafx_suffix};
102  $Opt{dafs_suffix} = '.dafs' unless defined $Opt{dafs_suffix};  $Opt{dafs_suffix} = '.dafs' unless defined $Opt{dafs_suffix};
103    $Opt{dtd_suffix} = '.dtd' unless defined $Opt{dtd_suffix};
104  $Opt{mod_suffix} = '.mod' unless defined $Opt{mod_suffix};  $Opt{mod_suffix} = '.mod' unless defined $Opt{mod_suffix};
 $Message::DOM::DOMFeature::DEBUG = 1 if $Opt{debug};  
105  require Error;  require Error;
106  $Error::Debug = 1 if $Opt{debug};  $Error::Debug = 1 if $Opt{debug};
107  $Message::Util::Error::VERBOSE = 1 if $Opt{verbose};  $Message::Util::Error::VERBOSE = 1 if $Opt{verbose};
# Line 131  sub verbose_msg_ ($) { Line 133  sub verbose_msg_ ($) {
133  my $start_time;  my $start_time;
134  BEGIN { $start_time = time }  BEGIN { $start_time = time }
135    
136  use Message::Util::DIS::DNLite;  use Message::DOM::DOMCore;
   
 my %feature;  
137    
138  for (@{$Opt{create_module}}) {  for (@{$Opt{create_module}}) {
139    my (undef, undef, undef, $out_type) = @$_;    my (undef, undef, undef, $out_type) = @$_;
140    
141    if ($out_type eq 'perl-pm') {    if ($out_type eq 'perl-pm') {
142      require 'manakai/daf-perl-pm.pl';      require 'manakai/daf-perl-pm.pl';
     $feature{'+' . ExpandedURI q<Util:PerlCode>} = '1.0';  
143    } elsif ($out_type eq 'perl-t') {    } elsif ($out_type eq 'perl-t') {
144      require 'manakai/daf-perl-t.pl';      require 'manakai/daf-perl-t.pl';
     $feature{ExpandedURI q<fe:GenericLS>} = '3.0';  
     $feature{'+' . ExpandedURI q<DIS:TDT>} = '1.0';  
     $feature{'+' . ExpandedURI q<Util:PerlCode>} = '1.0';  
145    } elsif ($out_type eq 'dtd-modules') {    } elsif ($out_type eq 'dtd-modules') {
146      require 'manakai/daf-dtd-modules.pl';      require 'manakai/daf-dtd-modules.pl';
147      $feature{ExpandedURI q<fe:GenericLS>} = '3.0';    } elsif ($out_type eq 'dtd-driver') {
148      $feature{'+' . ExpandedURI q<fe:XDP>} = '3.0';      require 'manakai/daf-dtd-modules.pl';
149    }    }
150  }  }
151    
152  our $limpl = $Message::DOM::ImplementationRegistry->get_implementation  our $impl = $Message::DOM::ImplementationRegistry->get_implementation;
                            ({ExpandedURI q<fe:Min> => '3.0',  
                              '+' . ExpandedURI q<DIS:DNLite> => '1.0',  
                              '+' . ExpandedURI q<DIS:Core> => '1.0',  
                              %feature,  
                            });  
 our $impl = $limpl->get_feature (ExpandedURI q<DIS:Core> => '1.0');  
153    
154  ## --- Loading and Updating the Database  ## --- Loading and Updating the Database
155    
# Line 169  $db->pl_database_module_resolver (\&daf_ Line 159  $db->pl_database_module_resolver (\&daf_
159  $db->dom_config->set_parameter ('error-handler' => \&daf_on_error);  $db->dom_config->set_parameter ('error-handler' => \&daf_on_error);
160    
161  my $parser = $impl->create_dis_parser;  my $parser = $impl->create_dis_parser;
 my $DNi = $impl->get_feature (ExpandedURI q<DIS:DNLite> => '1.0');  
162  my %ModuleSourceDISDocument;  my %ModuleSourceDISDocument;
163  my %ModuleSourceDNLDocument;  my %ModuleSourceDNLDocument;
164  my %ModuleNameNamespaceBinding = (  my %ModuleNameNamespaceBinding = (
# Line 262  $db->read_properties (on_resource_read = Line 251  $db->read_properties (on_resource_read =
251      status_msg_ " " if ($ResourceCount % (10 * 10)) == 0;      status_msg_ " " if ($ResourceCount % (10 * 10)) == 0;
252      status_msg '' if ($ResourceCount % (10 * 50)) == 0;      status_msg '' if ($ResourceCount % (10 * 50)) == 0;
253    }    }
254  });  }, implementation => $impl);
255  status_msg '';  status_msg '';
256  status_msg "done";  status_msg "done";
257    
# Line 296  status_msg "done"; Line 285  status_msg "done";
285    
286  daf_check_undefined ();  daf_check_undefined ();
287    
 undef $DNi;  
288  undef %ModuleSourceDNLDocument;  undef %ModuleSourceDNLDocument;
289  exit $HasError if $HasError;  exit $HasError if $HasError;
290    
# Line 311  for (@{$Opt{create_module}}) { Line 299  for (@{$Opt{create_module}}) {
299      daf_perl_t ($mod_uri, $out_file_path, $mod_for);      daf_perl_t ($mod_uri, $out_file_path, $mod_for);
300    } elsif ($out_type eq 'dtd-modules') {    } elsif ($out_type eq 'dtd-modules') {
301      daf_dtd_modules ($mod_uri, $out_file_path, $mod_for);      daf_dtd_modules ($mod_uri, $out_file_path, $mod_for);
302      } elsif ($out_type eq 'dtd-driver') {
303        daf_dtd_driver ($mod_uri, $out_file_path, $mod_for);
304    }    }
305  }  }
306    
# Line 323  $db->free; Line 313  $db->free;
313  undef $db;  undef $db;
314  status_msg "done";  status_msg "done";
315    
 undef $limpl;  
316  undef $impl;  undef $impl;
317    
318  {  {
# Line 416  sub daf_convert_dis_document_to_dnl_docu Line 405  sub daf_convert_dis_document_to_dnl_docu
405      my $dis_doc = $ModuleSourceDISDocument{$module_uri};      my $dis_doc = $ModuleSourceDISDocument{$module_uri};
406      next M unless $dis_doc;      next M unless $dis_doc;
407      verbose_msg_ qq<Converting <$module_uri>...>;      verbose_msg_ qq<Converting <$module_uri>...>;
408      my $dnl_doc = $DNi->convert_dis_document_to_dnl_document      my $dnl_doc = $impl->convert_dis_document_to_dnl_document
409                            ($dis_doc, database_arg => $db,                            ($dis_doc, database_arg => $db,
410                             base_namespace_binding =>                             base_namespace_binding =>
411                               {(map {$_->local_name => $_->target_namespace_uri}                               {(map {$_->local_name => $_->target_namespace_uri}

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.19

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24