sw-ini is a high-performance INI parser for MoonBit applications. It provides a simple and efficient way to parse and access INI configuration files with a clean and intuitive API.
🚀 Key Features
- 🔍 INI Parsing – Parse INI files with comprehensive error handling
- 🛡️ Type Safety – Strongly typed access to configuration values
- 🔄 Case Sensitivity Options – Configurable case sensitivity for section and key names
- 🎯 Simple API – Easy to use with intuitive method names
- 📦 Zero Dependencies – Pure MoonBit implementation with no external dependencies
moon add ShellWen/sw_ini
sw-ini provides a straightforward way to parse and access INI configuration files in your MoonBit applications.
An INI file is a configuration file format that consists of sections and key-value pairs:
config.ini
[server]
host=localhost
port=3000
[database]
url=mysql://user:pass@localhost/dbname
max_connections=100
The simplest way to use sw-ini
is with the parse
function:
fn main {
let config_str = "[server]\nhost=localhost\nport=3000"
let ini = @sw_ini.parse!(config_str)
let host = ini.get(section="server", "host").unwrap()
println("host=\{host}")
}
sw-ini offers configuration options when parsing:
// Case-sensitive parsing
let ini = @sw_ini.parse!(content, is_case_sensitive=true)
// Create an empty INI file object
let ini = @sw_ini.IniFile::new(is_case_sensitive=true)
After parsing, you can access values using various methods:
let ini = @sw_ini.parse!(content)
// Get string value (with optional section)
let host = ini.get(section="server", "host")
// Get boolean value
let enabled = ini.get_bool(section="feature", "enabled")
// Get with default section (global)
let global_value = ini.get("global_key")
sw-ini uses MoonBit's Result
type for error handling:
match @sw_ini.parse?(content) {
Ok(ini) =>
// Use the INI file
println("Parsed successfully")
Err(e) =>
// Handle parse error
println("Error parsing INI file")
}
fn main {
let content = #|[server]
#|host=localhost
#|port=3000
#|enabled=true
#|
#|[database]
#|url=mysql://localhost/db
// Parse INI content
let ini = @sw_ini.parse!(content)
// Access various values
let host = ini.get(section="server", "host").unwrap()
let port = ini.get(section="server", "port").or("8080")
let enabled = ini.get_bool(section="server", "enabled").unwrap()
// Use values in your application
if enabled {
println("Server running at \{host}:\{port}")
}
}
This project is licensed under the Apache-2.0 License. See LICENSE for details.
- GitHub Issues: Report an issue
👋 If you like this project, give it a ⭐! Happy coding! 🚀