diff lib/CPT/Circos/Conf.pm @ 1:f093e08f21f3 draft default tip

planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author cpt
date Mon, 05 Jun 2023 02:47:24 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/CPT/Circos/Conf.pm	Mon Jun 05 02:47:24 2023 +0000
@@ -0,0 +1,90 @@
+package CPT::Circos::Conf;
+use strict;
+use warnings;
+use autodie;
+use Moose;
+
+# This parameter specifies that we should behave according to galaxy_override spec.
+has data => (
+	is	    => 'rw',
+	isa 	=> 'ArrayRef',
+	default => sub {
+		[]
+	},
+);
+my @current_block = ();
+
+sub set {
+	my ($self, $key, $value) = @_;
+	$self->push_d(sprintf('%s = %s', $key, $value));
+}
+
+sub start_block {
+	my ($self, $block) = @_;
+	$self->push_d(sprintf('<%s>', $block));
+	push(@current_block, $block);
+}
+
+sub end_block {
+	my ($self) = @_;
+	$self->push_d(sprintf('</%s>', pop @current_block));
+}
+
+sub include {
+	my ($self, $file) = @_;
+	$self->push_d(sprintf('<<include %s>>', $file));
+}
+
+sub push_d {
+	my ($self, $string) = @_;
+	push(@{$self->data()}, $self->spaces_for_indent() . $string);
+}
+
+sub spaces_for_indent {
+	my ($self) = @_;
+	if(scalar(@current_block) > 0){
+		return '  ' x scalar(@current_block);
+	}
+	return '';
+}
+
+sub finalize {
+	my ($self) = @_;
+	if(scalar @current_block > 0){
+		die  'Blocks [' . join(',', @current_block) . '] were not closed';
+	}
+	else{
+		return join("\n", @{$self->data()});
+	}
+}
+
+no Moose::Role;
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+CPT::Circos::Conf
+
+=head1 VERSION
+
+version 1.99.4
+
+=head1 AUTHOR
+
+Eric Rasche <rasche.eric@yandex.ru>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Eric Rasche.
+
+This is free software, licensed under:
+
+  The GNU General Public License, Version 3, June 2007
+
+=cut