Normally build it with cd bindings/swig ./configure make cd perl; make install
The make install is important, otherwise the Sword module is not available and can't load the shared lib. Have a look into the .i files which functions are available in which classes. Basically it's most of the things available in sword-cvs/doc/api-documentation/ If you need some missing classes let me know. Let me know how it works, Joachim > That did not work. I get a message when I try creating an zCom module > in Perl. > > Can't locate auto/Sword/zCom/createModul.al in @INC > > I don't find zCom::createModule in the Sword.pm file. Did I build SWIG > Perl wrong or something. > > Thanks > Chad > > On Sun, 2003-01-19 at 05:25, Joachim Ansorg wrote: > > Chad, > > Have a look at the following messy Perl script. It was never intended for > > a release, so the code isn't very good. At the end you'll see how I > > created a compressed commentary module using the Swig bindings. > > > > If you need more help let me know. > > > > Joachim > > > > > Can someone tell me how to create a module in SWIG Perl? I try and > > > follow the example given but I get an error message like this: > > > > > > Usage: xText_createModule(self,path,blockBound); > > > > > > Can any one help? > > > > > > Thanks > > > Chad > > > > > > _______________________________________________ > > > sword-devel mailing list > > > [EMAIL PROTECTED] > > > http://www.crosswire.org/mailman/listinfo/sword-devel > > > > -- > > Joachim Ansorg > > www.bibletime.info > > www.ansorgs.de > > > > ---- > > > > > > #!/usr/bin/perl > > > > use Sword; #Use the Sword bindings for Perl > > use Encode; > > use File::Path; > > use Cwd; > > use strict; > > > > # Parameters: > > # 1. The modules > > # 2. The key as english string > > # 3. The data as string > > > > sub writeData { > > my $mod = shift; > > my $key = shift; > > my $data = shift; > > > > # We have to parse the key to be able to write a range to the module > > # The first entry is written using the data, ther others are written as > > links my $vk = Sword::VerseKey->new(); > > $vk->setLocale("de"); > > > > my $list = $vk->ParseVerseList($key, "Genesis 1:1", 1); # "1" to parse > > ranges! for (my $i = 0; $i < $list->Count(); $i++) { > > my $sw_key= $list->GetElement($i); > > if (my $rangeKey = $sw_key->toVerseKey()) { > > # write the data to the first key and link the others to this >first > > one my $k = $rangeKey->LowerBound(); > > print "\tWriting to " . $k->getText() . "\n"; > > $mod->SetKey($k); > > $mod->write($data); > > > > $k->next(); > > # go up until we reach UpperBound and link each entry to the > > LowerBound while(($k->compare($rangeKey->UpperBound()) == -1)) { #as long > > as $k is before UpperBound $mod->SetKey($k); > > $mod->writeLink($rangeKey->LowerBound()); > > print "\t\t" . $k->getText() . ": linking to ". >$sw_key->getText() . > > "\n"; $k->next(); > > } > > #we reached the last entry > > #$mod->writeLink($rangeKey->LowerBound()); > > print "\t\t" . $k->getText() . ": linking to ". >$sw_key->getText() . > > "\n"; } > > else { > > print "\tWriting single key to " . $sw_key->getText() . "\n"; > > $mod->SetKey($sw_key); > > $mod->write($data); > > } > > } > > > > #print out the list > > }; > > > > sub convert_key { > > my $key = shift; > > $key =~ s/,/:/g; > > $key =~ s/(\d)\./$1. /; > > if ($key =~ /[^0-9]$/) { > > die "Invalid key $key" > > }; > > > > return $key; > > }; > > > > sub format_content { > > my $key = shift; > > my $date = shift; > > my $data = shift; > > # Format the data in the following way: > > # Datum: $date > > # Stelle: <scripRef passage="$englishKey">$key</scripRef> > > # <BR> > > # $data > > > > #Fix existing scripRefs > > # 1. Remove newlines within scripRef tags > > $data =~ s/<scripRef[\n\s]?(.+?)\n(.+?)>/<scripRef $1 $2>/gi; > > # 2. Remove version=".+?" parts > > $data =~ s|<scripRef (.+?)version=".+?"(.+?)>|<scripRef $1 $2>|gis; > > # 3. Beautify scripRefs, e.g. remove trailing spaces > > $data =~ s|<scripRef (.+?)\s+>|<scripRef $1>|gis; > > > > > > my $ret = '<FONT color="#800000"><B>Datum:</B> ' . $date . > > '</FONT><BR>'; > > > > my $vk = Sword::VerseKey->new(); > > $vk->setLocale("de"); > > $vk->setText($key); > > #$vk->setLocale("en"); > > > > my $rangeText = undef; > > my $list = $vk->ParseVerseList($key, "Genesis 1:1", 1); # "1" to parse > > ranges! for (my $i = 0; $i < $list->Count(); $i++) { > > my $sw_key= $list->GetElement($i); > > if (my $rangeKey = $sw_key->toVerseKey()) { > > $rangeKey->setLocale("en"); > > # write the data to the first key and link the others to this >first > > one if( $rangeKey->LowerBound()->compare($rangeKey->UpperBound()) == -1 ) > > { #as long as $k is before UpperBound $rangeText .= > > $rangeKey->LowerBound()->getText() . "-" . > > $rangeKey->UpperBound()->getText() . ";"; } > > } > > else { > > $vk->setLocale("de"); > > $vk->setText($sw_key->getText()); > > $vk->setLocale("en"); > > $rangeText .= $vk->getText(); > > } > > } > > > > > > $ret .= '<FONT color="#800000"><B>Stelle:</B> ' . '<scripRef passage="' > > . $rangeText .'">' . $key . '</scripRef></FONT>'; $ret .= '<BR><P > > align="justify">' . $data . '</P>'; > > > > #Finally change all possible characters into UTF-8 so it will work on > > any platform Encode::from_to($ret, "iso-8859-15", "utf-8"); > > return $ret; > > }; > > > > # This function created the module configuration file for the MAK module > > sub create_config { > > my $path = shift; > > my $filename = shift; > > > > mkpath("$path"); > > open(OUT, "> $path/$filename"); > > > > print OUT <<'EOF'; > > [MAK] > > DataPath=./modules/comments/rawcom/mak/ > > ModDrv=RawCom > > SourceType=ThML > > Encoding=UTF-8 > > Lang=de > > MinimumVersion=1.5.2 > > Version=1.0 > > History_1.0=2002-11-24 -- Major update. Many new comments, updated > > format, changed encoding to UTF-8, fixed existing scripRefs > > History_0.9=2000-07-29 -- First official version -- ThML-Tags for > > scripture ref SwordVersionDate=2002-11-24 > > Description=Matthias Ansorgs Kommentar > > About=Matthias Ansorgs Kommentar zur Bibel\par\ > > Der Kommentar wurde von Matthias Ansorg geschrieben.\par\ > > Kontakt: [EMAIL PROTECTED] > > TextSource=Matthias Ansorg,[EMAIL PROTECTED] > > LCSH=Bible--Commentaries, German. > > DistributionLicense=Public Domain > > EOF > > close(OUT); > > }; > > > > > > > > sub write_module { > > Sword::LocaleMgr::getSystemLocaleMgr()->setDefaultLocaleName("de"); > > > > my $file = shift; > > open(IN, $file) || die "Can't open file $file\n"; > > > > my $key = undef; > > my $date = undef; > > my $comment = undef; > > > > #Create the directories where the module should be created > > mkpath("data/modules/comments/rawcom/mak"); > > #LocaleMgr()->setDefaultLocaleName("de"); > > > > > > #Sword::zCom::createModule("data/modules/comments/rawcom/mak",4) || die > > "Couldn't create the zCom module!"; > > Sword::RawCom::createModule("data/modules/comments/rawcom/mak") || die > > "Couldn't create the zCom module!"; #my $compressor = > > Sword::LZSSCompress->new(); > > #my $mod = Sword::zCom->new("data/modules/comments/rawcom/mak", 0, 0, 4, > > $compressor ); #blocktype = 4, compressor type is LZSSCompression my $mod > > = Sword::RawCom->new("data/modules/comments/rawcom/mak"); > > $mod->setSkipConsecutiveLinks(0); > > > > while (<IN>) { > > if (/^Text:\s?(.+?)\n/) { #The start if a new entry was found > > if ($key && $date && $comment) { #write the found comment to >disk > > $key = convert_key($key); > > print "Found: " . $key. "\n"; > > my $data = format_content($key, $date, $comment); > > writeData($mod, $key, $data); > > }; > > > > $key = $1; > > $date = undef; > > $comment = undef; > > } > > elsif (/^Datum:\s?(.+?)\n/) { > > $date = $1; > > } > > else { > > $comment .= $_; > > }; > > }; > > #write the last entry into the module > > if ($key && $date && $comment) { #write the found comment to disk > > $key = convert_key($key); > > print "Found: " . $key. "\n"; > > my $data = format_content($key, $date, $comment); > > writeData($mod, $key, $data); > > }; > > > > close(IN); > > }; > > > > sub zip_module { > > my $path = shift; > > my $filename = shift; > > > > my $start_dir = getcwd(); > > unlink("$filename"); > > chdir("$path"); > > > > system("chmod -R a+r+X $start_dir/$path"); > > > > # Call zip command to compress all files in the current directory > > my $ret = system( "zip -q -9 -r $start_dir/$filename *"); > > chdir($start_dir); > > rmtree("$start_dir/data/"); > > > > print "Zipped module data files are in the ZIP archive $filename\n"; > > > > return $ret; > > } > > > > #main part > > create_config("data/mods.d/", "mak.conf"); > > write_module("stilleZeit.Kommentare.txt"); > > zip_module("data", "mak.zip"); > > create_config(".", "mak.conf"); > > _______________________________________________ > sword-devel mailing list > [EMAIL PROTECTED] > http://www.crosswire.org/mailman/listinfo/sword-devel -- Joachim Ansorg www.bibletime.info www.ansorgs.de _______________________________________________ sword-devel mailing list [EMAIL PROTECTED] http://www.crosswire.org/mailman/listinfo/sword-devel