Skip to content

eray-can/tree-complete

Repository files navigation

Tree-Complete

This is my first experience, and I have noticed my mistakes. I will make improvements soon


Tree-Complete aims to create a general autocomplete by supporting various types of trees. It is designed as a system that can understand data input across a wide range, encompassing different tree structures. By providing users with a more flexible and comprehensive autocomplete experience, Tree-Complete can effectively operate on various datasets. This approach is versatile, adapting to different scenarios, and can meet the diverse needs of users.


Supported Trees

Type Structure tree-complete
Trees
RedBlackTree no
AVLTree yes
BTree no
BinaryHeap no

go get github.com/eray-can/tree-complete

Example GetTreeCompleteResponse


Usage

The supported tree types are transformed into the tree-complete type for processing


func example() {
    //example mock data for example
    MockDataList := mock.GetTreeMockData()
    
    //new avl tree for example
    newAvlTree := avltree.NewWithIntComparator()
    
    //set tree mock data for example
    for idx := range MockDataList {
    newAvlTree.Put(idx, MockDataList[idx])
    }
    
    //convert tree-complete
    convertTree := myTree.ConvertAVLToMyTree(newAvlTree)
}

NewCompleteTree To instantiate TreeComplete, we need to create a struct.


// MyTree: Converted tree;
// language: Language-based word Lowercase
// Prefix: search expressıon
// AsCii: Convert words used in some languages
type NewTreeCompleteSchema struct {
        MyTree *mytree.MyTree
        Lang   unicode.SpecialCase
        AsCii  []string
        Prefix string
}

//new schema
treecomplete.NewCompleteTree(schema.NewTreeCompleteSchema{
    MyTree: convertTree,
    Lang:   unicode.TurkishCase,
    AsCii:  treecomplete.TrAscii,
    Prefix: "ery",
})

func NewCompleteTree(NewSchema schema.NewTreeCompleteSchema) *ITreeComplete {
    return &ITreeComplete{Tree: NewSchema.MyTree, language: NewSchema.Lang, AsciiReplace: NewSchema.AsCii, Prefix: NewSchema.Prefix}
}

It is completed by calling the "TreeComplete" method to create an auto-complete structure.

ResponseBuilder: Generic bir response oluşturmak için kullanılır
Filter: istediğiniz parametreleri sorgulamak için kullanılır

func example() {
    //MyTree: converted tree;
    //ResponseBuilder: Generic response;
    //Filter: filter conditions;
    type TreeCompleteSchema struct {
        MyTree          *mytree.MyTree
        Filter          func(interface{}, string) bool
        ResponseBuilder func(interface{}) interface{}
    
}


//MyTree: converted tree;
//ResponseBuilder: Generic response;
//Filter: filter conditions;
newCompleteTree.TreeComplete(schema.TreeCompleteSchema{
    MyTree: convertTree,
    Filter: func(value interface{}, prefix string) bool {
        response := value.(*mock.TestTree)
        return newCompleteTree.ContainsSubstringIgnoreCase(response.Name) || newCompleteTree.ContainsSubstringIgnoreCase(response.Surname)
    },
    ResponseBuilder: func(value interface{}) interface{} {
        response := value.(*mock.TestTree)
        return &myResponse{
            Name:    response.Name,
            Surname: response.Surname,
        }
    },
})

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages