package countalert

import (
	"bufio"
	"regexp"
	"strings"
)

// normal comment
func CountAlertsFromContent(content string) (count int, err error) {
	scanner := bufio.NewScanner(strings.NewReader(content))
	lineNumber := 0

	for scanner.Scan() {
		lineNumber++
		line := strings.TrimSpace(scanner.Text())
		if line == "" {
			continue
		}
		if strings.Contains(line, "alert:") {
			if !strings.HasPrefix(line, "#") {
				count++
			}
		}
	}
	if err := scanner.Err(); err != nil {
		return 0, err
	}

	return count, nil
}

// full comment
func CountCommentAlertsFromContent(content string) (count int, err error) {
	scanner := bufio.NewScanner(strings.NewReader(content))
	alertRegexp := regexp.MustCompile(`^\s*#\s*- alert:`)
	count = 0

	for scanner.Scan() {
		line := scanner.Text()
		trimmed := strings.TrimSpace(line)
		if alertRegexp.MatchString(line) && !strings.HasPrefix(trimmed, "##") {
			count++
		}
	}
	return count, err
}
