commit 8646d7990eef48a1081ecf89ed63bdd34210057e
parent 419ceaa1cfbfaf2ce3fb8951fe24aedc59e6eb48
Author: Kyle R W Milz <kyle@getaddrinfo.net>
Date:   Wed, 13 Aug 2014 01:24:47 -0600
price_scraper: move grammar parser into shared pm
Diffstat:
2 files changed, 26 insertions(+), 28 deletions(-)
diff --git a/Shared.pm b/Shared.pm
@@ -1,10 +1,11 @@
 #!/usr/bin/env perl
 
 package Shared;
+use Config::Grammar;
 use Exporter;
 
 @ISA = ("Exporter");
-@EXPORT = ("get_dom");
+@EXPORT = ("get_dom", "get_config");
 
 sub get_dom
 {
@@ -19,4 +20,24 @@ sub get_dom
 	return HTML::Grabber->new(html => $resp->decoded_content);
 }
 
+sub get_config
+{
+	my $cfg_file = shift;
+	my $parser = Config::Grammar->new({
+		_sections => ['vendors', 'paths'],
+		vendors	=> {
+			# vendor regular expression
+			_sections => ['/[A-Za-z ]+/'],
+			'/[A-Za-z ]+/' => {
+				_vars => ['search_uri', 'reg_price', 'sale_price', 'color'],
+			},
+		},
+		paths => {
+			_vars => ['http', 'log'],
+		},
+	});
+
+	return $parser->parse($cfg_file) or die "ERROR: $parser->{err}\n";
+}
+
 1;
diff --git a/price_scraper.pl b/price_scraper.pl
@@ -3,7 +3,6 @@
 use strict;
 use warnings;
 
-use Config::Grammar;
 use Data::Dumper;
 use DBI;
 use Getopt::Std;
@@ -16,32 +15,10 @@ use POSIX;
 my %args;
 getopts('f:np:v', \%args);
 
-my $parser = Config::Grammar->new({
-	_sections => ['vendors', 'paths'],
-	vendors	=> {
-		# vendor regular expression
-		_sections => ['/[A-Za-z ]+/'],
-		'/[A-Za-z ]+/' => {
-			_vars => ['search_uri', 'reg_price', 'sale_price', 'color'],
-		},
-	},
-	paths => {
-		_vars => ['http', 'log'],
-	},
-});
-
-my $cfg_file;
-if ($args{f}) {
-	$cfg_file = $args{f};
-}
-elsif (-e "/etc/price_scraper.cfg") {
-	$cfg_file = "/etc/price_scraper.cfg";
-}
-elsif (-e "price_scraper.cfg") {
-	$cfg_file = "price_scraper.cfg";
-}
-
-my $cfg = $parser->parse($cfg_file) or die "ERROR: $parser->{err}\n";
+my $cfg;
+$cfg = get_config("/etc/price_scraper.cfg") if (-e "/etc/price_scraper.cfg");
+$cfg = get_config("price_scraper.cfg") if (-e "price_scraper.cfg");
+$cfg = get_config($args{f}) if ($args{f});
 
 my $dbh = DBI->connect(
 	"dbi:SQLite:dbname=pricechart.db",