NICBase.pm 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package NIC::Bridge::NICBase;
  2. use strict;
  3. use warnings;
  4. use parent qw(NIC::Bridge::_BridgedObject);
  5. use NIC::NICBase::Directory;
  6. use NIC::NICBase::File;
  7. use NIC::NICBase::Symlink;
  8. sub variables {
  9. my $self = shift;
  10. return keys %{$self->{FOR}->{VARIABLES}};
  11. }
  12. sub variable :lvalue {
  13. my $self = shift;
  14. $self->{FOR}->variable(@_);
  15. }
  16. sub mkdir {
  17. my $self = shift;
  18. my $dirname = shift;
  19. my $mode = shift;
  20. my $ref = $self->{FOR}->_getContent($dirname);
  21. NIC::NICBase::Directory->take($ref);
  22. $ref->mode($mode) if $mode;
  23. return $self->{CONTEXT}->_wrap($ref);
  24. }
  25. sub mkfile {
  26. my $self = shift;
  27. my $name = shift;
  28. my $mode = shift;
  29. my $ref = $self->{FOR}->_getContent($name);
  30. NIC::NICBase::File->take($ref);
  31. $ref->mode($mode) if $mode;
  32. return $self->{CONTEXT}->_wrap($ref);
  33. }
  34. sub symlink {
  35. my $self = shift;
  36. my $oldfile = shift;
  37. my $newfile = shift;
  38. my $ref = $self->{FOR}->_getContent($newfile);
  39. my $realtarget = ref($oldfile) ? $self->{CONTEXT}->_unwrap($oldfile) : $self->{FOR}->_getContentWithoutCreate($oldfile);
  40. $realtarget = $oldfile if !$realtarget;
  41. NIC::NICBase::Symlink->take($ref, $realtarget);
  42. return $self->{CONTEXT}->_wrap($ref);
  43. }
  44. sub lookup {
  45. my $self = shift;
  46. my $name = shift;
  47. return $self->{CONTEXT}->_wrap($self->{FOR}->_getContentWithoutCreate($name));
  48. }
  49. sub setConstraint {
  50. my $self = shift;
  51. my $constraint = shift;
  52. $self->{FOR}->addConstraint($constraint);
  53. }
  54. sub clearConstraint {
  55. my $self = shift;
  56. my $constraint = shift;
  57. $self->{FOR}->removeConstraint($constraint);
  58. }
  59. sub prompt {
  60. my $self = shift;
  61. $self->{CONTEXT}->_prompt($self->{FOR}, @_);
  62. }
  63. 1;