comparison cpt_psm_comparison_table/lib/CPT/Circos/Conf.pm @ 0:b8b8b52904a5 draft

Uploaded
author cpt
date Tue, 05 Jul 2022 05:42:59 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:b8b8b52904a5
1 package CPT::Circos::Conf;
2 use strict;
3 use warnings;
4 use autodie;
5 use Moose;
6
7 # This parameter specifies that we should behave according to galaxy_override spec.
8 has data => (
9 is => 'rw',
10 isa => 'ArrayRef',
11 default => sub {
12 []
13 },
14 );
15 my @current_block = ();
16
17 sub set {
18 my ($self, $key, $value) = @_;
19 $self->push_d(sprintf('%s = %s', $key, $value));
20 }
21
22 sub start_block {
23 my ($self, $block) = @_;
24 $self->push_d(sprintf('<%s>', $block));
25 push(@current_block, $block);
26 }
27
28 sub end_block {
29 my ($self) = @_;
30 $self->push_d(sprintf('</%s>', pop @current_block));
31 }
32
33 sub include {
34 my ($self, $file) = @_;
35 $self->push_d(sprintf('<<include %s>>', $file));
36 }
37
38 sub push_d {
39 my ($self, $string) = @_;
40 push(@{$self->data()}, $self->spaces_for_indent() . $string);
41 }
42
43 sub spaces_for_indent {
44 my ($self) = @_;
45 if(scalar(@current_block) > 0){
46 return ' ' x scalar(@current_block);
47 }
48 return '';
49 }
50
51 sub finalize {
52 my ($self) = @_;
53 if(scalar @current_block > 0){
54 die 'Blocks [' . join(',', @current_block) . '] were not closed';
55 }
56 else{
57 return join("\n", @{$self->data()});
58 }
59 }
60
61 no Moose::Role;
62 1;
63
64 __END__
65
66 =pod
67
68 =encoding UTF-8
69
70 =head1 NAME
71
72 CPT::Circos::Conf
73
74 =head1 VERSION
75
76 version 1.99.4
77
78 =head1 AUTHOR
79
80 Eric Rasche <rasche.eric@yandex.ru>
81
82 =head1 COPYRIGHT AND LICENSE
83
84 This software is Copyright (c) 2014 by Eric Rasche.
85
86 This is free software, licensed under:
87
88 The GNU General Public License, Version 3, June 2007
89
90 =cut