File Coverage

blib/lib/CAD/Format/DWG/Version.pm
Criterion Covered Total %
statement 20 20 100.0
branch n/a
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 28 28 100.0


line stmt bran cond sub pod time code
1             package CAD::Format::DWG::Version;
2              
3 4     4   162905 use strict;
  4         8  
  4         140  
4 4     4   21 use warnings;
  4         7  
  4         287  
5              
6 4     4   2001 use Class::Utils qw(set_params);
  4         56583  
  4         106  
7 4     4   372 use Readonly;
  4         15  
  4         1895  
8              
9             # Constants.
10             # Based on https://ru.wikipedia.org/wiki/DWG
11             Readonly::Hash my %DWGVER => (
12             # DWG magic => DWG name and publication order
13             'MC0.0' => { 'name' => 'DWG R1.0', 'order' => 1 },
14             'AC1.2' => { 'name' => 'DWG R1.2', 'order' => 2 },
15             'AC1.40' => { 'name' => 'DWG R1.40', 'order' => 3 },
16             'AC1.50' => { 'name' => 'DWG R2.05', 'order' => 4 },
17             'AC2.10' => { 'name' => 'DWG R2.10', 'order' => 5 },
18             'AC1001' => { 'name' => 'DWG R2.22', 'order' => 8 },
19             'AC1002' => { 'name' => 'DWG R2.50', 'order' => 9 },
20             'AC1003' => { 'name' => 'DWG R2.60', 'order' => 10 },
21             'AC1004' => { 'name' => 'DWG R9', 'order' => 11 },
22             'AC1006' => { 'name' => 'DWG R10', 'order' => 12 },
23             'AC1009' => { 'name' => 'DWG R11/12', 'order' => 13 },
24             'AC1010' => { 'name' => 'DWG pre-R13 a', 'order' => 14 },
25             'AC1011' => { 'name' => 'DWG pre-R13 b', 'order' => 15 },
26             'AC1012' => { 'name' => 'DWG R13', 'order' => 16 },
27             'AC1013' => { 'name' => 'DWG R13 beta', 'order' => 17 },
28             'AC1014' => { 'name' => 'DWG R14', 'order' => 18 },
29             'AC1500' => { 'name' => 'DWG 2000 beta', 'order' => 19 },
30             'AC1015' => { 'name' => 'DWG 2000', 'order' => 20 },
31             'AC402a' => { 'name' => 'DWG 2004 alpha', 'order' => 21 },
32             'AC402b' => { 'name' => 'DWG 2004 beta', 'order' => 22 },
33             'AC1018' => { 'name' => 'DWG 2004', 'order' => 23 },
34             'AC1021' => { 'name' => 'DWG 2007', 'order' => 24 },
35             'AC1024' => { 'name' => 'DWG 2010', 'order' => 25 },
36             'AC1027' => { 'name' => 'DWG 2013', 'order' => 26 },
37             'AC1032' => { 'name' => 'DWG 2018', 'order' => 27 },
38             'AC103-4' => { 'name' => 'DWG 2022 beta', 'order' => 28 },
39             );
40              
41             our $VERSION = 0.01;
42              
43             # Constructor.
44             sub new {
45 2     2 1 573899 my ($class, @params) = @_;
46              
47             # Create object.
48 2         9 my $self = bless {}, $class;
49              
50             # Process params.
51 2         19 set_params($self, @params);
52              
53             # Object.
54 2         23 return $self;
55             }
56              
57             sub list_of_dwg_identifiers {
58 1     1 1 5 my $self = shift;
59              
60 1         12 my @keys = sort { $DWGVER{$a}->{'order'} <=> $DWGVER{$b}->{'order'} } keys %DWGVER;
  88         2157  
61              
62 1         52 return @keys;
63             }
64              
65             1;
66              
67             __END__