File Coverage

blib/lib/Benchmark/Featureset/StopwordLists/Config.pm
Criterion Covered Total %
statement 18 44 40.9
branch 0 6 0.0
condition n/a
subroutine 6 9 66.6
pod 3 3 100.0
total 27 62 43.5


line stmt bran cond sub pod time code
1             package Benchmark::Featureset::StopwordLists::Config;
2              
3 1     1   10 use strict;
  1         2  
  1         32  
4 1     1   5 use warnings;
  1         2  
  1         24  
5              
6 1     1   818 use Config::Tiny;
  1         891  
  1         24  
7              
8 1     1   808 use File::HomeDir;
  1         6267  
  1         75  
9              
10 1     1   684 use Hash::FieldHash ':all';
  1         1613  
  1         170  
11              
12 1     1   825 use Path::Class;
  1         60193  
  1         559  
13              
14             fieldhash my %config => 'config';
15             fieldhash my %config_file_path => 'config_file_path';
16             fieldhash my %section => 'section';
17              
18             our $VERSION = '1.01';
19              
20             # -----------------------------------------------
21              
22             sub init
23             {
24 0     0 1   my($self, $arg) = @_;
25              
26 0           return from_hash($self, $arg);
27              
28             } # End of init.
29              
30             # -----------------------------------------------
31              
32             sub new
33             {
34 0     0 1   my($class, %arg) = @_;
35 0           my($self) = bless {}, $class;
36              
37 0           $self -> init(\%arg);
38              
39 0           my($path) = Path::Class::file(File::HomeDir -> my_dist_config('Benchmark-Featureset-StopwordLists'), '.htbenchmark.featureset.stopwordlists.conf');
40              
41 0           $self -> read($path);
42              
43 0           return $self;
44              
45             } # End of new.
46              
47             # -----------------------------------------------
48              
49             sub read
50             {
51 0     0 1   my($self, $path) = @_;
52              
53 0           $self -> config_file_path($path);
54              
55             # Check [global].
56              
57 0           $self -> config(Config::Tiny -> read($path) );
58              
59 0 0         if (Config::Tiny -> errstr)
60             {
61 0           die Config::Tiny -> errstr;
62             }
63              
64 0           $self -> section('global');
65              
66 0 0         if (! ${$self -> config}{$self -> section})
  0            
67             {
68 0           die "Config file '$path' does not contain the section [@{[$self -> section]}]\n";
  0            
69             }
70              
71             # Check [x] where x is host=x within [global].
72              
73 0           $self -> section(${$self -> config}{$self -> section}{'host'});
  0            
74              
75 0 0         if (! ${$self -> config}{$self -> section})
  0            
76             {
77 0           die "Config file '$path' does not contain the section [@{[$self -> section]}]\n";
  0            
78             }
79              
80             # Move desired section into config, so caller can just use $self -> config to get a hashref.
81              
82 0           $self -> config(${$self -> config}{$self -> section});
  0            
83              
84             } # End of read.
85              
86             # --------------------------------------------------
87              
88             1;
89              
90             =pod
91              
92             =head1 NAME
93              
94             Benchmark::Featureset::StopwordLists::Config - Compare various stopword list modules
95              
96             =head1 Synopsis
97              
98             See L.
99              
100             =head1 Description
101              
102             L compares verious stopword list modules.
103              
104             =head1 Methods
105              
106             =head2 init()
107              
108             For use by subclasses.
109              
110             Sets default values for object attributes.
111              
112             =head2 new()
113              
114             For use by subclasses.
115              
116             =head2 read()
117              
118             read() is called by new(). It does the actual reading of the config file.
119              
120             If the file can't be read, die is called.
121              
122             The path to the config file is determined by:
123              
124             Path::Class::file(File::HomeDir -> my_dist_config('Benchmark-Featureset-StopwordLists'), '.htbenchmark.featureset.stopwordlists.conf');
125              
126             During installation, you should have run scripts/copy.config.pl, which uses the same code, to move the config file
127             from the config/ directory in the disto into an OS-dependent directory.
128              
129             The run-time code uses this module to look in the same directory as used by scripts/copy.config.pl.
130              
131             =head1 Support
132              
133             Email the author, or log a bug on RT:
134              
135             L.
136              
137             =head1 Author
138              
139             L was written by Ron Savage Iron@savage.net.auE> in 2012.
140              
141             Home page: L.
142              
143             =head1 Copyright
144              
145             Australian copyright (c) 2012, Ron Savage.
146              
147             All Programs of mine are 'OSI Certified Open Source Software';
148             you can redistribute them and/or modify them under the terms of
149             The Artistic License, a copy of which is available at:
150             http://www.opensource.org/licenses/index.html
151              
152             =cut