sif

package module
v0.0.0-...-bdc4aa6 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2017 License: MIT Imports: 9 Imported by: 0

README

SIF

Build Status Go Report Card codecov

Search In Files
An experimental ack written in Go.

Installation

If you have a Golang environment setup, you can simply run:

$ go get -u github.com/drgarcia1986/sif/cmd/sif

Or get binaries on releases

For windows users: Colors works only in PowerShell

Example

Run against repo dir:

$ sif better
_tests/golang.txt
9: A little copying is better than a little dependency.
14: Clear is better than clever.

_tests/python.txt
3: Beautiful is better than ugly.
4: Explicit is better than implicit.
5: Simple is better than complex.
6: Complex is better than complicated.
7: Flat is better than nested.
8: Sparse is better than dense.
17: Now is better than never.
18: Although never is often better than *right* now.

sif_test.go
14:             {"python.txt", "better", []int{3, 4, 5, 6, 7, 8, 17, 18}},

Same search with ack, grep and sif, time comparison:

$ time ack better
...
        0.11 real         0.07 user         0.01 sys
$ time grep better -rn *
...
        0.04 real         0.03 user         0.00 sys
$ time sif better
...
        0.01 real         0.00 user         0.00 sys

Library Usage Example

package main

import (
	"fmt"

	"github.com/drgarcia1986/sif"
)

func main() {
	s, _ := sif.New("fmt", sif.Options{CaseInsensitive: false})
	fm, err := s.ScanFile("./main.go")
	if err != nil {
		panic(err)
	}
	if fm != nil {
		for _, m := range fm.Matches {
			fmt.Printf("Line: %d, Text: %s\n", m.Line, m.Text)
		}
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FileMatched

type FileMatched struct {
	Name    string
	Matches []Match
}

type Match

type Match struct {
	Line int
	Text string
}

type Options

type Options struct {
	CaseInsensitive bool
}

type Sif

type Sif struct {
	// contains filtered or unexported fields
}

func New

func New(pattern string, options Options) (*Sif, error)

func (*Sif) Scan

func (s *Sif) Scan(path string) ([]*FileMatched, error)

func (*Sif) ScanDir

func (s *Sif) ScanDir(dir string) ([]*FileMatched, error)

func (*Sif) ScanFile

func (s *Sif) ScanFile(path string) (*FileMatched, error)

Directories

Path Synopsis
_tests
cmd
sif

Jump to

Keyboard shortcuts

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