Class: Licensee::ProjectFiles::ProjectFile
- Inherits:
-
Object
- Object
- Licensee::ProjectFiles::ProjectFile
show all
- Extended by:
- Forwardable
- Includes:
- HashHelper
- Defined in:
- lib/licensee/project_files/project_file.rb
Constant Summary
collapse
- HASH_METHODS =
%i[
filename content content_hash content_normalized matcher matched_license
].freeze
- ENCODING =
Encoding::UTF_8
- ENCODING_OPTIONS =
{
invalid: :replace,
undef: :replace,
replace: ''
}.freeze
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from HashHelper
#to_h
Constructor Details
#initialize(content, metadata = {}) ⇒ ProjectFile
Create a new Licensee::ProjectFile with content and metadata
content - file content metadata - can be either the string filename, or a hash containing
metadata about the file content. If a hash is given, the
filename should be given using the :name key. See individual
project types for additional available metadata
Returns a new Licensee::ProjectFile
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/licensee/project_files/project_file.rb', line 34
def initialize(content, metadata = {})
@content = content
@content.force_encoding(ENCODING)
unless @content.valid_encoding?
@content.encode!(ENCODING, ENCODING_OPTIONS)
end
metadata = { name: metadata } if metadata.is_a? String
@data = metadata || {}
end
|
Instance Attribute Details
#content ⇒ Object
Returns the value of attribute content.
11
12
13
|
# File 'lib/licensee/project_files/project_file.rb', line 11
def content
@content
end
|
Instance Method Details
#confidence ⇒ Object
Returns the percent confident with the match
72
73
74
|
# File 'lib/licensee/project_files/project_file.rb', line 72
def confidence
matcher && matcher.confidence
end
|
#content_hash ⇒ Object
95
96
97
|
# File 'lib/licensee/project_files/project_file.rb', line 95
def content_hash
nil
end
|
#content_normalized ⇒ Object
99
100
101
|
# File 'lib/licensee/project_files/project_file.rb', line 99
def content_normalized
nil
end
|
#copyright? ⇒ Boolean
Is this file a COPYRIGHT file with only a copyright statement? If so, it can be excluded from determining if a project has >1 license
#directory ⇒ Object
Also known as:
dir
53
54
55
|
# File 'lib/licensee/project_files/project_file.rb', line 53
def directory
@data[:dir] || '.'
end
|
#filename ⇒ Object
Also known as:
path
TODO: In the next major release, filename should be the basename and path should be either the absolute path or the relative path to the project root, but maintaining the alias for backward compatability
48
49
50
|
# File 'lib/licensee/project_files/project_file.rb', line 48
def filename
@data[:name]
end
|
#license ⇒ Object
Also known as:
match
76
77
78
|
# File 'lib/licensee/project_files/project_file.rb', line 76
def license
matcher && matcher.match
end
|
#matched_license ⇒ Object
82
83
84
|
# File 'lib/licensee/project_files/project_file.rb', line 82
def matched_license
license.spdx_id if license
end
|
#matcher ⇒ Object
67
68
69
|
# File 'lib/licensee/project_files/project_file.rb', line 67
def matcher
@matcher ||= possible_matchers.map { |m| m.new(self) }.find(&:match)
end
|
#path_relative_to_root ⇒ Object
Also known as:
relative_path
58
59
60
|
# File 'lib/licensee/project_files/project_file.rb', line 58
def path_relative_to_root
File.join(directory, filename)
end
|
#possible_matchers ⇒ Object
63
64
65
|
# File 'lib/licensee/project_files/project_file.rb', line 63
def possible_matchers
raise 'Not implemented'
end
|