asterisk logo # `asterisk` 🌟 Asterisk is a library for parsing and indexing code in various languages. 📚 [![LICENSE](https://img.shields.io/github/license/stitionai/asterisk.svg?cached)](https://github.com/stitionai/asterisk/blob/master/LICENSE) ## Table of Contents * [Features](#features) * [Installation](#installation) * [Usage](#usage) * [Configuration](#configuration) * [Development](#development) * [Contribution](#contribution) * [License](#license) * [Support The Author](#liked-the-project) ## Features - Extract code structure and call information 📊 - Generate call graphs 🌐 - Support for multiple languages 🌍 - Rust 🦀 - Python 🐍 - Configurable language-specific settings 🛠️ ## Installation Add `asterisk` as a dependency in your `Cargo.toml` file: ```toml [dependencies] asterisk = "0.1.0" ``` ## Usage ```rust use asterisk::config::Config; use asterisk::indexer::index_directory; fn main() { let toml_str = fs::read_to_string("asterisk.toml").expect("Unable to read file"); let config = Config::from_toml(&toml_str).unwrap(); let dir_path = "path/to/directory"; let (blocks, call_stack, call_graph) = index_directory(&config, dir_path); // Process the extracted information // ... } ``` ## Configuration Asterisk uses a TOML configuration file to specify language-specific settings. Here's an example configuration: ```toml [languages] [languages.python] [languages.python.matchers] import_statement = "import_from_statement" # ... [languages.rust] [languages.rust.matchers] import_statement = "use_declaration" # ... ``` ## Development To build the project from source: ```bash $ git clone https://github.com/stitionai/asterisk.git $ cd asterisk/ $ cargo build --release ``` ## Contribution Ways to contribute: - Suggest a feature - Report a bug - Fix something and open a pull request - Help document the code - Spread the word ## License Licensed under the MIT License, see LICENSE for more information. ## Liked the project? Support the project by starring the repository. ⭐