sourceref

package
v0.14.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

README

pkg/sourceref

specscore: annotation parsing and source-to-spec linking. Detects and parses references from source code comments.

Outstanding Questions

  1. sourceref.go hardcodes "github.com", "specscore" as the "current" repo defaults used by parseExpandedURL to determine whether a cross-repo suffix is needed. Should these be configurable via a parameter or context struct so the library works for any project? For now, these match the original behavior.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// DetectionRegex is rebuilt when prefixes change.
	DetectionRegex *regexp.Regexp
)

Functions

func DetectReference

func DetectReference(line string) bool

DetectReference checks if a line contains a source reference.

func ExpandGlobPattern

func ExpandGlobPattern(pattern string) ([]string, error)

ExpandGlobPattern expands a glob pattern to a list of file paths. Returns sorted file paths.

Supported patterns:

  • "**/*" or "**" — matches all files recursively (special-cased)
  • Standard filepath.Match patterns (e.g. "*.go", "src/*.txt")

Note: arbitrary recursive glob patterns like "src/**/*.go" are NOT supported. Only the exact literals "**" and "**/*" trigger recursive matching; all other patterns are matched per-segment via filepath.Match.

func ExtractReference

func ExtractReference(line string) string

ExtractReference extracts the reference string from a line.

func FormatOutput

func FormatOutput(result *ScanResult, singleFile bool, typeFilter string) string

FormatOutput formats the scan results for output. If singleFile is true, returns a flat list. Otherwise, groups by file with headers.

func RegisterPrefix

func RegisterPrefix(prefix string)

RegisterPrefix adds a short-notation prefix (e.g. "mytool") so that "mytool:feature/foo" is recognized as a source reference. Also registers "mytool.io" as an expanded URL domain.

Types

type Reference

type Reference struct {
	ResolvedPath    string
	CrossRepoSuffix string
	Type            string
}

Reference represents a parsed source reference found in source code.

func GetUniqueReferences

func GetUniqueReferences(result *ScanResult, typeFilter string) []*Reference

GetUniqueReferences extracts unique references from a ScanResult, optionally filtered by type. Returns references sorted by (resolved_path, cross_repo_suffix).

func ParseReference

func ParseReference(extracted string) (*Reference, error)

ParseReference parses an extracted reference string and returns a Reference.

func ScanLine

func ScanLine(line string) *Reference

ScanLine scans a single line for references. Returns nil if none found.

type ScanResult

type ScanResult struct {
	// FileRefs maps file path to list of references found in that file
	FileRefs map[string][]*Reference
}

ScanResult represents the references found in a set of files.

func ScanFiles

func ScanFiles(filePaths []string) (*ScanResult, error)

ScanFiles scans a list of files for source references. Returns a ScanResult with all references grouped by file. The result may be partial if some files fail; errors are accumulated and returned alongside whatever refs were successfully scanned.

type SourceRef

type SourceRef struct {
	FilePath    string
	LineNumber  int
	LineContent string
}

SourceRef represents a source file reference (file + line number).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL