hydra-file_characterization 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONTRIBUTING.md +113 -0
- data/README.md +21 -24
- data/lib/hydra/file_characterization.rb +47 -23
- data/lib/hydra/file_characterization/characterizer.rb +6 -5
- data/lib/hydra/file_characterization/characterizers.rb +2 -2
- data/lib/hydra/file_characterization/version.rb +1 -1
- data/spec/lib/hydra/file_characterization/characterizer_spec.rb +39 -0
- data/spec/lib/hydra/file_characterization_spec.rb +49 -32
- metadata +29 -15
- checksums.yaml +0 -7
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
# How to Contribute
|
2
|
+
|
3
|
+
We want your help to make Project Hydra great.
|
4
|
+
There are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things.
|
5
|
+
|
6
|
+
## Hydra Project Intellectual Property Licensing and Ownership
|
7
|
+
|
8
|
+
All code contributors must have an Individual Contributor License Agreement (iCLA) on file with the Hydra Project Steering Group.
|
9
|
+
If the contributor works for an institution, the institution must have a Corporate Contributor License Agreement (cCLA) on file.
|
10
|
+
|
11
|
+
https://wiki.duraspace.org/display/hydra/Hydra+Project+Intellectual+Property+Licensing+and+Ownership
|
12
|
+
|
13
|
+
You should also add yourself to the `CONTRIBUTORS.md` file in the root of the project.
|
14
|
+
|
15
|
+
## Contribution Tasks
|
16
|
+
|
17
|
+
* Reporting Issues
|
18
|
+
* Making Changes
|
19
|
+
* Submitting Changes
|
20
|
+
* Merging Changes
|
21
|
+
|
22
|
+
### Reporting Issues
|
23
|
+
|
24
|
+
* Make sure you have a [GitHub account](https://github.com/signup/free)
|
25
|
+
* Submit a [Github issue](./issues) by:
|
26
|
+
* Clearly describing the issue
|
27
|
+
* Provide a descriptive summary
|
28
|
+
* Explain the expected behavior
|
29
|
+
* Explain the actual behavior
|
30
|
+
* Provide steps to reproduce the actual behavior
|
31
|
+
|
32
|
+
### Making Changes
|
33
|
+
|
34
|
+
* Fork the repository on GitHub
|
35
|
+
* Create a topic branch from where you want to base your work.
|
36
|
+
* This is usually the master branch.
|
37
|
+
* To quickly create a topic branch based on master; `git branch fix/master/my_contribution master`
|
38
|
+
* Then checkout the new branch with `git checkout fix/master/my_contribution`.
|
39
|
+
* Please avoid working directly on the `master` branch.
|
40
|
+
* You may find the [hub suite of commands](https://github.com/defunkt/hub) helpful
|
41
|
+
* Make commits of logical units.
|
42
|
+
* Your commit should include a high level description of your work in HISTORY.textile
|
43
|
+
* Check for unnecessary whitespace with `git diff --check` before committing.
|
44
|
+
* Make sure your commit messages are [well formed](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
45
|
+
* If you created an issue, you can close it by including "Closes #issue" in your commit message. See [Github's blog post for more details](https://github.com/blog/1386-closing-issues-via-commit-messages)
|
46
|
+
|
47
|
+
```
|
48
|
+
Present tense short summary (50 characters or less)
|
49
|
+
|
50
|
+
More detailed description, if necessary. It should be wrapped to 72
|
51
|
+
characters. Try to be as descriptive as you can, even if you think that
|
52
|
+
the commit content is obvious, it may not be obvious to others. You
|
53
|
+
should add such description also if it's already present in bug tracker,
|
54
|
+
it should not be necessary to visit a webpage to check the history.
|
55
|
+
|
56
|
+
Include Closes #<issue-number> when relavent.
|
57
|
+
|
58
|
+
Description can have multiple paragraphs and you can use code examples
|
59
|
+
inside, just indent it with 4 spaces:
|
60
|
+
|
61
|
+
class PostsController
|
62
|
+
def index
|
63
|
+
respond_with Post.limit(10)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
You can also add bullet points:
|
68
|
+
|
69
|
+
- you can use dashes or asterisks
|
70
|
+
|
71
|
+
- also, try to indent next line of a point for readability, if it's too
|
72
|
+
long to fit in 72 characters
|
73
|
+
```
|
74
|
+
|
75
|
+
* Make sure you have added the necessary tests for your changes.
|
76
|
+
* Run _all_ the tests to assure nothing else was accidentally broken.
|
77
|
+
* When you are ready to submit a pull request
|
78
|
+
|
79
|
+
### Submitting Changes
|
80
|
+
|
81
|
+
[Detailed Walkthrough of One Pull Request per Commit](http://ndlib.github.io/practices/one-commit-per-pull-request/)
|
82
|
+
|
83
|
+
* Read the article ["Using Pull Requests"](https://help.github.com/articles/using-pull-requests) on GitHub.
|
84
|
+
* Make sure your branch is up to date with its parent branch (i.e. master)
|
85
|
+
* `git checkout master`
|
86
|
+
* `git pull --rebase`
|
87
|
+
* `git checkout <your-branch>`
|
88
|
+
* `git rebase master`
|
89
|
+
* It is likely a good idea to run your tests again.
|
90
|
+
* Squash the commits for your branch into one commit
|
91
|
+
* `git rebase --interactive HEAD~<number-of-commits>` ([See Github help](https://help.github.com/articles/interactive-rebase))
|
92
|
+
* To determine the number of commits on your branch: `git log master..<your-branch> --oneline | wc -l`
|
93
|
+
* Squashing your branch's changes into one commit is "good form" and helps the person merging your request to see everything that is going on.
|
94
|
+
* Push your changes to a topic branch in your fork of the repository.
|
95
|
+
* Submit a pull request from your fork to the project.
|
96
|
+
|
97
|
+
### Merging Changes
|
98
|
+
|
99
|
+
* It is considered "poor from" to merge your own request.
|
100
|
+
* Please take the time to review the changes and get a sense of what is being changed. Things to consider:
|
101
|
+
* Does the commit message explain what is going on?
|
102
|
+
* Does the code changes have tests? _Not all changes need new tests, some changes are refactorings_
|
103
|
+
* Does the commit contain more than it should? Are two separate concerns being addressed in one commit?
|
104
|
+
* Did the Travis tests complete successfully?
|
105
|
+
* If you are uncertain, bring other contributors into the conversation by creating a comment that includes their @username.
|
106
|
+
* If you like the pull request, but want others to chime in, create a +1 comment and tag a user.
|
107
|
+
|
108
|
+
# Additional Resources
|
109
|
+
|
110
|
+
* [General GitHub documentation](http://help.github.com/)
|
111
|
+
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
|
112
|
+
* [Pro Git](http://git-scm.com/book) is both a free and excellent book about Git.
|
113
|
+
* [A Git Config for Contributing](http://ndlib.github.io/practices/my-typical-per-project-git-config/)
|
data/README.md
CHANGED
@@ -10,16 +10,30 @@ To provide a wrapper for file characterization
|
|
10
10
|
|
11
11
|
If you are using Rails add the following to an initializer (./config/initializers/hydra-file_characterization_config.rb):
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
```ruby
|
14
|
+
Hydra::FileCharacterization.configure do |config|
|
15
|
+
config.tool_path(:fits, '/path/to/fits')
|
16
|
+
end
|
17
|
+
```
|
16
18
|
|
17
|
-
|
19
|
+
You can call a single characterizer…
|
20
|
+
```ruby
|
21
|
+
xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits)
|
22
|
+
```
|
18
23
|
|
19
|
-
|
24
|
+
…for this particular call, you can specify custom fits path.
|
20
25
|
|
21
|
-
|
22
|
-
|
26
|
+
```ruby
|
27
|
+
xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits) do |config|
|
28
|
+
config[:fits] = './really/custom/path/to/fits'
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
You can also call multiple characterizers at the same time.
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
fits_xml, ffprobe_xml = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits, :ffprobe)
|
36
|
+
```
|
23
37
|
|
24
38
|
* Why `file.read`? To highlight that we want a string. In the case of ActiveFedora, we have a StringIO instead of a file.
|
25
39
|
* Why `file.basename`? In the case of Fits, the characterization takes cues from the extension name.
|
@@ -27,20 +41,3 @@ To use the characterizer:
|
|
27
41
|
## Registering New Characterizers
|
28
42
|
|
29
43
|
This is possible by adding a characterizer to the `Hydra::FileCharacterization::Characterizers`' namespace.
|
30
|
-
|
31
|
-
## To Consider
|
32
|
-
|
33
|
-
How others are using the extract_metadata method
|
34
|
-
- https://github.com/curationexperts/bawstun/blob/ff8142ac043604c11a6f57b03629284bfd3043ea/app/models/generic_file.rb#L173
|
35
|
-
|
36
|
-
## Todo Steps
|
37
|
-
|
38
|
-
- ~~Given a filename, characterize the file and return a raw XML stream~~
|
39
|
-
- ~~Provide method for converting a StringIO and original file name to a temp file with comparable, then running the characterizer against the tempfile~~
|
40
|
-
- ~~Provide a configuration option for the fits path; This would be the default for the characterizer~~
|
41
|
-
- Update existing Sufia implementation
|
42
|
-
- Deprecrate Hydra::Derivatives direct method call
|
43
|
-
- Instead call the characterizer with the content
|
44
|
-
- Allow characterization services to be chained together
|
45
|
-
- ~~This would involve renaming the Characterizer to something else (i.e. Characterizers::Fits)~~
|
46
|
-
- Provide an ActiveFedora Datastream that maps the raw XML stream to a datastructure
|
@@ -9,28 +9,9 @@ module Hydra
|
|
9
9
|
|
10
10
|
module_function
|
11
11
|
|
12
|
-
#
|
13
|
-
|
14
|
-
|
15
|
-
# @param [String] content - The contents of the original file
|
16
|
-
# @param [String] filename - The original file's filename; Some
|
17
|
-
# characterization tools take hints from the file names
|
18
|
-
# @param [Array] tool_names - A list of tool names available on the system
|
19
|
-
#
|
20
|
-
# @return [String, Array<String>] -
|
21
|
-
# String - When a single tool_name is given, returns the raw XML as a
|
22
|
-
# string
|
23
|
-
# Array<String> - When multiple tool_names are given, returns an equal
|
24
|
-
# length Array of XML strings
|
25
|
-
def characterize(content, filename, *tool_names)
|
26
|
-
tool_outputs = []
|
27
|
-
tool_names = Array(tool_names).flatten.compact
|
28
|
-
FileCharacterization::ToTempFile.open(content, filename) do |f|
|
29
|
-
tool_names.each do |tool_name|
|
30
|
-
tool_outputs << FileCharacterization.characterize_with(tool_name, f.path)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
tool_names.size == 1 ? tool_outputs.first : tool_outputs
|
12
|
+
# A convenience method
|
13
|
+
def characterize(*args, &block)
|
14
|
+
FileCharacterization.characterize(*args, &block)
|
34
15
|
end
|
35
16
|
|
36
17
|
module FileCharacterization
|
@@ -39,6 +20,49 @@ module Hydra
|
|
39
20
|
attr_accessor :configuration
|
40
21
|
end
|
41
22
|
|
23
|
+
#
|
24
|
+
# Run all of the specified tools against the given content and filename.
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
# xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits)
|
28
|
+
#
|
29
|
+
# @example
|
30
|
+
# xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits) do |config|
|
31
|
+
# config[:fits] = './really/custom/path/to/fits'
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# @example
|
35
|
+
# fits_xml, ffprobe_xml = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits, :ffprobe)
|
36
|
+
#
|
37
|
+
# @param [String] content - The contents of the original file
|
38
|
+
# @param [String] filename - The original file's filename; Some
|
39
|
+
# characterization tools take hints from the file names
|
40
|
+
# @param [Hash/Array] tool_names - A list of tool names available on the system
|
41
|
+
# if you provide a Hash
|
42
|
+
#
|
43
|
+
# @return [String, Array<String>] -
|
44
|
+
# String - When a single tool_name is given, returns the raw XML as a
|
45
|
+
# string
|
46
|
+
# Array<String> - When multiple tool_names are given, returns an equal
|
47
|
+
# length Array of XML strings
|
48
|
+
#
|
49
|
+
# @yieldparam [Hash] For any of the specified tool_names, if you add a
|
50
|
+
# key to the yieldparam with a value, that value will be used as the path
|
51
|
+
#
|
52
|
+
# @see Hydra::FileCharacterization.configure
|
53
|
+
def self.characterize(content, filename, *tool_names)
|
54
|
+
tool_outputs = []
|
55
|
+
tool_names = Array(tool_names).flatten.compact
|
56
|
+
custom_paths = {}
|
57
|
+
yield(custom_paths) if block_given?
|
58
|
+
FileCharacterization::ToTempFile.open(content, filename) do |f|
|
59
|
+
tool_names.each do |tool_name|
|
60
|
+
tool_outputs << FileCharacterization.characterize_with(tool_name, f.path, custom_paths[tool_name])
|
61
|
+
end
|
62
|
+
end
|
63
|
+
tool_names.size == 1 ? tool_outputs.first : tool_outputs
|
64
|
+
end
|
65
|
+
|
42
66
|
def self.configure
|
43
67
|
self.configuration ||= Configuration.new
|
44
68
|
yield(configuration)
|
@@ -51,4 +75,4 @@ module Hydra
|
|
51
75
|
end
|
52
76
|
|
53
77
|
end
|
54
|
-
end
|
78
|
+
end
|
@@ -9,8 +9,9 @@ module Hydra::FileCharacterization
|
|
9
9
|
class_attribute :tool_path
|
10
10
|
|
11
11
|
attr_reader :filename
|
12
|
-
def initialize(filename)
|
12
|
+
def initialize(filename, tool_path = nil)
|
13
13
|
@filename = filename
|
14
|
+
@tool_path = tool_path
|
14
15
|
end
|
15
16
|
|
16
17
|
def call
|
@@ -31,14 +32,14 @@ module Hydra::FileCharacterization
|
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
35
|
+
def tool_path
|
36
|
+
@tool_path || self.class.tool_path || (raise Hydra::FileCharacterization::UnspecifiedToolPathError.new(self.class))
|
37
|
+
end
|
38
|
+
|
34
39
|
protected
|
35
40
|
|
36
41
|
def command
|
37
42
|
raise NotImplementedError, "Method #command should be overriden in child classes"
|
38
43
|
end
|
39
|
-
|
40
|
-
def tool_path
|
41
|
-
self.class.tool_path || (raise Hydra::FileCharacterization::UnspecifiedToolPathError.new(self.class))
|
42
|
-
end
|
43
44
|
end
|
44
45
|
end
|
@@ -16,8 +16,8 @@ module Hydra::FileCharacterization
|
|
16
16
|
tool_name.to_s.gsub(/(?:^|_)([a-z])/) { $1.upcase }
|
17
17
|
end
|
18
18
|
|
19
|
-
def characterize_with(tool_name,
|
20
|
-
tool_obj = characterizer(tool_name).new(
|
19
|
+
def characterize_with(tool_name, *args)
|
20
|
+
tool_obj = characterizer(tool_name).new(*args)
|
21
21
|
tool_obj.call
|
22
22
|
end
|
23
23
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'hydra/file_characterization/characterizer'
|
3
|
+
|
4
|
+
module Hydra::FileCharacterization
|
5
|
+
describe Characterizer do
|
6
|
+
let(:filename) { __FILE__ }
|
7
|
+
let(:instance_tool_path) { nil }
|
8
|
+
let(:class_tool_path) { nil }
|
9
|
+
|
10
|
+
subject { Hydra::FileCharacterization::Characterizer.new(filename, instance_tool_path) }
|
11
|
+
around(:each) do |example|
|
12
|
+
Hydra::FileCharacterization::Characterizer.tool_path = class_tool_path
|
13
|
+
example.run
|
14
|
+
Hydra::FileCharacterization::Characterizer.tool_path = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'with custom instance tool_path' do
|
18
|
+
let(:instance_tool_path) { '/arbitrary/path' }
|
19
|
+
let(:class_tool_path) { '/a_different/path' }
|
20
|
+
|
21
|
+
its(:tool_path) { should eq instance_tool_path}
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with custom class tool_path' do
|
25
|
+
let(:instance_tool_path) { nil }
|
26
|
+
let(:class_tool_path) { '/a_different/path' }
|
27
|
+
|
28
|
+
its(:tool_path) { should eq class_tool_path}
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'without a specified tool_path' do
|
32
|
+
it 'should raise Hydra::FileCharacterization::UnspecifiedToolPathError' do
|
33
|
+
expect {
|
34
|
+
subject.tool_path
|
35
|
+
}.to raise_error(Hydra::FileCharacterization::UnspecifiedToolPathError)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -4,43 +4,60 @@ require 'hydra/file_characterization/characterizer'
|
|
4
4
|
|
5
5
|
module Hydra
|
6
6
|
|
7
|
-
describe
|
8
|
-
let(:content) { "class Test; end\n" }
|
9
|
-
let(:filename) { 'test.rb' }
|
10
|
-
subject { Hydra.characterize(content, filename, tool_names) }
|
7
|
+
describe FileCharacterization do
|
11
8
|
|
12
|
-
describe '
|
13
|
-
let(:
|
14
|
-
|
15
|
-
|
9
|
+
describe '.characterize' do
|
10
|
+
let(:content) { "class Test; end\n" }
|
11
|
+
let(:filename) { 'test.rb' }
|
12
|
+
subject { Hydra::FileCharacterization.characterize(content, filename, tool_names) }
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
subject
|
22
|
-
}.to raise_error(Hydra::FileCharacterization::ToolNotFoundError)
|
23
|
-
}
|
24
|
-
end
|
14
|
+
describe 'for fits' do
|
15
|
+
let(:tool_names) { [:fits] }
|
16
|
+
it { should match(/#{'<identity format="Plain text" mimetype="text/plain"'}/) }
|
17
|
+
end
|
25
18
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
19
|
+
describe 'with configured path' do
|
20
|
+
it {
|
21
|
+
response = Hydra::FileCharacterization.characterize(content, filename, :fits) do |config|
|
22
|
+
config[:fits] = `which fits || which fits.sh`.strip
|
23
|
+
end
|
24
|
+
expect(response).to match(/#{'<identity format="Plain text" mimetype="text/plain"'}/)
|
25
|
+
}
|
26
|
+
end
|
34
27
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
28
|
+
describe 'with multiple runs' do
|
29
|
+
it {
|
30
|
+
response_1, response_2, response_3 = Hydra::FileCharacterization.characterize(content, filename, :fits, :fits)
|
31
|
+
expect(response_1).to match(/#{'<identity format="Plain text" mimetype="text/plain"'}/)
|
32
|
+
expect(response_2).to match(/#{'<identity format="Plain text" mimetype="text/plain"'}/)
|
33
|
+
expect(response_3).to be_nil
|
34
|
+
}
|
35
|
+
end
|
39
36
|
|
40
|
-
|
37
|
+
describe 'for a bogus tool' do
|
38
|
+
let(:tool_names) { [:cookie_monster] }
|
39
|
+
it {
|
40
|
+
expect {
|
41
|
+
subject
|
42
|
+
}.to raise_error(Hydra::FileCharacterization::ToolNotFoundError)
|
43
|
+
}
|
44
|
+
end
|
41
45
|
|
42
|
-
|
46
|
+
describe 'for a mix of bogus and valid tools' do
|
47
|
+
let(:tool_names) { [:fits, :cookie_monster] }
|
48
|
+
it {
|
49
|
+
expect {
|
50
|
+
subject
|
51
|
+
}.to raise_error(Hydra::FileCharacterization::ToolNotFoundError)
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
describe 'for no tools' do
|
56
|
+
let(:tool_names) { nil }
|
57
|
+
it { should eq [] }
|
58
|
+
end
|
43
59
|
|
60
|
+
end
|
44
61
|
describe '.configure' do
|
45
62
|
let(:content) { "class Test; end\n" }
|
46
63
|
let(:filename) { 'test.rb' }
|
@@ -56,10 +73,10 @@ module Hydra
|
|
56
73
|
end
|
57
74
|
|
58
75
|
expect {
|
59
|
-
Hydra.characterize(content, filename, :fits)
|
76
|
+
Hydra::FileCharacterization.characterize(content, filename, :fits)
|
60
77
|
}.to raise_error(Hydra::FileCharacterization::UnspecifiedToolPathError)
|
61
78
|
end
|
62
79
|
end
|
63
80
|
|
64
81
|
end
|
65
|
-
end
|
82
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-file_characterization
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- James Treacy
|
@@ -11,62 +12,70 @@ authors:
|
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date: 2013-
|
15
|
+
date: 2013-10-10 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: activesupport
|
18
19
|
requirement: !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
19
21
|
requirements:
|
20
|
-
- - '>='
|
22
|
+
- - ! '>='
|
21
23
|
- !ruby/object:Gem::Version
|
22
24
|
version: 3.0.0
|
23
25
|
type: :runtime
|
24
26
|
prerelease: false
|
25
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
26
29
|
requirements:
|
27
|
-
- - '>='
|
30
|
+
- - ! '>='
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: 3.0.0
|
30
33
|
- !ruby/object:Gem::Dependency
|
31
34
|
name: rspec
|
32
35
|
requirement: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
33
37
|
requirements:
|
34
|
-
- - '>='
|
38
|
+
- - ! '>='
|
35
39
|
- !ruby/object:Gem::Version
|
36
40
|
version: '0'
|
37
41
|
type: :development
|
38
42
|
prerelease: false
|
39
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
40
45
|
requirements:
|
41
|
-
- - '>='
|
46
|
+
- - ! '>='
|
42
47
|
- !ruby/object:Gem::Version
|
43
48
|
version: '0'
|
44
49
|
- !ruby/object:Gem::Dependency
|
45
50
|
name: guard
|
46
51
|
requirement: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
47
53
|
requirements:
|
48
|
-
- - '>='
|
54
|
+
- - ! '>='
|
49
55
|
- !ruby/object:Gem::Version
|
50
56
|
version: '0'
|
51
57
|
type: :development
|
52
58
|
prerelease: false
|
53
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
54
61
|
requirements:
|
55
|
-
- - '>='
|
62
|
+
- - ! '>='
|
56
63
|
- !ruby/object:Gem::Version
|
57
64
|
version: '0'
|
58
65
|
- !ruby/object:Gem::Dependency
|
59
66
|
name: guard-rspec
|
60
67
|
requirement: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
61
69
|
requirements:
|
62
|
-
- - '>='
|
70
|
+
- - ! '>='
|
63
71
|
- !ruby/object:Gem::Version
|
64
72
|
version: '0'
|
65
73
|
type: :development
|
66
74
|
prerelease: false
|
67
75
|
version_requirements: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
68
77
|
requirements:
|
69
|
-
- - '>='
|
78
|
+
- - ! '>='
|
70
79
|
- !ruby/object:Gem::Version
|
71
80
|
version: '0'
|
72
81
|
description: To provide a wrapper for file characterization
|
@@ -81,6 +90,7 @@ extra_rdoc_files: []
|
|
81
90
|
files:
|
82
91
|
- .gitignore
|
83
92
|
- .rspec
|
93
|
+
- CONTRIBUTING.md
|
84
94
|
- Gemfile
|
85
95
|
- Guardfile
|
86
96
|
- LICENSE
|
@@ -102,6 +112,7 @@ files:
|
|
102
112
|
- spec/fixtures/brendan_behan.jpeg.fits.xml
|
103
113
|
- spec/fixtures/brendan_broken.dxxd
|
104
114
|
- spec/fixtures/brendan_broken.dxxd.fits.xml
|
115
|
+
- spec/lib/hydra/file_characterization/characterizer_spec.rb
|
105
116
|
- spec/lib/hydra/file_characterization/characterizers/ffprobe_spec.rb
|
106
117
|
- spec/lib/hydra/file_characterization/characterizers/fits_spec.rb
|
107
118
|
- spec/lib/hydra/file_characterization/characterizers_spec.rb
|
@@ -111,26 +122,27 @@ files:
|
|
111
122
|
homepage: https://github.com/projecthydra/hydra-file_characterization
|
112
123
|
licenses:
|
113
124
|
- APACHE2
|
114
|
-
metadata: {}
|
115
125
|
post_install_message:
|
116
126
|
rdoc_options: []
|
117
127
|
require_paths:
|
118
128
|
- lib
|
119
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
120
131
|
requirements:
|
121
|
-
- - '>='
|
132
|
+
- - ! '>='
|
122
133
|
- !ruby/object:Gem::Version
|
123
134
|
version: '0'
|
124
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
125
137
|
requirements:
|
126
|
-
- - '>='
|
138
|
+
- - ! '>='
|
127
139
|
- !ruby/object:Gem::Version
|
128
140
|
version: '0'
|
129
141
|
requirements: []
|
130
142
|
rubyforge_project:
|
131
|
-
rubygems_version:
|
143
|
+
rubygems_version: 1.8.25
|
132
144
|
signing_key:
|
133
|
-
specification_version:
|
145
|
+
specification_version: 3
|
134
146
|
summary: To provide a wrapper for file characterization
|
135
147
|
test_files:
|
136
148
|
- spec/fixtures/archive.zip
|
@@ -139,9 +151,11 @@ test_files:
|
|
139
151
|
- spec/fixtures/brendan_behan.jpeg.fits.xml
|
140
152
|
- spec/fixtures/brendan_broken.dxxd
|
141
153
|
- spec/fixtures/brendan_broken.dxxd.fits.xml
|
154
|
+
- spec/lib/hydra/file_characterization/characterizer_spec.rb
|
142
155
|
- spec/lib/hydra/file_characterization/characterizers/ffprobe_spec.rb
|
143
156
|
- spec/lib/hydra/file_characterization/characterizers/fits_spec.rb
|
144
157
|
- spec/lib/hydra/file_characterization/characterizers_spec.rb
|
145
158
|
- spec/lib/hydra/file_characterization/to_temp_file_spec.rb
|
146
159
|
- spec/lib/hydra/file_characterization_spec.rb
|
147
160
|
- spec/spec_helper.rb
|
161
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 6aa0e27917882868e5356621f163eda7e6ab56a6
|
4
|
-
data.tar.gz: d3114a797679bcd25bc29f19ae31f70659828016
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 88e44705e2cb908b5732a3f220e90a2544b909834bbe3f96b07ea82c142b31cffaebd38d068493ad84cb0887fe6eec76aeff11e9fd874c116a24fa9295729e3c
|
7
|
-
data.tar.gz: 6932b2860c71bfb3171f0a952021fe0935121b880ea7fcd3aff5b4c5dd47e551143773f154be0e852f5b637f1f22e3a3a1d1949eaea392b38984793017eb7bb2
|