File Coverage

blib/lib/Blikistan.pm
Criterion Covered Total %
statement 9 31 29.0
branch 0 8 0.0
condition 0 8 0.0
subroutine 3 5 60.0
pod 2 2 100.0
total 14 54 25.9


line stmt bran cond sub pod time code
1             package Blikistan;
2 1     1   895 use strict;
  1         2  
  1         34  
3 1     1   4 use warnings;
  1         1  
  1         30  
4 1     1   4 use Carp qw/croak/;
  1         2  
  1         322  
5              
6             =head1 NAME
7              
8             Blikistan - Create a blog from content in a wiki
9              
10             =head1 SYNOPSIS
11              
12             print CGI::header();
13             my $b = Blikistan->new( rester => $r );
14             $b->print_blog;
15              
16             =head1 DESCRIPTION
17              
18             Blikistan is a simple shiv that takes content and configuration
19             data from a Socialtext workspace, and generates a HTML blog
20             using a template.
21              
22             Blikistan's unique design features a MagicEngine that can be
23             written in any language. The MagicEngine fetches the blog
24             config and blog posts using the Socialtext REST API.
25              
26             Blikistan wants to ultimately have several different MagicEngines,
27             each in a different language so that blog authors have the choice
28             of which language their blog is powered by.
29              
30             Blikistan is a blogging tool named after the small ex-Soviet country
31             Blikistan. Blikistan (the software) features a magic engine which pulls
32             all the blog configuration and postings from a Socialtext Wiki.
33             Blikistan (the country) has a population of 32,768 people, and the
34             population is fully literate. Blikistan's Government never meets in
35             person, all communication and planning is done on a wiki. Blikistan
36             (the software) is the only blogging software that allows the blogger to
37             choose which language their blog will be powered by. The Magic Engine
38             can be implemented in any language using Perl's Inline modules. In
39             Blikistan (the country) taxes are filed online using SocialCalc.
40             Blikistan (both the country and software) is completely paperless.
41              
42             =cut
43              
44             our $VERSION = '0.06';
45              
46             =head1 FUNCTIONS
47              
48             =head2 new
49              
50             Creates a new Blikistan blog. Read the code for how to pass options in.
51              
52             =cut
53              
54             sub new {
55 0     0 1   my $class = shift;
56 0           my %opts = @_;
57              
58 0           my $self = {
59             magic_opts => { },
60             magic_engine => 'perl',
61             %opts,
62             };
63              
64             # Defaults
65 0   0       $self->{magic_opts}{config_page} ||= 'Blog Config';
66 0   0       $self->{magic_opts}{blog_tag} ||= 'blog post';
67 0   0       $self->{magic_opts}{show_latest_posts} ||= 5;
68              
69 0 0         if (!$self->{magic_opts}{template_name}) {
70 0   0       $self->{magic_opts}{template_page} ||= 'Blog Template';
71             }
72              
73 0 0         croak 'rester is mandatory' unless $self->{rester};
74              
75 0           bless $self, $class;
76 0           return $self;
77             }
78              
79             =head2 print_blog
80              
81             Creates a MagicEngine and asks it to print the page.
82              
83             =cut
84              
85             sub print_blog {
86 0     0 1   my $self = shift;
87              
88 0           my $magic_class = "Blikistan::MagicEngine::"
89             . ucfirst($self->{magic_engine});
90 0           eval "require $magic_class";
91 0 0         die if $@;
92              
93 0           my $me = $magic_class->new(
94             rester => $self->{rester},
95 0           %{ $self->{magic_opts} },
96             );
97 0           my $output;
98 0           eval {
99 0           $output = $me->print_blog;
100             };
101 0 0         warn $@ if $@;
102 0           return $output;
103             }
104              
105             =head1 AUTHOR
106              
107             Luke Closs, C<< >>
108              
109             =head1 LICENSE
110              
111             This program is free software; you can redistribute it and/or modify it
112             under the same terms as Perl itself.
113              
114             =cut
115              
116             1;