ucf 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,88 +0,0 @@
1
- # Copyright (c) 2013 The University of Manchester, UK.
2
- #
3
- # All rights reserved.
4
- #
5
- # Redistribution and use in source and binary forms, with or without
6
- # modification, are permitted provided that the following conditions are met:
7
- #
8
- # * Redistributions of source code must retain the above copyright notice,
9
- # this list of conditions and the following disclaimer.
10
- #
11
- # * Redistributions in binary form must reproduce the above copyright notice,
12
- # this list of conditions and the following disclaimer in the documentation
13
- # and/or other materials provided with the distribution.
14
- #
15
- # * Neither the names of The University of Manchester nor the names of its
16
- # contributors may be used to endorse or promote products derived from this
17
- # software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
- # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
- # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
- # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
- # POSSIBILITY OF SUCH DAMAGE.
30
- #
31
- # Author: Robert Haines
32
-
33
- require 'zip/zip_entry'
34
-
35
- module UCF
36
-
37
- # This module provides support for reserved names.
38
- module ReservedNames
39
-
40
- # :call-seq:
41
- # reserved_names -> Array
42
- #
43
- # Return a list of reserved file and directory names for this UCF
44
- # document.
45
- #
46
- # Reserved files and directories must be accessed directly by methods
47
- # within Container (or subclasses of Container). This is because they are
48
- # fundamental to the format and might need to exhibit certain properties
49
- # (such as no compression) that must be preserved. The "mimetype" file is
50
- # an example of such a reserved entry.
51
- #
52
- # To add a reserved name to a subclass of Container simply add it to the
53
- # list in the constructor (you must call the super constructor first!):
54
- #
55
- # class MyContainer < UCF::Container
56
- # def initialize(filename)
57
- # super(filename)
58
- #
59
- # register_reserved_name("my_reserved_name")
60
- # end
61
- # end
62
- def reserved_names
63
- @reserved_names ||= []
64
- end
65
-
66
- # :call-seq:
67
- # reserved_entry?(entry) -> boolean
68
- #
69
- # Is the given entry in the reserved list of names? A String or a
70
- # Zip::ZipEntry object can be passed in here.
71
- def reserved_entry?(entry)
72
- name = entry.kind_of?(::Zip::ZipEntry) ? entry.name : entry
73
- name.chop! if name.end_with? "/"
74
- reserved_names.map { |n| n.downcase }.include? name.downcase
75
- end
76
-
77
- protected
78
-
79
- # :call-seq:
80
- # register_reserved_name(name)
81
- #
82
- # Add a reserved name to the list.
83
- def register_reserved_name(name)
84
- @reserved_names ||= []
85
- @reserved_names << name unless @reserved_names.include? name
86
- end
87
- end
88
- end
@@ -1,70 +0,0 @@
1
- # Copyright (c) 2013 The University of Manchester, UK.
2
- #
3
- # All rights reserved.
4
- #
5
- # Redistribution and use in source and binary forms, with or without
6
- # modification, are permitted provided that the following conditions are met:
7
- #
8
- # * Redistributions of source code must retain the above copyright notice,
9
- # this list of conditions and the following disclaimer.
10
- #
11
- # * Redistributions in binary form must reproduce the above copyright notice,
12
- # this list of conditions and the following disclaimer in the documentation
13
- # and/or other materials provided with the distribution.
14
- #
15
- # * Neither the names of The University of Manchester nor the names of its
16
- # contributors may be used to endorse or promote products derived from this
17
- # software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
- # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
- # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
- # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
- # POSSIBILITY OF SUCH DAMAGE.
30
- #
31
- # Author: Robert Haines
32
-
33
- #
34
- module UCF
35
-
36
- # The base class of all other exceptions raised by this library.
37
- class UCFError < RuntimeError
38
- end
39
-
40
- # This exception is raised when a bad UCF is detected.
41
- class MalformedUCFError < UCFError
42
-
43
- # :call-seq:
44
- # new(reason = "")
45
- #
46
- # Create a new MalformedUCFError with an optional reason for why the UCF
47
- # document is malformed.
48
- def initialize(reason = nil)
49
- if reason.nil?
50
- super("Malformed UCF Document.")
51
- else
52
- super("Malformed UCF Document: #{reason}")
53
- end
54
- end
55
- end
56
-
57
- # This exception is raised when a clash occurs with a reserved or managed
58
- # name.
59
- class ReservedNameClashError < UCFError
60
-
61
- # :call-seq:
62
- # new(name)
63
- #
64
- # Create a new ReservedNameClashError with the name of the clash supplied.
65
- def initialize(name)
66
- super("'#{name}' is reserved for internal use in this UCF document.")
67
- end
68
- end
69
-
70
- end