Coder Social home page Coder Social logo

word-searcher's Introduction

WordSearcher

Program pozwala na wyszukiwanie frazy w plikach, znajdujących się w podanym katalogu. Program działa w konsoli zarówno na systemie Windows, jak i na systemie Linux.

Do projektu dołączony został plik Makefile. W przypadku systemów, w których zainstalowany jest make oraz g++ z lpthread i ncurses, wystarczy uruchomić w konsoli polecenie make, aby skompilować program i utworzyć potrzebne foldery. W przypadku pierwszej kompilacji, warto jednak uruchomić polecenie make all, aby utworzyć potrzebne foldery, do których zapisywane będą pliki tworzone przez g++. Po poprawnej kompilacji utworzony zostanie plik wordsearcher.

Od wersji 0.2.0 aplikacja działa w oparciu o bibliotekę NCurses (New Curses). Biblioteka ta nie jest dostępna dla systemu Windows, jednak istnieje jej odpowiednik PDCurses (Public Domain Curses), który może z powodzeniem zastąpić działanie oryginalnej biblioteki.

Aby poprawnie skompilować projekt na systemie Microsoft Windows, należy pobrać wspomnianą powyżej bibliotekę PDCurses i dołączyć ją do projektu. Plik nagłókowy jest już dołączony do źródeł.

Filtrowanie

Od wersji 0.1.4 / 0.2.1 możliwe jest filtrowanie rozszerzeń plików. Filtr można wpisać zaraz po podaniu frazy i powinien on mieć następujący format:

[modyfikatory]/[rozszerzenie1]/[rozszerzenie2]/...

Gdzie modyfikatorami są:

  • ! : Porównywanie rozszerzeń z uwzględnieniem wielkości liter - szybsze niż zwykłe.
  • @ : Uwzględnienie w wyszukiwaniu plików, nie posiadających rozszerzeń.
  • * : Wyszukiwanie we wszystkich plikach - domyślne gdy filtr jest pusty.
  • + : Przeszukiwanie w plikach o podanych rozszerzeniach - parametr domyślny.
  • - : Przeszukiwanie w plikach o rozszerzeniach innych niż podane.
  • = : Przeszukiwanie tylko w podanym katalogu, bez podkatalogów.

Modyfikatory można łączyć oraz podawać bez listy rozszerzeń. Przypadki podawania modyfikatorów bez listy rozszerzeń:

  • @ : Wyszukiwanie tylko w plikach bez rozszerzeń.
  • *@ : Wyszukiwanie w plikach posiadających rozszerzenia.
  • - : Wolniejszy odpowiednik pozycji *@.
  • *= : Wyszukiwanie we wszystkich plikach, ale tylko w podanym folderze.
  • *=@ : Wyszukiwanie we wszystkich plikach o dowolnym rozszerzeniu w podanym folderze.
  • @= : Wyszukiwanie tylko w plikach bez rozszerzenia w podanym folderze.

Przykłady poprawnych filtrów:

*@
!+/html/css
-/jpg/png
/php/js/ts
!@-/cpp/hpp
=+/c/h

Wygląd i nawigacja

Po uruchomieniu program w przypadku systemu Linux wyświetlonym na konsoli Terminator v1.0 będzie wyglądał mniej więcej tak:

WordSearcher v0.2.2-linux

Na samej górze znajdują się pola tekstowe dla folderu, frazy i filtru. Uruchomienie wyszukiwarki z domyślnymi wartościami tych pól, spowoduje wypisanie wszystkich plików, możliwych do odczytu. Od wersji 0.2.2 możliwe jest przerwanie uruchomionego wyszukiwania bez konieczności zamykania programu lub zabijania procesu, z racji przeniesienia wyszukiwarki do osobnego wątku.

Lista skrótów klawiaturowych, dostępnych w programie:

  • CTRL + C - kończy działanie programu lub przerywa wyszukiwanie.
  • CTRL + I - ustawia skupienie na polu tekstowym, pozwalającym na zmianę filtra.
  • CTRL + O - ustawia skupienie na polu tekstowym, pozwalającym na zmianę folderu.
  • CTRL + P - ustawia skupienie na polu tekstowym, pozwalającym na zmianę frazy.
  • CTRL + Q - ustawia skupienie na polu, dzięki czemu możliwe jest przewijanie wyników wyszukiwania.

Funkcja przerywa wyszukiwanie, dopiero gdy skończy szukać frazy w otwartym pliku. Aby wyjść z trybu skupienia pola tekstowego, należy wcisnąć klawisz ENTER. To samo tyczy się pola zawierającego wyniki wyszukiwania.

Program skompilowany i uruchomiony na systemie Microsoft Windows wygląda tak:

WordSearcher v0.2.2-windows

Pod polami tekstowymi znajduje się panel, w którym wyświetlana jest nazwa pliku, który aktualnie jest przeszukiwany. Pod nim znajduje sę panel, zawierający listę wszystkich plików, które spełniają kryterium wyszukiwania. Wyniki wyświetlane są na bierząco.

Obok wersji 0.2.x rozwijana jest wersja 0.1.x, która działa bezpośrednio na konsoli.

Lista zmian w programie

  • v0.2.2
    • Przeniesiono działanie kodu wyszukiwarki do osobnego wątku.
    • Kombinacja klawiszy CTRL + C powoduje przerwanie wyszukiwania.
    • Dodano informację o wyszukiwaniu (napis po rozpoczęciu wyszukiwania)
    • Dodano zabezpieczenie przed przypadkowym zamknięciem programu, teraz po wciśnięciu kombinacji klawiszy CTRL + C, należy dodatkowo wcisnąć klawisz ESC.
    • Zmieniono klawisze dostępu do pól tekstowych na CTRL + (I/O/P).
  • v0.1.4
    • Utworzono filtrowanie rozszerzeń plików.
    • Dodano możliwość wyłączenia wyszukiwania przyrostowego.
  • v0.2.1
    • Naprawiono błędy kompilacji na systemie Windows.
    • Naprawiono błąd związany z ostatnim ukośnikiem w ścieżce.
    • Utworzono filtrowanie rozszerzeń plików.
    • Dodano możliwość wyłączenia wyszukiwania przyrostowego.
  • v0.2.0
    • Przeniesiono kod z wersji 0.1.3 na wersję 0.2.0.
    • Zmieniono wygląd interfejsu - teraz program używa biblioteki ncurses.
    • Utworzono pola tekstowe dla folderu i frazy.
    • Utworzono pole, w którym wyświetlane są wyniki wyszukiwania.
  • v0.1.3
    • Naprawiono błąd związany z ostatnim ukośnikiem w ścieżce.
    • Utworzono plik README.
  • v0.1.2
    • Naprawiono błędy w kompilacji na systemie Linux.
    • W przypadku nie podania ścieżki, przyjmowana jest aktualna ./.
  • v0.1.1
    • Dodano statystyki wyszukiwania.
    • Naprawiono błąd związany ze spacją w ścieżce folderu.
  • v0.1.0
    • Pierwsza wersja programu.

word-searcher's People

Contributors

sobiemir avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.