Class: Druid

Inherits:
Object
  • Object
show all
Defined in:
lib/dor/druid_utils.rb

Constant Summary collapse

DRUID_PATTERN =
/^(?:druid:)?([a-z]{2})(\d{3})([a-z]{2})(\d{4})$/

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(druid) ⇒ Druid

Returns a new instance of Druid.



5
6
7
8
9
10
# File 'lib/dor/druid_utils.rb', line 5

def initialize(druid)
  if druid !~ DRUID_PATTERN
    raise ArgumentError, "Invalid DRUID: #{druid}"
  end
  @druid = druid
end

Instance Attribute Details

#druidObject

Returns the value of attribute druid.



2
3
4
# File 'lib/dor/druid_utils.rb', line 2

def druid
  @druid
end

Instance Method Details

#idObject



12
13
14
# File 'lib/dor/druid_utils.rb', line 12

def id
  @druid.scan(/^(?:druid:)?(.+)$/).flatten.last
end

#mkdir(base) ⇒ Object



24
25
26
# File 'lib/dor/druid_utils.rb', line 24

def mkdir(base)
  FileUtils.mkdir_p(path(base))
end

#path(base = nil) ⇒ Object



20
21
22
# File 'lib/dor/druid_utils.rb', line 20

def path(base=nil)
  File.join(*([base,tree].compact))
end

#rmdir(base) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/dor/druid_utils.rb', line 28

def rmdir(base)
  parts = tree
  while parts.length > 0
    dir = File.join(base, *parts)
    begin
      FileUtils.rm(File.join(dir,'.DS_Store'), :force => true)
      FileUtils.rmdir(dir)
    rescue Errno::ENOTEMPTY
      break
    end
    parts.pop
  end
end

#treeObject



16
17
18
# File 'lib/dor/druid_utils.rb', line 16

def tree
  @druid.scan(DRUID_PATTERN).flatten
end