aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Build.PL17
-rw-r--r--lib/WebCoso.pm8
-rw-r--r--lib/WebCoso/Collection.pm133
-rw-r--r--lib/WebCoso/Collections.pm74
-rw-r--r--lib/WebCoso/Config.pm176
-rw-r--r--lib/WebCoso/Driver.pm19
-rw-r--r--lib/WebCoso/Pipeline.pm18
-rw-r--r--lib/WebCoso/Pipeline/Base.pm43
-rw-r--r--lib/WebCoso/Pipeline/Id.pm8
-rw-r--r--lib/WebCoso/Resource.pm183
-rw-r--r--lib/WebCoso/Step.pm18
-rw-r--r--lib/WebCoso/Step/Base.pm7
-rw-r--r--lib/WebCoso/Step/ReST/SplitLang.pm87
-rw-r--r--lib/WebCoso/Step/ReST/ToXml.pm139
-rw-r--r--lib/WebCoso/X.pm95
-rw-r--r--t/01-config.t300
-rw-r--r--t/02-driver.t36
-rw-r--r--t/03-pipeline.t53
-rw-r--r--t/04-resource.t84
-rw-r--r--t/05-naming.t43
-rw-r--r--t/lib/WebCoso/Pipeline/Test.pm29
-rw-r--r--t/lib/WebCoso/Step/Step1.pm26
-rw-r--r--t/lib/WebCoso/Step/Step2.pm26
-rw-r--r--t/src/file1.rest.txt4
-rw-r--r--t/steps/rest-splitlang.t103
-rw-r--r--t/steps/rest-xml.t156
26 files changed, 0 insertions, 1885 deletions
diff --git a/Build.PL b/Build.PL
deleted file mode 100644
index aaaf0dc..0000000
--- a/Build.PL
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/perl
-use Module::Build;
-
-my $build=Module::Build->new(
- module_name => 'WebCoso',
- license => 'GPL',
- requires => {
- Class::Std => 0,
- Path::Class => 0,
- Exporter::Lite => 0,
- },
- build_requires => {
- Test::More => 0,
- },
- recusive_test_files => 1,
-);
-$build->create_build_script();
diff --git a/lib/WebCoso.pm b/lib/WebCoso.pm
deleted file mode 100644
index 67bee2f..0000000
--- a/lib/WebCoso.pm
+++ /dev/null
@@ -1,8 +0,0 @@
-package WebCoso;
-use strict;
-use warnings;
-use vars '$VERSION';
-
-$VERSION='0.1';
-
-1;
diff --git a/lib/WebCoso/Collection.pm b/lib/WebCoso/Collection.pm
deleted file mode 100644
index 42442f1..0000000
--- a/lib/WebCoso/Collection.pm
+++ /dev/null
@@ -1,133 +0,0 @@
-package WebCoso::Collection;
-use strict;
-use warnings;
-use Class::Std;
-use Scalar::Util 'weaken';
-use List::MoreUtils 'any';
-use WebCoso::Config;
-
-{
-my %names_of :ATTR( :get<names> );
-my %parents_of :ATTR( :get<parents_ref> );
-my %children_of :ATTR( :get<children_ref> );
-my %resources_of :ATTR( :init_arg<resources> :get<resources_ref> );
-
-sub BUILD {
- my ($self,$ident,$args_ref)=@_;
-
- my $names=$args_ref->{name};
- # trasformo un nome semplice in un nome "per qualsiasi lingua"
- $names={''=>$names} unless ref($names) eq 'HASH';
- $names_of{$ident}=$names;
-
- my $parents=$args_ref->{parents} || [];
- $parents_of{$ident}=$parents;
- $_->add_child($self) for @$parents;
-
- my $children=$args_ref->{children} || [];
- $children_of{$ident}=$children;
- $_->add_parent($self) for @$children;
-
- $resources_of{$ident}=[];
-
- WebCoso::Config->add_collection($self);
-
- return;
-}
-
-sub get_axes {
- return 'language';
-}
-
-sub get_axis_values {
- my ($self,$axis_name)=@_;
- if ($axis_name eq 'language') {
- return grep { $_ } keys %{ $self->get_names() }
- }
- else {
- return;
- }
-}
-
-sub get_properties {
- my ($self,$axis_name,$axis_value,@rest)=@_;
-
- if (@rest==0 and $axis_name eq 'language') {
- if ( any { $_ eq $axis_value }
- keys %{ $self->get_names() }
- ) {
- return {
- name => $self->get_names()->{$axis_value}
- };
- }
- elsif (exists ${$self->get_names()}{''}) {
- return {
- name => $self->get_names()->{''}
- };
- }
- else {
- return;
- }
- }
-}
-
-sub add_child {
- my ($self,$child)=@_;
-
- return if any { $_ eq $child } @{ $self->get_children_ref() };
-
- push @{ $self->get_children_ref() },$child;
- $child->add_parent($self);
-
- return;
-}
-sub add_parent {
- my ($self,$parent)=@_;
-
- return if any { $_ eq $parent } @{ $self->get_parents_ref() };
-
- my $weak_parent=$parent;
- weaken $weak_parent;
-
- push @{ $self->get_parents_ref() },$weak_parent;
- $parent->add_child($self);
-
- return;
-}
-sub add_res {
- my ($self, @resources)=@_;
-
- # creo una tabellina di look-up per evitare i duplicati
- # NOTA: le chiavi sono stringhe, non ref, non si può usare per
- # pescare gli oggetti
- my %res_key;
- @res_key{ @{ $self->get_resources_ref() } } = ();
-
- RESOURCES:
- for my $res (@resources) {
- next RESOURCES if exists $res_key{$res};
-
- push @{ $self->get_resources_ref() }, $res;
- $res_key{$res}=undef;
- $res->add_coll($self);
- }
-
- return;
-}
-
-sub get_parents {
- my ($self)=@_;
- return @{ $self->get_parents_ref() };
-}
-sub get_children {
- my ($self)=@_;
- return @{ $self->get_children_ref() };
-}
-sub get_resources {
- my ($self)=@_;
- return @{ $self->get_resources_ref() };
-}
-
-}
-
-1;
diff --git a/lib/WebCoso/Collections.pm b/lib/WebCoso/Collections.pm
deleted file mode 100644
index f0f9815..0000000
--- a/lib/WebCoso/Collections.pm
+++ /dev/null
@@ -1,74 +0,0 @@
-package WebCoso::Collections;
-use strict;
-use warnings;
-use Class::Std;
-use List::MoreUtils 'any';
-
-{
-my %collections_of :ATTR( :get<collections_ref> );
-
-sub BUILD {
- my ($self,$ident,$args_ref)=@_;
-
- $collections_of{$ident} = [];
-}
-
-sub add_collection {
- my ($self, $collection)=@_;
-
- return if any { $_ eq $collection } $self->get_all_collections();
-
- push @{ $self->get_collections_ref() }, $collection;
-}
-
-sub get_all_collections {
- my ($self)=@_;
- return @{ $self->get_collections_ref() };
-}
-
-sub get_root_collections {
- my ($self)=@_;
-
- return grep {
- $_->get_parents() == 0
- } $self->get_all_collections();
-}
-
-sub get_leaf_collections {
- my ($self)=@_;
-
- return grep {
- $_->get_children() == 0
- } $self->get_all_collections();
-}
-
-sub get_axes {
- return 'language';
-}
-
-sub get_axis_values {
- my ($self,$axis_name)=@_;
- if ($axis_name eq 'language') {
- return $self->_get_languages();
- }
- else {
- return;
- }
-}
-
-sub _get_languages {
- my ($self)=@_;
- my %langs=();
-
- for my $collection ($self->get_all_collections()) {
- @langs{ $collection->get_axis_values('language') } = ();
- }
-
- delete $langs{''};
-
- return keys %langs;
-}
-
-}
-
-1;
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm
deleted file mode 100644
index 018c3c7..0000000
--- a/lib/WebCoso/Config.pm
+++ /dev/null
@@ -1,176 +0,0 @@
-package WebCoso::Config;
-use strict;
-use warnings;
-use WebCoso::Collections;
-use WebCoso::Pipeline;
-use WebCoso::X;
-use utf8;
-
-my @resources;
-my $collections=WebCoso::Collections->new();
-my %resource_to_pipeline;
-my %name_to_resource;
-my %name_to_collection;
-
-sub read_scalar {
- my ($class,$content,$filename)=@_;
- $WebCoso::Config::Helpers::FILENAME=$filename;
- $content=<<'EOF'.$content;
-package WEBCOSO::CONFIG;
-no strict;
-WebCoso::Config::Helpers->import();
-EOF
- eval $content;
- if ($@) {
- WebCoso::X::ConfigError->throw(
- filename => $filename,
- nested => $@,
- );
- }
- my $symbols=\%WEBCOSO::CONFIG::;
- for my $name (keys %$symbols) {
- my $object=${*{$symbols->{$name}}{SCALAR}};
- my $type=ref($object);
- if ($type eq 'WebCoso::Resource') {
- $name_to_resource{$name}=$object;
- }
- elsif ($type eq 'WebCoso::Collection') {
- $name_to_collection{$name}=$object;
- }
- }
- return 1;
-}
-
-sub add_resource {
- my ($class,$resource)=@_;
- push @resources,$resource;
-}
-
-sub get_all_resources {
- return @resources;
-}
-
-sub get_res_by_name {
- my ($class,$name)=@_;
-
- if (exists $name_to_resource{$name}) {
- return $name_to_resource{$name};
- }
- else {
- WebCoso::X::NoSuchResource->throw(
- resource => $name
- );
- }
-}
-
-sub add_collection {
- my ($class,$collection)=@_;
- $collections->add_collection($collection);
-}
-
-sub get_collections {
- return $collections;
-}
-
-sub get_coll_by_name {
- my ($class,$name)=@_;
-
- if (exists $name_to_collection{$name}) {
- return $name_to_collection{$name};
- }
- else {
- WebCoso::X::NoSuchCollection->throw(
- collection => $name
- );
- }
-}
-
-sub get_pipeline_for {
- my ($class, $resource)=@_;
-
- WebCoso::X::NoSuchResource->throw(
- resource => $resource,
- ) unless exists $resource_to_pipeline{$resource};
-
- return $resource_to_pipeline{$resource};
-}
-
-sub clear {
- @resources=();
- $collections=WebCoso::Collections->new();
- %resource_to_pipeline=();
-}
-
-package WebCoso::Config::Helpers;
-use Path::Class;
-use WebCoso::Resource;
-use WebCoso::Collection;
-use Exporter::Lite;
-use vars qw($FILENAME @EXPORT);
-
-@EXPORT=qw(res coll);
-
-sub res {
- my $dest_filename=pop @_;
- my $short_pipeline_name=pop @_;
- my @source_files=@_;
-
- my $config_dir=file($FILENAME)->parent->absolute;
-
- $dest_filename=file($dest_filename)->absolute($config_dir);
-
- my @abs_source_files = map {
- file($_)->absolute($config_dir);
- } @source_files;
-
- my $pipeline_name="WebCoso::Pipeline::$short_pipeline_name";
-
- if (! WebCoso::Pipeline->is_pipeline($pipeline_name)) {
- WebCoso::X::NoSuchPipeline->throw(
- pipeline => $short_pipeline_name,
- );
- };
-
- my $resource=WebCoso::Resource->new();
- $resource->set_property(sources=>[@abs_source_files]);
- $resource->set_property(destination=>$dest_filename);
-
- for my $filename (@abs_source_files) {
- $resource->set_property(
- {filename=>$filename},
- datastream => sub{_open_file($filename)},
- );
- }
-
- WebCoso::Config->add_resource($resource);
-
- # brutto!
- $resource_to_pipeline{$resource}=$pipeline_name;
-
- return $resource;
-}
-
-sub coll {
- my ($name,$parents,$children,$resources)=@_;
-
- my $collection=WebCoso::Collection->new({
- name=>$name,
- parents=>$parents||[],
- children=>$children||[],
- resources=>$resources||[],
- });
-
- return $collection;
-}
-
-sub _open_file {
- my ($filename)=@_;
-
- open my $fh,'<:raw',$filename
- or WebCoso::X::OpenError->throw(
- filename => $filename,
- error => $!);
- return $fh;
-}
-
-1;
diff --git a/lib/WebCoso/Driver.pm b/lib/WebCoso/Driver.pm
deleted file mode 100644
index d5e1db8..0000000
--- a/lib/WebCoso/Driver.pm
+++ /dev/null
@@ -1,19 +0,0 @@
-package WebCoso::Driver;
-use strict;
-use warnings;
-use WebCoso::Config;
-
-sub run {
- my @resources=WebCoso::Config->get_all_resources();
-
- for my $resource (@resources) {
- WebCoso::Config->get_pipeline_for($resource)->process($resource,'meta');
- }
- for my $resource (@resources) {
- WebCoso::Config->get_pipeline_for($resource)->process($resource,'gen');
- }
-
- return 1;
-}
-
-1;
diff --git a/lib/WebCoso/Pipeline.pm b/lib/WebCoso/Pipeline.pm
deleted file mode 100644
index b45d431..0000000
--- a/lib/WebCoso/Pipeline.pm
+++ /dev/null
@@ -1,18 +0,0 @@
-package WebCoso::Pipeline;
-use strict;
-use warnings;
-use Module::Pluggable::Fast
- name => '_pipelines',
- search => [ 'WebCoso::Pipeline' ],
- require => 1;
-
-my @pipelines=_pipelines();
-my %pipelines;
-@pipelines{@pipelines}=();
-
-sub is_pipeline {
- my ($class,$pipeline_name)=@_;
- return exists $pipelines{$pipeline_name};
-}
-
-1;
diff --git a/lib/WebCoso/Pipeline/Base.pm b/lib/WebCoso/Pipeline/Base.pm
deleted file mode 100644
index 2402b84..0000000
--- a/lib/WebCoso/Pipeline/Base.pm
+++ /dev/null
@@ -1,43 +0,0 @@
-package WebCoso::Pipeline::Base;
-use strict;
-use warnings;
-use WebCoso::X;
-use WebCoso::Step;
-use base 'Class::Data::Inheritable';
-
-__PACKAGE__->mk_classdata('_steps');
-
-sub set_steps {
- my ($class,@steps)=@_;
-
- my @step_instances=();
-
- while (@steps) {
- my $step_name=shift @steps;
- my $step_init_args=shift @steps;
-
- my $full_step_name="WebCoso::Step::$step_name";
- if (! WebCoso::Step->is_step($full_step_name)) {
- WebCoso::X::NoSuchStep->throw(
- pipeline => $class,
- step => $_,
- );
- }
-
- push @step_instances,$full_step_name->new($step_init_args);
- }
-
- $class->_steps([@step_instances]);
-}
-
-sub process {
- my ($class, $resource,$stage)=@_;
-
- for my $step (@{$class->_steps()}) {
- $step->process($resource,$stage);
- }
-
- return 1;
-}
-
-1;
diff --git a/lib/WebCoso/Pipeline/Id.pm b/lib/WebCoso/Pipeline/Id.pm
deleted file mode 100644
index bcd5615..0000000
--- a/lib/WebCoso/Pipeline/Id.pm
+++ /dev/null
@@ -1,8 +0,0 @@
-package WebCoso::Pipeline::Id;
-use strict;
-use warnings;
-
-sub process {
-}
-
-1;
diff --git a/lib/WebCoso/Resource.pm b/lib/WebCoso/Resource.pm
deleted file mode 100644
index 7d462f3..0000000
--- a/lib/WebCoso/Resource.pm
+++ /dev/null
@@ -1,183 +0,0 @@
-package WebCoso::Resource;
-use strict;
-use warnings;
-use Class::Std;
-use Scalar::Util 'weaken';
-use List::MoreUtils 'any';
-#use WebCoso::X;
-#use Smart::Comments;$Data::Dumper::Useqq=1;
-
-{
-my %values_of :ATTR(:default<{}>);
-my %propnames_of :ATTR(:default<{}>);
-my %axes_of :ATTR(:default<{}>);
-my %collections_of :ATTR(:get<collections_ref> :default<[]>);
-
-sub get_axes {
- my ($self)=@_;
-
- return keys %{$axes_of{ident $self}};
-}
-
-sub get_axis_values {
- my ($self,$axis_name)=@_;
-
- return keys %{$axes_of{ident $self}->{$axis_name}};
-}
-
-sub set_property {
- my $self=shift;
- my $axes_spec= (ref($_[0]) eq 'HASH') ? (shift) : {};
- my ($prop_name,$prop_value)=@_;
-
- $self->_populate_axes_from($axes_spec);
- my $key=_genkey($axes_spec);
-
- $propnames_of{ident $self}->{$prop_name}=undef;
-
- $values_of{ident $self}->{$prop_name}->{$key}=$prop_value;
-
- return;
-}
-
-sub get_property {
- my $self=shift;
- my $axes_spec= (ref($_[0]) eq 'HASH') ? (shift) : {};
- my ($prop_name)=@_;
-
- ### $self
- ### $axes_spec
- ### $prop_name
-
- return unless exists $values_of{ident $self}->{$prop_name};
- my $values_ref=$values_of{ident $self}->{$prop_name};
-
- ### $values_ref
-
- my $req_key=_genkey($axes_spec);
- my @keys=sort {($a=~tr/\001//) <=> ($b=~tr/\001//)} keys %$values_ref;
-
- for my $key (@keys) {
- ### testing key: $key
-
- my $key_rx=_genrx_from_key($key);
-
- if ($req_key =~ m{$key_rx}) {
- return $values_ref->{$key};
- }
- }
-
- return;
-}
-
-sub get_property_fh {
- my $self=shift;
- my $axes_spec= (ref($_[0]) eq 'HASH') ? (shift) : {};
- my ($prop_name)=@_;
-
- my $prop_value=$self->get_property($axes_spec,$prop_name);
-
- return unless defined $prop_value;
-
- if (ref($prop_value) eq 'CODE') {
- $prop_value=$prop_value->();
- }
-
- if (ref($prop_value)) { # speriamo filehandle...
- open my $fh,'<&',$prop_value; # dup in lettura
- seek $fh,0,0;
- return $fh;
- }
- else { # speriamo stringa...
- my $val="$prop_value";
- open my $fh,'<',\$val;
- return $fh;
- }
-}
-
-sub get_property_string {
- my $self=shift;
- my $axes_spec= (ref($_[0]) eq 'HASH') ? (shift) : {};
- my ($prop_name)=@_;
-
- my $prop_value=$self->get_property($axes_spec,$prop_name);
-
- return unless defined $prop_value;
-
- if (ref($prop_value) eq 'CODE') {
- $prop_value=$prop_value->();
- }
-
- if (ref($prop_value)) { # speriamo filehandle...
- seek $prop_value,0,0;
- return do {local $/;<$prop_value>}
- }
- else {
- return "$prop_value";
- }
-}
-
-sub get_collections {
- my ($self)=@_;
-
- return @{ $self->get_collections_ref() };
-}
-
-sub add_coll {
- my ($self, $collection)=@_;
-
- return if any { $_ eq $collection } @{ $self->get_collections_ref() };
-
- my $weak_collection = $collection;
- weaken $weak_collection;
-
- push @{ $self->get_collections_ref() }, $weak_collection;
-
- $collection->add_res($self);
-
- return;
-}
-
-sub _populate_axes_from {
- my ($self,$axes_spec)=@_;
-
- while (my ($axis_name,$axis_value)=each %$axes_spec) {
- my $axis_value_set=($axes_of{ident $self}->{$axis_name} ||= {});
- $axis_value_set->{$axis_value}=undef;
- }
-
- return;
-}
-
-sub _genkey {
- my ($axes_spec)=@_;
-
- my $key="\000";
- $key.=join "\000",map {$_."\001".$axes_spec->{$_}} sort keys %$axes_spec;
- $key.="\000";
-
- ### chiave: $key
-
- return $key;
-}
-
-sub _genrx_from_key {
- my ($key)=@_;
-
- my (undef,@axes)=split /\000/,$key;
-
- ### axes form key: \@axes
-
- my $rx="(?:";
- $rx.=join "\000).*?(?:",map {quotemeta($_)} @axes;
- $rx.=")";
- $rx=qr{^\000.*?${rx}(?:\000|$)};
-
- ### regexp: $rx
-
- return $rx;
-}
-
-}
-
-1;
diff --git a/lib/WebCoso/Step.pm b/lib/WebCoso/Step.pm
deleted file mode 100644
index 71a4f07..0000000
--- a/lib/WebCoso/Step.pm
+++ /dev/null
@@ -1,18 +0,0 @@
-package WebCoso::Step;
-use strict;
-use warnings;
-use Module::Pluggable::Fast
- name => '_steps',
- search => [ 'WebCoso::Step' ],
- require => 1;
-
-my @steps=_steps();
-my %steps;
-@steps{@steps}=();
-
-sub is_step {
- my ($class,$step_name)=@_;
- return exists $steps{$step_name};
-}
-
-1;
diff --git a/lib/WebCoso/Step/Base.pm b/lib/WebCoso/Step/Base.pm
deleted file mode 100644
index 8e73705..0000000
--- a/lib/WebCoso/Step/Base.pm
+++ /dev/null
@@ -1,7 +0,0 @@
-package WebCoso::Step::Base;
-use strict;
-use warnings;
-use Class::Std;
-use WebCoso::X;
-
-1;
diff --git a/lib/WebCoso/Step/ReST/SplitLang.pm b/lib/WebCoso/Step/ReST/SplitLang.pm
deleted file mode 100644
index cdbc109..0000000
--- a/lib/WebCoso/Step/ReST/SplitLang.pm
+++ /dev/null
@@ -1,87 +0,0 @@
-package WebCoso::Step::ReST::SplitLang;
-use strict;
-use warnings;
-use base 'WebCoso::Step';
-use Class::Std;
-
-{
-
-=head2 Che fa
-
-Prende il sorgente da {filename=>'sperosiaunosolo'}->datastream, cerca
-righe della forma
-
- ^\s*.. lang:: (\w*)
-
-raccoglie tutti i C<$1>, e quelle sono le lingue (C<''> sta per 'tutte
-le lingue')
-
-Splitta poi in {language=>'$1'}->rstdoc (stringhe)
-
-Fa tutto alla prima passata
-
-=cut
-
-my %srckey_of :ATTR(:init_arg<from> :get<srckey> :default<datastream>);
-my %dstkey_of :ATTR(:init_arg<to> :get<dstkey> :default<rstdoc>);
-
-my $lang_re=qr{^\s*\.\.\s+lang::(?:\s+(\w+))?\s*$};
-
-sub process {
- my ($self,$resource,$stage)=@_;
-
- return unless $stage eq 'meta';
-
- my $srckey=$self->get_srckey();
- my $dstkey=$self->get_dstkey();
-
- my $fh=$resource->get_property_fh($srckey);
- if (!defined $fh) {
- my ($filename)=$resource->get_axis_values('filename');
- $fh=$resource->get_property_fh({filename=>$filename},$srckey);
- }
-
- binmode $fh,':utf8';
-
- # raccolgo le lingue usate
- my %langs=(''=>undef);
- seek $fh,0,0;
- while (my $line=<$fh>) {
- if ($line =~ m{$lang_re}) {
- $langs{$1||''}=undef;
- }
- }
- delete $langs{''};
- seek $fh,0,0;
-
- if (%langs) { # multilingua: split!
- my $curlang='';my %docs=();
- while (my $line=<$fh>) {
- if ($line =~ m{$lang_re}) {
- $curlang=$1||'';
- next;
- }
- if ($curlang) {
- $docs{$curlang}.=$line;
- }
- else { # 'any', per cui scrivo su tutti
- $docs{$_}.=$line for keys %langs;
- }
- }
- # salvo
- $resource->set_property({language=>$_},$dstkey=>$docs{$_})
- for keys %langs;
- }
- else { # monolingua: passa il filehandle
- $resource->set_property($dstkey=>$fh);
- }
-
- # rimetto a posto il filehandle
- seek $fh,0,0;
-
- return;
-}
-
-}
-
-1;
diff --git a/lib/WebCoso/Step/ReST/ToXml.pm b/lib/WebCoso/Step/ReST/ToXml.pm
deleted file mode 100644
index f5cf5a9..0000000
--- a/lib/WebCoso/Step/ReST/ToXml.pm
+++ /dev/null
@@ -1,139 +0,0 @@
-package WebCoso::Step::ReST::ToXml;
-use strict;
-use warnings;
-use base 'WebCoso::Step';
-use Class::Std;
-use Inline 'Python';
-use XML::LibXML;
-use Encode;
-
-{
-
-=head2 Che fa
-
-prende i {language=>'quelchece'}->rstdoc, li passa a docutils, prende
-l'xml, lo passa al parser, e salva il dom in
-{language=>'quelchece'}->xmldom
-
-suppone venga tutto da un solo file
-
-Fa tutto alla prima passata, e raccatta un po' di meta
-
-=cut
-
-my %srckey_of :ATTR(:init_arg<from> :get<srckey> :default<rstdoc>);
-my %dstkey_of :ATTR(:init_arg<to> :get<dstkey> :default<xmldom>);
-
-my $xml_parser=XML::LibXML->new();
-$xml_parser->load_ext_dtd(0);
-$xml_parser->clean_namespaces(1);
-
-sub process {
- my ($self,$resource,$stage)=@_;
-
- return unless $stage eq 'meta';
-
- my ($src_path)=$resource->get_axis_values('filename');
-
- my $srckey=$self->get_srckey();
- my $dstkey=$self->get_dstkey();
-
- my ($rst_doc,$xml_dom);
- $rst_doc=$resource->get_property_string($srckey);
- if (defined $rst_doc) { # monolingua
- my $dom=rst2xml($rst_doc,$src_path);
- $resource->set_property(
- $dstkey,
- $dom,
- );
- $self->_set_meta($resource,$dom);
- }
- else { # multilingua
- my @langs=$resource->get_axis_values('language');
- for my $cur_lang (@langs) {
- $rst_doc=$resource->get_property_string({language=>$cur_lang},$srckey);
- my $dom=rst2xml($rst_doc,$src_path,$cur_lang);
- $resource->set_property(
- {language=>$cur_lang},
- $dstkey,
- $dom,
- );
- $self->_set_meta($resource,$cur_lang,$dom);
- }
- }
-
- return;
-}
-
-{
-my %docinfo_fields=(
- title => '/document/title',
- subtitle => '/document/subtitle',
- author => '/document/docinfo/author|/document/docinfo/authors/author',
- version => '/document/docinfo/version',
- status => '/document/docinfo/status',
- date => '/document/docinfo/date',
- creation_date => '/document/docinfo/field[field_name="CreationDate"]/field_body',
-);
-my $collections='/document/docinfo/field[field_name="Collection"]/field_body|/document/docinfo/field[field_name="Collections"]/field_body//list_item';
-sub _set_meta {
- my ($self,$res,$lang,$dom)=@_;
-
- if ($dom) { # 4 parametri
- $lang={language=>$lang};
- }
- else { # 3 parametri: monolingua
- $dom=$lang;
- $lang={};
- }
-
- for my $meta (keys %docinfo_fields) {
- my @nodes=$dom->findnodes($docinfo_fields{$meta});
- next unless @nodes;
- @nodes=map {$_->textContent()} @nodes;
- if (@nodes==1) {
- $res->set_property($lang,$meta,$nodes[0]);
- }
- else {
- $res->set_property($lang,$meta,[@nodes]);
- }
- }
-
- # per questo serve poter chiamare coll e res per nome TODO
- #my @collections=$dom->findnodes($collections);
- #return unless @collections;
- #@collections=map {$_->textContent()} @collections;
-
- #$res->add_coll($_) for @collections;
-
- return;
-}
-}
-
-sub rst2xml {
- my ($rst_string,$source_path,$language)=@_;
-
- $rst_string=Encode::encode('utf-8',$rst_string);
- my $xml_string=_rst2xml($rst_string,$source_path,'en');
- $xml_parser->base_uri($source_path);
- return $xml_parser->parse_string($xml_string);
-}
-
-}
-1;
-__DATA__
-__Python__
-
-import locale
-import docutils.core
-
-def _rst2xml(source,source_path,language):
- return docutils.core.publish_string(
- source,source_path=source_path,
- writer_name='xml',
- settings_overrides={
- 'input_encoding':'utf-8',
- 'output_encoding':'utf-8',
- 'language_code':language,
- },
- )
diff --git a/lib/WebCoso/X.pm b/lib/WebCoso/X.pm
deleted file mode 100644
index a882709..0000000
--- a/lib/WebCoso/X.pm
+++ /dev/null
@@ -1,95 +0,0 @@
-package WebCoso::X;
-use utf8;
-use strict;
-use warnings;
-
-use Exception::Class
- (
- 'WebCoso::X::Base' => {
- description => 'eccezione di base',
- },
- 'WebCoso::X::FileError' => {
- isa => 'WebCoso::X::Base',
- fields => [ 'filename' ],
- description => 'classe base per errori relativi a file',
- },
- 'WebCoso::X::ConfigError' => {
- isa => 'WebCoso::X::FileError',
- fields => [ 'nested' ],
- description => 'errore nel file di configurazione',
- },
- 'WebCoso::X::FileNotFound' => {
- isa => 'WebCoso::X::FileError',
- fields => [ 'abs_filename' ],
- description => 'un file di una risorsa non è presente',
- },
- 'WebCoso::X::OpenError' => {
- isa => 'WebCoso::X::FileError',
- description => ' non è stato possibile aprire un file',
- },
- 'WebCoso::X::NoSuchPipeline' => {
- isa => 'WebCoso::X::Base',
- fields => [ 'pipeline' ],
- description => 'è stata richiesta una pipeline ignota',
- },
- 'WebCoso::X::NoSuchResource' => {
- isa => 'WebCoso::X::Base',
- fields => [ 'resource' ],
- description => 'è stata richiesta una risorsa ignota',
- },
- 'WebCoso::X::NoSuchCollection' => {
- isa => 'WebCoso::X::Base',
- fields => [ 'collection' ],
- description => 'è stata richiesta una collezione ignota',
- },
- 'WebCoso::X::NoSuchStep' => {
- isa => 'WebCoso::X::Base',
- fields => [ 'pipeline', 'step' ],
- description => 'una pipeline vuole usare uno step ignoto',
- },
- );
-
-WebCoso::X::Base->Trace(1);
-
-sub WebCoso::X::ConfigError::full_message {
- my ($self)=@_;
- return 'Errore di configuazione: ' . $self->nested();
-}
-
-sub WebCoso::X::FileError::full_message {
- my ($self)=@_;
- return 'Errore relativo al file: ' . $self->filename();
-}
-
-sub WebCoso::X::FileNotFoundError::full_message {
- my ($self)=@_;
- return 'Impossibile trovare il file: ' . $self->filename();
-}
-
-sub WebCoso::X::OpenError::full_message {
- my ($self)=@_;
- return 'Impossibile aprire il file: ' . $self->filename();
-}
-
-sub WebCoso::X::NoSuchPipeline::full_message {
- my ($self)=@_;
- return 'Pipeline ignota: ' . $self->pipeline();
-}
-
-sub WebCoso::X::NoSuchResource::full_message {
- my ($self)=@_;
- return 'Risorsa ignota: ' . $self->resource();
-}
-
-sub WebCoso::X::NoSuchCollection::full_message {
- my ($self)=@_;
- return 'Collezione ignota: ' . $self->collection();
-}
-
-sub WebCoso::X::NoSuchStep::full_message {
- my ($self)=@_;
-
- return 'La pipeline ' . $self->pipeline() . ' vuole usare lo step ' . $self->step() . ' che è ignoto';
-}
-
-1;
diff --git a/t/01-config.t b/t/01-config.t
deleted file mode 100644
index 3e82cd2..0000000
--- a/t/01-config.t
+++ /dev/null
@@ -1,300 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-use Path::Class;
-use Test::More 'no_plan';
-use Test::Exception;
-
-my $thisdir=file($0)->parent->absolute;
-
-BEGIN { use_ok('WebCoso::Config'); }
-
-{
-my $conf_file=<<'EOF';
-res('src/file1.rest.txt','Id','dst/file.html');
-EOF
-
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
- 'eseguita la configurazione');
-
-my @resources=WebCoso::Config->get_all_resources();
-is(scalar @resources,1,'una risorsa definta');
-
-isa_ok($resources[0],'WebCoso::Resource');
-is_deeply(
- [$resources[0]->get_axes()],
- ['filename'],
- 'un solo asse');
-is_deeply(
- [$resources[0]->get_axis_values('filename')],
- ["$thisdir/src/file1.rest.txt"],
- 'filename');
-my $content=$resources[0]->get_property_string({filename=>"$thisdir/src/file1.rest.txt"},'datastream');
-is($content,
- <<'EOF','');
-Titolo
-======
-
-testo
-EOF
-is_deeply(
- [$resources[0]->get_collections()],
- [],
- 'no collections');
-
-is(WebCoso::Config->get_pipeline_for($resources[0]),
- 'WebCoso::Pipeline::Id',
- 'si segna le pipeline');
-
-throws_ok {
- WebCoso::Config->get_pipeline_for('not-a-resource')
- }
- 'WebCoso::X::NoSuchResource',
- 'muore se gli si chiede una risorsa ignota';
-}
-
-WebCoso::Config->clear();
-
-{
-my $conf_file=<<'EOF';
-coll('coll1');
-EOF
-
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
- 'eseguita la configurazione');
-
-is(scalar WebCoso::Config->get_all_resources(),0,'nessuna risorsa');
-
-my $collections=WebCoso::Config->get_collections();
-isa_ok($collections,'WebCoso::Collections');
-my @collections=$collections->get_all_collections();
-is(scalar @collections,1,'una collezione');
-
-is_deeply(
- [$collections[0]->get_axes()],
- ['language'],
- 'multilingua');
-is_deeply(
- [$collections[0]->get_axis_values('language')],
- [],
- 'ma nessuna definita');
-is_deeply(
- [$collections->get_axes()],
- ['language'],
- 'multilingua, insieme');
-is_deeply(
- [$collections->get_axis_values('language')],
- [],
- 'ma nessuna definita, insieme');
-my $props=$collections[0]->get_properties(language=>'');
-isa_ok($props,'HASH');
-is_deeply(
- $props,
- {name=>'coll1'},
- 'solo il nome');
-
-is_deeply(
- [$collections[0]->get_parents()],
- [],
- 'no parents');
-is_deeply(
- [$collections[0]->get_children()],
- [],
- 'no children');
-is_deeply(
- [$collections[0]->get_resources()],
- [],
- 'no resources');
-is_deeply(
- [$collections->get_root_collections()],
- [@collections],
- 'una radice');
-is_deeply(
- [$collections->get_leaf_collections()],
- [@collections],
- 'una foglia');
-}
-
-WebCoso::Config->clear();
-
-{
-my $conf_file=<<'EOF';
-my $c1=coll({it=>'coll1',en=>'coll1-en'});
-coll('coll2',[],[$c1]);
-EOF
-
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
- 'eseguita la configurazione');
-
-my $collections=WebCoso::Config->get_collections();
-my @collections=$collections->get_all_collections();
-is(scalar @collections,2,'due collezioni');
-
-# qui sto assumendo che le collezioni vengano registrate in ordine di
-# definizione. Forse non sarà sempre vero
-
-is_deeply(
- [sort $collections[0]->get_axis_values('language')],
- ['en', 'it'],
- 'due lingue');
-is_deeply(
- [sort $collections->get_axis_values('language')],
- ['en', 'it'],
- 'due lingue');
-is(
- $collections[0]->get_properties(language=>'en')->{name},
- 'coll1-en',
- 'nome en');
-is(
- $collections[0]->get_properties(language=>'it')->{name},
- 'coll1',
- 'nome it');
-is(
- $collections[1]->get_properties(language=>'it')->{name},
- 'coll2',
- 'nome default');
-
-is_deeply(
- [$collections[0]->get_parents()],
- [$collections[1]],
- 'c2 padre di c1');
-is_deeply(
- [$collections[0]->get_children()],
- [],
- 'c1 no children');
-is_deeply(
- [$collections[1]->get_parents()],
- [],
- 'c2 no parents');
-is_deeply(
- [$collections[1]->get_children()],
- [$collections[0]],
- 'c1 figlio di c2');
-is_deeply(
- [$collections->get_root_collections()],
- [$collections[1]],
- 'una radice');
-is_deeply(
- [$collections->get_leaf_collections()],
- [$collections[0]],
- 'una foglia');
-}
-
-WebCoso::Config->clear();
-
-{
-my $conf_file=<<'EOF';
-$c1=coll({it=>'coll1',en=>'coll1-en'});
-$c2=coll('coll2',[],[$c1]);
-$c1->add_child($c2);
-EOF
-
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
- 'eseguita la configurazione (no strict)');
-
-my $collections=WebCoso::Config->get_collections();
-my @collections=$collections->get_all_collections();
-is(scalar @collections,2,'due collezioni');
-
-is_deeply(
- [$collections[1]->get_children()],
- [$collections[0]],
- 'c1 figlio di c2');
-is_deeply(
- [$collections[0]->get_parents()],
- [$collections[1]],
- 'c2 padre di c1');
- is_deeply(
- [$collections[0]->get_children()],
- [$collections[1]],
- 'c2 figlio di c1');
-is_deeply(
- [$collections[1]->get_parents()],
- [$collections[0]],
- 'c1 padre di c2');
-is_deeply(
- [$collections->get_root_collections()],
- [],
- 'nessuna radice');
-is_deeply(
- [$collections->get_leaf_collections()],
- [],
- 'nessuna foglia');
-}
-
-WebCoso::Config->clear();
-
-{
-my $conf_file=<<'EOF';
-$r1=res('src/file1.rest.txt','Id','dst/file.html');
-$c1=coll('coll1');
-$c1->add_res($r1);
-EOF
-
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
- 'eseguita la configurazione (no strict)');
-
-my @resources=WebCoso::Config->get_all_resources();
-my $collections=WebCoso::Config->get_collections();
-my @collections=$collections->get_all_collections();
-
-is(scalar @resources,1,'una risorsa');
-is(scalar @collections,1,'una collezione');
-is_deeply(
- [$resources[0]->get_collections()],
- [$collections[0]],
- 'aggancio r->c');
-is_deeply(
- [$collections[0]->get_resources()],
- [$resources[0]],
- 'aggancio c->r');
-}
-
-WebCoso::Config->clear();
-
-{
-my $conf_file=<<'EOF';
-$r1=res('src/file1.rest.txt','Id','dst/file.html');
-$c1=coll('coll1');
-$c2=coll('coll2');
-$c1->add_res($r1);
-$r1->add_coll($c1);
-$c2->add_res($r1);
-EOF
-
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
- 'eseguita la configurazione (no strict)');
-
-my @resources=WebCoso::Config->get_all_resources();
-my $collections=WebCoso::Config->get_collections();
-my @collections=$collections->get_all_collections();
-
-is(scalar @resources,1,'una risorsa');
-is(scalar @collections,2,'due collezioni');
-is_deeply(
- [sort $resources[0]->get_collections()],
- [sort $collections[0],$collections[1]],
- 'aggancio r->c');
-is_deeply(
- [$collections[0]->get_resources()],
- [$resources[0]],
- 'aggancio c->r');
-is_deeply(
- [$collections[1]->get_resources()],
- [$resources[0]],
- 'aggancio c->r');
-}
-
-WebCoso::Config->clear();
-
-{
-my $conf_file=<<'EOF';
-res('src/file1.rest.txt','NoSuchPipeline','dst/file.html');
-EOF
-
-throws_ok {
- WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test")
- }
- 'WebCoso::X::ConfigError',
- 'muore se la pipeline è ignota';
-}
diff --git a/t/02-driver.t b/t/02-driver.t
deleted file mode 100644
index bdcf78b..0000000
--- a/t/02-driver.t
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-use Path::Class;
-use Test::More 'no_plan';
-use Test::Exception;
-use lib 't/lib';
-use WebCoso::Config;
-
-my $thisdir=file($0)->parent->absolute;
-
-BEGIN { use_ok('WebCoso::Driver'); }
-
-my $conf_file=<<'EOF';
-res('src/file1.rest.txt','Test','dst/file.html');
-EOF
-
-WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test");
-
-ok(WebCoso::Driver->run(), 'il driver va');
-
-my @calls=WebCoso::Pipeline::Test->get_calls();
-my @resources=WebCoso::Config->get_all_resources();
-is(scalar @calls,2,'due chiamate');
-is($calls[0]->{resource},
- $resources[0],
- 'alla risorsa giusta (1)');
-is($calls[1]->{resource},
- $resources[0],
- 'alla risorsa giusta (2)');
-is($calls[0]->{stage},
- 'meta',
- 'stage1==meta');
-is($calls[1]->{stage},
- 'gen',
- 'stage1==gen');
diff --git a/t/03-pipeline.t b/t/03-pipeline.t
deleted file mode 100644
index a1b364b..0000000
--- a/t/03-pipeline.t
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-use Path::Class;
-use Test::More 'no_plan';
-use Test::Exception;
-use lib 't/lib';
-use WebCoso::Config;
-use WebCoso::Driver;
-use WebCoso::Pipeline::Test;
-
-my $thisdir=file($0)->parent->absolute;
-
-my $conf_file=<<'EOF';
-res('src/file1.rest.txt','Test','dst/file.html');
-EOF
-
-WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test");
-
-WebCoso::Driver->run();
-
-my @resources=WebCoso::Config->get_all_resources();
-
-my @calls1=@{WebCoso::Pipeline::Test->_steps()->[0]->get_calls()};
-is(scalar @calls1,2,"2 chiamata a Step1");
-is($calls1[0]->{resource},
- $resources[0],
- 'risorsa giusta passata a Step1(1)');
-is($calls1[1]->{resource},
- $resources[0],
- 'risorsa giusta passata a Step1(2)');
-is($calls1[0]->{stage},
- 'meta',
- 'stage1==meta (step1)');
-is($calls1[1]->{stage},
- 'gen',
- 'stage2==gen (step1)');
-
-my @calls2=@{WebCoso::Pipeline::Test->_steps()->[1]->get_calls()};
-is(scalar @calls2,2,"2 chiamata a Step2");
-is($calls2[0]->{resource},
- $resources[0],
- 'risorsa giusta passata a Step2(1)');
-is($calls2[1]->{resource},
- $resources[0],
- 'risorsa giusta passata a Step2(2)');
-is($calls2[0]->{stage},
- 'meta',
- 'stage1==meta (step2)');
-is($calls2[1]->{stage},
- 'gen',
- 'stage2==gen (step2)');
-
diff --git a/t/04-resource.t b/t/04-resource.t
deleted file mode 100644
index 808629f..0000000
--- a/t/04-resource.t
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-use Test::More 'no_plan';
-use Test::Exception;
-
-BEGIN { use_ok('WebCoso::Resource'); }
-
-my $r=WebCoso::Resource->new();
-
-isa_ok($r,'WebCoso::Resource');
-
-is_deeply([$r->get_axes()],[],'no axes');
-
-$r->set_property(prop1=>'value1');
-is($r->get_property('prop1'),'value1','simple global');
-is($r->get_property({},'prop1'),'value1','explicit global');
-is($r->get_property({a1=>1,a2=>3},'prop1'),'value1','over global');
-is_deeply([$r->get_axes()],[],'no axes');
-
-$r->set_property(prop1=>'value2');
-is($r->get_property('prop1'),'value2','simple global redef');
-is($r->get_property({},'prop1'),'value2','explicit global redef');
-is($r->get_property({a1=>1,a2=>3},'prop1'),'value2','over global redef');
-is_deeply([$r->get_axes()],[],'no axes');
-
-$r->set_property({},prop1=>'value3');
-is($r->get_property('prop1'),'value3','simple global redef');
-is($r->get_property({},'prop1'),'value3','explicit global redef');
-is($r->get_property({a1=>1,a2=>3},'prop1'),'value3','over global redef');
-is_deeply([$r->get_axes()],[],'no axes');
-
-$r->set_property({a1=>3},prop2=>'v1');
-ok(! defined $r->get_property('prop2'),'undef on generalization');
-is($r->get_property({a1=>3},'prop2'),'v1','specific');
-is($r->get_property({a1=>3,a2=>3},'prop2'),'v1','over specific');
-is_deeply([$r->get_axes()],['a1'],'1 axis');
-is_deeply([$r->get_axis_values('a1')],[3],'1 axis, 1 value');
-
-$r->set_property({a1=>2},prop2=>'v2');
-ok(! defined $r->get_property('prop2'),'undef on generalization');
-is($r->get_property({a1=>3},'prop2'),'v1','specific, oldval');
-is($r->get_property({a1=>3,a2=>3},'prop2'),'v1','over specific, oldval');
-is($r->get_property({a1=>2},'prop2'),'v2','specific, newval');
-is($r->get_property({a1=>2,a2=>3},'prop2'),'v2','over specific, newval');
-is_deeply([$r->get_axes()],['a1'],'1 axis');
-is_deeply([sort $r->get_axis_values('a1')],[2,3],'1 axis, 2 values');
-
-$r->set_property({a1=>1,a2=>2},prop3=>'vx');
-ok(! defined $r->get_property({a1=>1},'prop3'),'undef on generalization, 2');
-is_deeply([sort $r->get_axes()],['a1','a2'],'2 axes');
-is_deeply([sort $r->get_axis_values('a1')],[1,2,3],'1st axis, 3 values');
-is_deeply([sort $r->get_axis_values('a2')],[2],'2nd axis, 1 value');
-
-# test sui vari get_property_*
-
-$r=WebCoso::Resource->new();
-
-{
-open my $fh,'<',__FILE__;
-$r->set_property(fh=>$fh);
-}
-{
-my $fh=$r->get_property_fh('fh');
-is((scalar <$fh>),"#!/usr/bin/perl\n",'legge fh');
-}
-{
-my $content=$r->get_property_string('fh');
-like($content,qr{^#!/usr/bin/perl\n},'legge string');
-}
-
-$r->set_property(fh=>
- sub {
- open my $fh,'<',__FILE__;
- return $fh;
- });
-{
-my $fh=$r->get_property_fh('fh');
-is((scalar <$fh>),"#!/usr/bin/perl\n",'legge fh lazy');
-}
-{
-my $content=$r->get_property_string('fh');
-like($content,qr{^#!/usr/bin/perl\n},'legge string lazy');
-}
diff --git a/t/05-naming.t b/t/05-naming.t
deleted file mode 100644
index 5c645e0..0000000
--- a/t/05-naming.t
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-use Path::Class;
-use Test::More 'no_plan';
-use Test::Exception;
-use WebCoso::Config;
-
-my $thisdir=file($0)->parent->absolute;
-
-{
-my $conf_file=<<'EOF';
-$res1=res('src/file1','Id','dst/file1');
-$res2=res('src/file2','Id','dst/file2');
-$coll1=coll('collezione');
-EOF
-
-ok(WebCoso::Config->read_scalar($conf_file,"$thisdir/config-in-test"),
- 'eseguita la configurazione');
-is((WebCoso::Config->get_res_by_name('res1')
- ->get_axis_values('filename'))[0],
- "$thisdir/src/file1",
- 'ok primo nome');
-is((WebCoso::Config->get_res_by_name('res2')
- ->get_axis_values('filename'))[0],
- "$thisdir/src/file2",
- 'ok secondo nome');
-is(WebCoso::Config->get_coll_by_name('coll1')
- ->get_properties(language=>'')->{name},
- 'collezione',
- 'ok nome collezione');
-
-throws_ok {
- WebCoso::Config->get_res_by_name('coll1')
- }
- 'WebCoso::X::NoSuchResource',
- 'muore se si chiede il tipo errato (r-c)';
-throws_ok {
- WebCoso::Config->get_coll_by_name('res1')
- }
- 'WebCoso::X::NoSuchCollection',
- 'muore se si chiede il tipo errato (c-r)';
-}
diff --git a/t/lib/WebCoso/Pipeline/Test.pm b/t/lib/WebCoso/Pipeline/Test.pm
deleted file mode 100644
index 8c339ff..0000000
--- a/t/lib/WebCoso/Pipeline/Test.pm
+++ /dev/null
@@ -1,29 +0,0 @@
-package WebCoso::Pipeline::Test;
-use strict;
-use warnings;
-use base 'WebCoso::Pipeline::Base';
-
-__PACKAGE__->set_steps(
- Step1 => {p1 => 1},
- Step2 => {p2 => 2}
-);
-
-my @calls;
-
-sub process {
- my ($class,$resource,$stage)=@_;
-
- my $call={ resource => $resource, stage => $stage };
-
- my $ret=$class->SUPER::process($resource,$stage);
-
- push @calls, $call;
-
- return $ret;
-}
-
-sub get_calls {
- return @calls;
-}
-
-1;
diff --git a/t/lib/WebCoso/Step/Step1.pm b/t/lib/WebCoso/Step/Step1.pm
deleted file mode 100644
index c9f2c96..0000000
--- a/t/lib/WebCoso/Step/Step1.pm
+++ /dev/null
@@ -1,26 +0,0 @@
-package WebCoso::Step::Step1;
-use base 'WebCoso::Step::Base';
-use Class::Std;
-use strict;
-use warnings;
-
-{
-my %calls_of :ATTR(:default<[]> :get<calls>);
-my %p1_of :ATTR(:init_arg<p1>);
-
-sub process {
- my ($self,$resource,$stage)=@_;
-
- my $out='stuff';
-
- push @{$calls_of{ident $self}},{
- resource => $resource,
- out_res => $out,
- stage => $stage,
- };
-
- return $out;
-}
-
-}
-1;
diff --git a/t/lib/WebCoso/Step/Step2.pm b/t/lib/WebCoso/Step/Step2.pm
deleted file mode 100644
index 08a32c2..0000000
--- a/t/lib/WebCoso/Step/Step2.pm
+++ /dev/null
@@ -1,26 +0,0 @@
-package WebCoso::Step::Step2;
-use base 'WebCoso::Step::Base';
-use Class::Std;
-use strict;
-use warnings;
-
-{
-my %calls_of :ATTR(:default<[]> :get<calls>);
-my %p2_of :ATTR(:init_arg<p2>);
-
-sub process {
- my ($self,$resource,$stage)=@_;
-
- my $out='stuff';
-
- push @{$calls_of{ident $self}},{
- resource => $resource,
- out_res => $out,
- stage => $stage,
- };
-
- return $out;
-}
-
-}
-1;
diff --git a/t/src/file1.rest.txt b/t/src/file1.rest.txt
deleted file mode 100644
index 3af7f03..0000000
--- a/t/src/file1.rest.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Titolo
-======
-
-testo
diff --git a/t/steps/rest-splitlang.t b/t/steps/rest-splitlang.t
deleted file mode 100644
index 10283b4..0000000
--- a/t/steps/rest-splitlang.t
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-use Path::Class;
-use Test::More 'no_plan';
-use Test::Differences;
-use WebCoso::Resource;
-
-BEGIN {use_ok('WebCoso::Step::ReST::SplitLang')}
-my $step=WebCoso::Step::ReST::SplitLang->new();
-
-sub make_res {
- my ($rst_doc,$key)=@_;
- $key||='datastream';
- my $resource=WebCoso::Resource->new();
- open my $rst_fh,'<',\$rst_doc;
- $resource->set_property({filename=>'mydoc.rest.txt'},$key=>$rst_fh);
-
- return $resource;
-}
-
-my $resource=make_res(<<'END_REST');
-riga comune
-.. lang::
-ancora comune
-.. lang:: it
-italiano
-.. lang:: en
-inglese
- .. lang::
- any nested
-.. lang:: it
-italiano ancora
-.. lang::
-comune (con spazi)
-END_REST
-
-
-$step->process($resource,'gen');
-is_deeply([$resource->get_axes()],
- ['filename'],
- 'no action on second pass');
-
-$step->process($resource,'meta');
-
-is_deeply([sort $resource->get_axes()],
- ['filename','language'],
- 'action on first pass');
-is_deeply([sort $resource->get_axis_values('language')],
- ['en','it'],
- 'lingue giuste');
-eq_or_diff($resource->get_property_string({language=>'it'},'rstdoc'),<<'END_REST_IT','italiano');
-riga comune
-ancora comune
-italiano
- any nested
-italiano ancora
-comune (con spazi)
-END_REST_IT
-
-eq_or_diff($resource->get_property_string({language=>'en'},'rstdoc'),<<'END_REST_EN','inglese');
-riga comune
-ancora comune
-inglese
- any nested
-comune (con spazi)
-END_REST_EN
-
-my $rst_doc=<<'END_REST';
-tutto a comune
-monolingua
-END_REST
-
-$resource=make_res($rst_doc);
-
-$step->process($resource,'meta');
-is_deeply([$resource->get_axes()],
- ['filename'],
- 'monolingua');
-eq_or_diff($resource->get_property_string('rstdoc'),$rst_doc,'monolingua cat');
-
-$rst_doc=<<'END_REST';
-.. lang::
-tutto a comune
-monolingua
-END_REST
-
-$resource=make_res($rst_doc);
-
-$step->process($resource,'meta');
-is_deeply([$resource->get_axes()],
- ['filename'],
- 'monolingua 2');
-eq_or_diff($resource->get_property_string('rstdoc'),$rst_doc,'monolingua 2 cat');
-
-# test per le chiavi arbitrarie
-$step=WebCoso::Step::ReST::SplitLang->new({from=>'source',to=>'dest'});
-$rst_doc=<<'END_REST';
-dati vari
-END_REST
-$resource=make_res($rst_doc,'source');
-$step->process($resource,'meta');
-eq_or_diff($resource->get_property_string('dest'),$rst_doc,'chiavi arbitrarie');
diff --git a/t/steps/rest-xml.t b/t/steps/rest-xml.t
deleted file mode 100644
index 1d9f956..0000000
--- a/t/steps/rest-xml.t
+++ /dev/null
@@ -1,156 +0,0 @@
-#!/usr/bin/perl
-use utf8;
-use strict;
-use warnings;
-use Path::Class;
-use Test::More 'no_plan';
-use Test::Differences;
-use Encode;
-use WebCoso::Resource;
-
-BEGIN {use_ok('WebCoso::Step::ReST::ToXml')}
-my $step=WebCoso::Step::ReST::ToXml->new();
-
-my $srckey='rstdoc';
-sub make_res {
- my $resource=WebCoso::Resource->new();
- # serve solo per il path
- $resource->set_property({filename=>'/tmp/mydoc.rest.txt'},datastream=>undef);
- if (@_==1) { # monolingua
- $resource->set_property($srckey=>$_[0]);
- }
- else { # multilingua
- my %rst_doc=@_;
- while (my ($lang,$str)=each %rst_doc) {
- $resource->set_property(
- {language=>$lang},
- $srckey=>$str
- );
- }
- }
-
- return $resource;
-}
-
-my $resource=make_res(<<'END_REST');
-Documento
-=========
-
-paragrafo àè
-END_REST
-
-$step->process($resource,'gen');
-ok(!defined $resource->get_property('xmldom'),'no action on second pass');
-
-$step->process($resource,'meta');
-my $dom=$resource->get_property('xmldom');
-isa_ok($dom,'XML::LibXML::Document','parsed ok on first pass');
-
-is($dom->findvalue('/document/@source'),
- '/tmp/mydoc.rest.txt',
- 'source path');
-is($dom->findvalue('/document/title'),
- 'Documento',
- 'title');
-is($dom->findvalue('count(/document/paragraph)'),
- 1,
- '1 paragraph');
-is($dom->findvalue('/document/paragraph'),
- 'paragrafo àè',
- 'paragraph content (unicode)');
-
-$resource=make_res(it=><<'END_REST_IT',en=><<'END_REST_EN');
-Documento
-=========
-
-paragrafo
-END_REST_IT
-Document
-========
-
-paragraph
-END_REST_EN
-
-$step->process($resource,'meta');
-$dom=$resource->get_property({language=>'it'},'xmldom');
-isa_ok($dom,'XML::LibXML::Document','parsed it');
-
-is($dom->findvalue('/document/@source'),
- '/tmp/mydoc.rest.txt',
- 'source path');
-is($dom->findvalue('/document/title'),
- 'Documento',
- 'title');
-is($dom->findvalue('/document/paragraph'),
- 'paragrafo',
- 'paragraph content');
-
-$dom=$resource->get_property({language=>'en'},'xmldom');
-isa_ok($dom,'XML::LibXML::Document','parsed en');
-
-is($dom->findvalue('/document/@source'),
- '/tmp/mydoc.rest.txt',
- 'source path');
-is($dom->findvalue('/document/title'),
- 'Document',
- 'title');
-is($dom->findvalue('/document/paragraph'),
- 'paragraph',
- 'paragraph content');
-
-# test per chiavi arbitrarie
-$step=WebCoso::Step::ReST::ToXml->new({from=>'rest',to=>'xml'});
-$srckey='rest';
-$resource=make_res(<<'END_REST');
-testo
-END_REST
-$step->process($resource,'meta');
-$dom=$resource->get_property('xml');
-isa_ok($dom,'XML::LibXML::Document','chiavi arbitrarie');
-
-# test dei metadati
-$step=WebCoso::Step::ReST::ToXml->new();
-$srckey='rstdoc';
-$resource=make_res(<<'END_REST');
-========
- Titolo
-========
-
-sottotitolo
-===========
-
-:Authors: - dakkar
- - doraemon
-:Version: 12
-:Status: draft
-:Date: 2006-02-07
-:CreationDate: 2006-01-30
-:Collections: - uno
- - due
- - tre
-
-testo
-
-END_REST
-$step->process($resource,'meta');
-my %meta_fields=(
- author => ['dakkar','doraemon'],
- title => 'Titolo',
- subtitle => 'sottotitolo',
- version => 12,
- status => 'draft',
- date => '2006-02-07',
- creation_date => '2006-01-30',
-);
-while (my ($f,$v)=each %meta_fields) {
- if (ref $v) {
- is_deeply([sort @{$resource->get_property($f)}],
- $v,
- "meta: $f");
- }
- else {
- is($resource->get_property($f),
- $v,
- "meta: $f");
- }
-}