NIC1.pm 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package NIC::Formats::NIC1;
  2. use parent NIC::NICBase;
  3. use strict;
  4. sub new {
  5. my $proto = shift;
  6. my $class = ref($proto) || $proto;
  7. my $fh = shift;
  8. my $self = NIC::NICBase->new(@_);
  9. bless($self, $class);
  10. $self->load($fh);
  11. return $self;
  12. }
  13. sub _processLine {
  14. my $self = shift;
  15. my $fh = shift;
  16. local $_ = shift;
  17. if(/^name \"(.*)\"$/) {
  18. $self->name($1);
  19. } elsif(/^dir (.+)$/) {
  20. $self->registerDirectory($1);
  21. } elsif(/^file (\d+) (.+)$/) {
  22. my $lines = $1;
  23. my $filename = $2;
  24. my $fref = $self->registerFile($filename);
  25. my $filedata = "";
  26. while($lines > 0) {
  27. $filedata .= <$fh>;
  28. $lines--;
  29. }
  30. $fref->data($filedata);
  31. } elsif(/^prompt (\w+) \"(.*?)\"( \"(.*?)\")?$/) {
  32. my $key = $1;
  33. my $prompt = $2;
  34. my $default = $4 || undef;
  35. $self->registerPrompt($key, $prompt, $default);
  36. } elsif(/^symlink \"(.+)\" \"(.+)\"$/) {
  37. my $name = $1;
  38. my $dest = $2;
  39. $self->registerSymlink($name, $dest);
  40. } elsif(/^constrain file \"(.+)\" to (.+)$/) {
  41. my $constraint = $2;
  42. my $filename = $1;
  43. $self->registerFileConstraint($filename, $constraint);
  44. }
  45. }
  46. sub load {
  47. my $self = shift;
  48. my $fh = shift;
  49. while(<$fh>) {
  50. $self->_processLine($fh, $_);
  51. }
  52. $self->resolveSymlinks;
  53. }
  54. 1;