$VAR1 = {
'blog' => [
bless( {
'file' => '/home/karpet/blog/projects/swish/libswish3.pod',
'format' => 'pod',
'id' => 'libswish3.pod',
'mtime' => 1173064461,
'name' => 'libswish3',
'text' => '=head1 libswish3
I have moved my last 2 years\' work over to the L<SVN repos|http://dev.swish-e.org/wiki/swish3> at swish-e.org.
Pretty significant for me, making the whole thing public now.
At this point, I\'m working under the following assumptions:
=head2 Tokenizing
Swish3 needs a UTF-8 aware tokenizer. This really means either a regexp library or a full UTF-8 character library.
A regexp library is far easier with regard to user configuration, easier even than Swish-e\'s *Characters
directives.
I have looked at standalone C libraries to accomplish this. The best bet standalone is
L<PCRE|http://www.pcre.org/> but building that for Windows is a little tricky. Swish-e offers optional PCRE
support, so there is a precedent.
For the time being, however, I am going to build using Perl, which already has full UTF-8 regexp support.
Why be Compatible when you can have the Real Thing?
Mostly I am using Perl because (a) I know it, (b) it\'s ideal for things like search and indexing,
and (c) I want to include a backend for KinoSearch.
There is nothing in the current libswish3 implementation that precludes using a different tokenizing scheme in
the future. For my purposes, Perl is just fine.
=head2 Swish3
I have set up Perl bindings for libswish3\'s configuation and parser functions in the SWISH::3 namespace.
The plan is to write a Perl
OO library to complement/wrap libswish3\'s C functions. That Perl library can in turn be used to write
applications. I\'ll be implementing a C<swish3> command line app in Perl using SWISH::Prog
and distributing it as part of SWISH::Prog.
=head2 TODO
There\'s still a long todo list. But there is progress, and the shape of what is to come.
',
'url' => 'projects/swish/libswish3'
}, 'PodBlog::Model::Blog::Entry' )
],
'menu' => [
bless( {
'dir' => 1,
'file' => '/home/karpet/blog/books',
'level' => 1,
'name' => 'books',
'url' => 'books'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 1,
'file' => '/home/karpet/blog/general',
'level' => 1,
'name' => 'general',
'url' => 'general'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 1,
'file' => '/home/karpet/blog/projects',
'level' => 1,
'name' => 'projects',
'url' => 'projects'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/_intro.txt',
'level' => 2,
'name' => '_intro',
'url' => 'projects/_intro'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/ajax.txt',
'level' => 2,
'name' => 'ajax',
'url' => 'projects/ajax'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/blas.txt',
'level' => 2,
'name' => 'blas',
'url' => 'projects/blas'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/blue.txt',
'level' => 2,
'name' => 'blue',
'url' => 'projects/blue'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/bug_or_feature.txt',
'level' => 2,
'name' => 'bug_or_feature',
'url' => 'projects/bug_or_feature'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/catalyst.txt',
'level' => 2,
'name' => 'catalyst',
'url' => 'projects/catalyst'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/chars.txt',
'level' => 2,
'name' => 'chars',
'url' => 'projects/chars'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/cpan.txt',
'level' => 2,
'name' => 'cpan',
'url' => 'projects/cpan'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/craydoc.txt',
'level' => 2,
'name' => 'craydoc',
'url' => 'projects/craydoc'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/cssprint.txt',
'level' => 2,
'name' => 'cssprint',
'url' => 'projects/cssprint'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/fp_talk1.txt',
'level' => 2,
'name' => 'fp_talk1',
'url' => 'projects/fp_talk1'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/fp_talk2.txt',
'level' => 2,
'name' => 'fp_talk2',
'url' => 'projects/fp_talk2'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/fp_talk3.txt',
'level' => 2,
'name' => 'fp_talk3',
'url' => 'projects/fp_talk3'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/fp_talks.txt',
'level' => 2,
'name' => 'fp_talks',
'url' => 'projects/fp_talks'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/frozenperl.txt',
'level' => 2,
'name' => 'frozenperl',
'url' => 'projects/frozenperl'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/hacker.txt',
'level' => 2,
'name' => 'hacker',
'url' => 'projects/hacker'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/hiliter.txt',
'level' => 2,
'name' => 'hiliter',
'url' => 'projects/hiliter'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/http_flow.txt',
'level' => 2,
'name' => 'http_flow',
'url' => 'projects/http_flow'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/ibmunicode.txt',
'level' => 2,
'name' => 'ibmunicode',
'url' => 'projects/ibmunicode'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/ideas.txt',
'level' => 2,
'name' => 'ideas',
'url' => 'projects/ideas'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/ishida.txt',
'level' => 2,
'name' => 'ishida',
'url' => 'projects/ishida'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/iterm.txt',
'level' => 2,
'name' => 'iterm',
'url' => 'projects/iterm'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/larry_pm.txt',
'level' => 2,
'name' => 'larry_pm',
'url' => 'projects/larry_pm'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/latenights.txt',
'level' => 2,
'name' => 'latenights',
'url' => 'projects/latenights'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/long_live_perl.txt',
'level' => 2,
'name' => 'long_live_perl',
'url' => 'projects/long_live_perl'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/memory.txt',
'level' => 2,
'name' => 'memory',
'url' => 'projects/memory'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/mylibrary.txt',
'level' => 2,
'name' => 'mylibrary',
'url' => 'projects/mylibrary'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/perlisalive.txt',
'level' => 2,
'name' => 'perlisalive',
'url' => 'projects/perlisalive'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/postgresql_on_osx.txt',
'level' => 2,
'name' => 'postgresql_on_osx',
'url' => 'projects/postgresql_on_osx'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/profiling_perl.txt',
'level' => 2,
'name' => 'profiling_perl',
'url' => 'projects/profiling_perl'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/rest.txt',
'level' => 2,
'name' => 'rest',
'url' => 'projects/rest'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/ror.txt',
'level' => 2,
'name' => 'ror',
'url' => 'projects/ror'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/stateofsearch.txt',
'level' => 2,
'name' => 'stateofsearch',
'url' => 'projects/stateofsearch'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 1,
'file' => '/home/karpet/blog/projects/swish',
'level' => 2,
'name' => 'swish',
'url' => 'projects/swish'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 1,
'file' => '/home/karpet/blog/projects/swish/api_docs',
'level' => 3,
'name' => 'api_docs',
'url' => 'projects/swish/api_docs'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/bindings.pod',
'level' => 3,
'name' => 'bindings',
'url' => 'projects/swish/bindings'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/cpan100606.pod',
'level' => 3,
'name' => 'cpan100606',
'url' => 'projects/swish/cpan100606'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/libswish3.pod',
'level' => 3,
'name' => 'libswish3',
'url' => 'projects/swish/libswish3'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/original_idea.txt',
'level' => 3,
'name' => 'original_idea',
'url' => 'projects/swish/original_idea'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/progress.txt',
'level' => 3,
'name' => 'progress',
'url' => 'projects/swish/progress'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/progress2.txt',
'level' => 3,
'name' => 'progress2',
'url' => 'projects/swish/progress2'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/progress3.txt',
'level' => 3,
'name' => 'progress3',
'url' => 'projects/swish/progress3'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/swish3Proposal.pod',
'level' => 3,
'name' => 'swish3Proposal',
'url' => 'projects/swish/swish3Proposal'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/swishprog.pod',
'level' => 3,
'name' => 'swishprog',
'url' => 'projects/swish/swishprog'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/swishprog2.pod',
'level' => 3,
'name' => 'swishprog2',
'url' => 'projects/swish/swishprog2'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/tokenizer.txt',
'level' => 3,
'name' => 'tokenizer',
'url' => 'projects/swish/tokenizer'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/tools.txt',
'level' => 3,
'name' => 'tools',
'url' => 'projects/swish/tools'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/utf8.notes.pod',
'level' => 3,
'name' => 'utf8.notes',
'url' => 'projects/swish/utf8.notes'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/whySwish3.pod',
'level' => 3,
'name' => 'whySwish3',
'url' => 'projects/swish/whySwish3'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swish/xapian10.txt',
'level' => 3,
'name' => 'xapian10',
'url' => 'projects/swish/xapian10'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/swished.txt',
'level' => 2,
'name' => 'swished',
'url' => 'projects/swished'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/texttools.txt',
'level' => 2,
'name' => 'texttools',
'url' => 'projects/texttools'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/wrong.txt',
'level' => 2,
'name' => 'wrong',
'url' => 'projects/wrong'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/xapian.txt',
'level' => 2,
'name' => 'xapian',
'url' => 'projects/xapian'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 0,
'file' => '/home/karpet/blog/projects/yamllint.txt',
'level' => 2,
'name' => 'yamllint',
'url' => 'projects/yamllint'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 1,
'file' => '/home/karpet/blog/spam',
'level' => 1,
'name' => 'spam',
'url' => 'spam'
}, 'PodBlog::Model::Menu::Entry' ),
bless( {
'dir' => 1,
'file' => '/home/karpet/blog/stpaulbartour',
'level' => 1,
'name' => 'stpaulbartour',
'url' => 'stpaulbartour'
}, 'PodBlog::Model::Menu::Entry' )
]
};