Class: Reality::Git::Attributes
- Inherits:
-
Object
- Object
- Reality::Git::Attributes
- Defined in:
- lib/reality/git/attributes.rb
Overview
Representation of a gitattributes file.
Instance Attribute Summary collapse
-
#attributes_file ⇒ Object
readonly
Returns the value of attribute attributes_file.
Class Method Summary collapse
-
.parse(repository_path, attributes_file = nil, relative_path = nil) ⇒ Object
path - The path to the Git repository.
Instance Method Summary collapse
-
#attributes(path) ⇒ Object
Returns the attributes for the specified path as a hash.
- #binary_rule(pattern, attributes = {}) ⇒ Object
-
#dos_text_rule(pattern, attributes = {}) ⇒ Object
Adds a rule for pattern that sets the text attribute and eol=crlf.
-
#initialize(repository_path, attributes_file = nil, relative_path = nil, rules = []) ⇒ Attributes
constructor
A new instance of Attributes.
- #rule(pattern, attributes) ⇒ Object
-
#rules ⇒ Object
Returns a list of attribute rules to apply.
-
#text_rule(pattern, attributes = {}) ⇒ Object
Adds a rule for pattern that sets the text attribute.
-
#unix_text_rule(pattern, attributes = {}) ⇒ Object
Adds a rule for pattern that sets the text attribute and eol=lf.
- #write_to(filename, options = {}) ⇒ Object
Constructor Details
#initialize(repository_path, attributes_file = nil, relative_path = nil, rules = []) ⇒ Attributes
Returns a new instance of Attributes.
32 33 34 35 36 37 |
# File 'lib/reality/git/attributes.rb', line 32 def initialize(repository_path, attributes_file = nil, relative_path = nil, rules = []) @path = File.(repository_path) @attributes_file = attributes_file || "#{@path}/.gitattributes" @relative_path = relative_path || File.dirname(@attributes_file) @rules = rules end |
Instance Attribute Details
#attributes_file ⇒ Object (readonly)
Returns the value of attribute attributes_file.
39 40 41 |
# File 'lib/reality/git/attributes.rb', line 39 def attributes_file @attributes_file end |
Class Method Details
.parse(repository_path, attributes_file = nil, relative_path = nil) ⇒ Object
path - The path to the Git repository. attributes_file - The path to the “.gitattributes” file. Defaults to “<path>/.gitattributes”. relative_path - The path to which attributes apply. Defaults to direcotyr containing attributes file.
24 25 26 27 28 29 |
# File 'lib/reality/git/attributes.rb', line 24 def parse(repository_path, attributes_file = nil, relative_path = nil) path = File.(repository_path) attributes_file ||= "#{path}/.gitattributes" rules = File.exist?(attributes_file) ? Reality::Git::AttributesParser.parse_file(attributes_file) : [] Attributes.new(repository_path, attributes_file, relative_path, rules) end |
Instance Method Details
#attributes(path) ⇒ Object
Returns the attributes for the specified path as a hash.
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/reality/git/attributes.rb', line 42 def attributes(path) full_path = File.join(@path, path) @rules.reverse.each do |rule| full_pattern = rule.pattern[0] == '/' ? "#{@relative_path}#{rule.pattern}" : "#{@relative_path}/**/#{rule.pattern}" return rule.attributes if File.fnmatch?(full_pattern, full_path, File::FNM_PATHNAME | File::FNM_DOTMATCH) end {} end |
#binary_rule(pattern, attributes = {}) ⇒ Object
85 86 87 |
# File 'lib/reality/git/attributes.rb', line 85 def binary_rule(pattern, attributes = {}) rule(pattern, { :binary => true }.merge(attributes)) end |
#dos_text_rule(pattern, attributes = {}) ⇒ Object
Adds a rule for pattern that sets the text attribute and eol=crlf. This means that the file will be stored in the repository with line endings converted to LF and the local checkout will have line endings converted to CRLF
81 82 83 |
# File 'lib/reality/git/attributes.rb', line 81 def dos_text_rule(pattern, attributes = {}) text_rule(pattern, { :eol => 'crlf' }.merge(attributes)) end |
#rule(pattern, attributes) ⇒ Object
61 62 63 |
# File 'lib/reality/git/attributes.rb', line 61 def rule(pattern, attributes) @rules << AttributeRule.new(pattern, attributes) end |
#rules ⇒ Object
Returns a list of attribute rules to apply.
90 91 92 |
# File 'lib/reality/git/attributes.rb', line 90 def rules @rules.dup end |
#text_rule(pattern, attributes = {}) ⇒ Object
Adds a rule for pattern that sets the text attribute. This means that the file will be stored in the repository with line endings converted to LF
67 68 69 |
# File 'lib/reality/git/attributes.rb', line 67 def text_rule(pattern, attributes = {}) rule(pattern, { :text => true }.merge(attributes)) end |
#unix_text_rule(pattern, attributes = {}) ⇒ Object
Adds a rule for pattern that sets the text attribute and eol=lf. This means that the file will be stored in the repository with line endings converted to LF and the local checkout will have line endings converted to LF
74 75 76 |
# File 'lib/reality/git/attributes.rb', line 74 def unix_text_rule(pattern, attributes = {}) text_rule(pattern, { :eol => 'lf' }.merge(attributes)) end |
#write_to(filename, options = {}) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/reality/git/attributes.rb', line 53 def write_to(filename, = {}) prefix = [:prefix].nil? ? '' : "#{options[:prefix]}\n" rules = [:normalize] ? @rules.dup.sort.uniq : @rules content = rules.collect {|r| r.to_s}.join("\n") content += "\n" unless content.empty? IO.write(filename, prefix + content) end |