/*
 * Copyright (C) 2010, Red Hat Inc. and others
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Distribution License v. 1.0 which is available at
 * https://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */
package org.eclipse.jgit.attributes;

import static java.nio.charset.StandardCharsets.UTF_8;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

Represents a bundle of attributes inherited from a base directory. This class is not thread safe, it maintains state about the last match.
Since:3.7
/** * Represents a bundle of attributes inherited from a base directory. * * This class is not thread safe, it maintains state about the last match. * * @since 3.7 */
public class AttributesNode {
The rules that have been parsed into this node.
/** The rules that have been parsed into this node. */
private final List<AttributesRule> rules;
Create an empty ignore node with no rules.
/** * Create an empty ignore node with no rules. */
public AttributesNode() { rules = new ArrayList<>(); }
Create an ignore node with given rules.
Params:
  • rules – list of rules.
/** * Create an ignore node with given rules. * * @param rules * list of rules. */
public AttributesNode(List<AttributesRule> rules) { this.rules = rules; }
Parse files according to gitattribute standards.
Params:
  • in – input stream holding the standard ignore format. The caller is responsible for closing the stream.
Throws:
  • IOException – Error thrown when reading an ignore file.
/** * Parse files according to gitattribute standards. * * @param in * input stream holding the standard ignore format. The caller is * responsible for closing the stream. * @throws java.io.IOException * Error thrown when reading an ignore file. */
public void parse(InputStream in) throws IOException { BufferedReader br = asReader(in); String txt; while ((txt = br.readLine()) != null) { txt = txt.trim(); if (txt.length() > 0 && !txt.startsWith("#") /* Comments *///$NON-NLS-1$ && !txt.startsWith("!") /* Negative pattern forbidden for attributes */) { //$NON-NLS-1$ int patternEndSpace = txt.indexOf(' '); int patternEndTab = txt.indexOf('\t'); final int patternEnd; if (patternEndSpace == -1) patternEnd = patternEndTab; else if (patternEndTab == -1) patternEnd = patternEndSpace; else patternEnd = Math.min(patternEndSpace, patternEndTab); if (patternEnd > -1) rules.add(new AttributesRule(txt.substring(0, patternEnd), txt.substring(patternEnd + 1).trim())); } } } private static BufferedReader asReader(InputStream in) { return new BufferedReader(new InputStreamReader(in, UTF_8)); }
Getter for the field rules.
Returns:list of all ignore rules held by this node
/** * Getter for the field <code>rules</code>. * * @return list of all ignore rules held by this node */
public List<AttributesRule> getRules() { return Collections.unmodifiableList(rules); } }