Skip to main content

Universal Language Counter - Fast line counting for 119+ programming languages

Project description

NeoAxios Language Counter (NXLC)

A fast, comprehensive programming language line counter supporting 119+ languages with intelligent conflict resolution and git integration.

Features

  • 119+ Programming Languages: From modern languages (Python, JavaScript, Rust) to legacy (COBOL, FORTRAN) and domain-specific (VHDL, MATLAB)
  • Smart Language Detection: Content analysis for ambiguous extensions (.h, .m, .r, .pl)
  • Git Integration: Auto-detects git repositories and respects .gitignore patterns
  • Custom Ignore Files: Support for .nxlcignore to exclude files/directories from counting
  • Cross-Platform: Works on Windows, macOS, and Linux
  • Colored Output: Professional terminal output with color coding
  • Debug Mode: Unknown file analysis and extension reporting
  • Security-First: Input validation and safe file handling

Quick Start

# Count current directory
python3 nxlc.py

# Count specific project with git integration
python3 nxlc.py /path/to/project

# Debug mode to see unknown files
python3 nxlc.py . --debug

# Sort by file count, no colors
python3 nxlc.py . --sort files --no-color

Installation

NXLC is a single-file standalone tool - no installation required!

# Download and run immediately  
wget https://raw.githubusercontent.com/your-org/nxlc/main/nxlc.py
python3 nxlc.py /path/to/analyze

Optional Enhancements

# Better encoding detection (recommended)
pip install chardet

# 400+ language support (requires Ruby)
gem install github-linguist
python3 nxlc.py --comprehensive

See INSTALL.md for detailed installation options.

Usage

usage: nxlc.py [-h] [--git] [--no-git] [--depth N] [--sort {lines,files,name}]
              [--verbose] [--comprehensive] [--linguist-path PATH]
              [--no-color] [--debug] [--version]
              [directory]

Universal Language Counter - Count lines of code across 119+ programming languages

positional arguments:
  directory             Directory to analyze (default: current directory)

options:
  -h, --help            show this help message and exit
  --git                 Force respect .gitignore patterns (auto-detected in git repos)
  --no-git              Disable git integration (ignore .gitignore even in git repos)
  --depth N             Maximum directory depth to traverse
  --sort {lines,files,name}
                        Sort results by lines (default), files, or name
  --verbose, -v         Verbose output showing each file processed
  --comprehensive       Use comprehensive mode with GitHub Linguist (400+ languages)
  --linguist-path PATH  Path to github-linguist executable
  --no-color            Disable colored output
  --debug               Enable debug mode (show unknown files and extension analysis)
  --version             show program's version number and exit

Examples

Basic Usage

# Count lines in current directory
python3 nxlc.py

# Count specific directory
python3 nxlc.py /path/to/project

# Limit directory traversal depth
python3 nxlc.py . --depth 3

Git Integration

# Auto-detects git repos and respects .gitignore
python3 nxlc.py /path/to/git/repo

# Force git mode even outside repos
python3 nxlc.py . --git

# Disable git integration completely
python3 nxlc.py . --no-git

Ignore Files with .nxlcignore

NXLC supports a .nxlcignore file to exclude specific files and directories from counting. This works independently of git and is useful for:

  • Non-git repositories
  • Additional exclusions beyond .gitignore
  • Temporary exclusions during development

Create a .nxlcignore file in your project root:

# Example .nxlcignore
node_modules/
dist/
*.min.js
test_data/
*.generated.*

See .nxlcignore.example for a comprehensive template.

Output Customization

# Sort by file count instead of lines
python3 nxlc.py . --sort files

# Sort alphabetically by language
python3 nxlc.py . --sort name

# Disable colored output for scripts
python3 nxlc.py . --no-color

# Verbose mode shows each file processed
python3 nxlc.py . --verbose

Advanced Features

# Debug mode shows unknown file extensions
python3 nxlc.py . --debug

# Comprehensive mode with GitHub Linguist
python3 nxlc.py . --comprehensive

# Custom linguist path
python3 nxlc.py . --comprehensive --linguist-path /custom/path/linguist

Platform Compatibility

Platform Environment 119+ Native Languages GitHub Linguist (400+) Status
Linux WSL2 (Ubuntu 24.04) โœ… Validated ๐Ÿ”„ Not tested โœ… Validated
Linux Native Ubuntu 22.04+ ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Linux RHEL/CentOS 8+ ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Linux Debian 11+ ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
macOS macOS 12+ (Intel) ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
macOS macOS 14+ (Apple Silicon) ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Windows Windows 10/11 (native) ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Windows Git Bash ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Windows PowerShell 7 ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Docker Alpine Linux ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Docker Ubuntu based ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Cloud GitHub Codespaces ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
Cloud GitLab CI/CD ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending
BSD FreeBSD 13+ ๐Ÿ”„ Not tested ๐Ÿ”„ Not tested ๐Ÿ”„ Pending

Notes:

  • Native language support: 119+ languages without external dependencies
  • GitHub Linguist integration: Optional, adds 400+ languages (requires Ruby)
  • Python requirement: 3.8+ (tested with 3.12)

Supported Languages

Modern Languages (Web, Mobile, Systems)

Python, JavaScript, TypeScript, Vue, Svelte, Java, C, C++, C#, Go, Rust, Ruby, PHP, Swift, Kotlin, Scala, Dart, R, Julia

Shell & Scripting

Shell (bash, zsh, fish), PowerShell, Perl, Lua

Data & Config

SQL, HTML, CSS, Markdown, YAML, JSON, XML, TOML, INI, Properties

Legacy Systems

COBOL, FORTRAN, Pascal, Ada, Assembly, BASIC, Visual Basic

Domain-Specific

VHDL, Verilog, MATLAB, Mathematica, SAS, SPSS, AutoLISP, OpenSCAD

And 80+ more languages...

Sample Output

Universal Language Counter Results:
--------------------------------------------------------------------------------
Language             Files    Total      Code       Comments   %     
--------------------------------------------------------------------------------
Total                156      45,234     38,891     4,829      100.0%
--------------------------------------------------------------------------------
Python               89       28,456     25,123     2,891      62.9 %
JavaScript           23       8,234      7,456      623        18.2 %
Markdown             18       4,891      4,201      0          10.8 %
JSON                 12       2,134      2,134      0          4.7  %
Shell                8        891        634        89         2.0  %
YAML                 6        628        567        226        1.4  %
--------------------------------------------------------------------------------
Directory: /path/to/project (git repository - respecting .gitignore)

Language Detection Features

Smart Conflict Resolution

  • .h files: Distinguishes C, C++, and Objective-C by content analysis
  • .m files: Separates MATLAB from Objective-C based on syntax patterns
  • .r files: Identifies R vs Rebol using language-specific keywords
  • .pl files: Differentiates Perl from Prolog through code analysis

Special File Handling

  • Makefiles: Recognizes various Makefile variants
  • Dockerfiles: Detects Dockerfile patterns
  • READMEs: Identifies documentation files
  • Git config: Classifies .gitignore, .gitattributes as configuration
  • Shebang detection: Analyzes #!/usr/bin/env headers for extensionless scripts

Architecture

Thread-Safe Design

  • Instance-based color management
  • Thread-safe linguist integration
  • Concurrent-safe file processing

Security Features

  • Input validation for external tool paths
  • Command injection prevention
  • Safe file encoding detection
  • Path traversal protection

Performance Optimizations

  • Symlink cycle detection
  • Binary file filtering
  • Efficient directory traversal
  • Configurable depth limits

Requirements

  • Python 3.6+ (required)
  • chardet (optional, recommended for encoding detection)
  • github-linguist (optional, for 400+ language support)

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT License - see LICENSE file for details.

Version History

  • v1.0.0 - Initial release with 119+ language support
    • Smart conflict resolution
    • Git integration
    • Cross-platform support
    • Thread-safe architecture
    • Security hardening

Universal Language Counter - Professional code analysis made simple.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nxlc-0.1.1.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nxlc-0.1.1-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file nxlc-0.1.1.tar.gz.

File metadata

  • Download URL: nxlc-0.1.1.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.6

File hashes

Hashes for nxlc-0.1.1.tar.gz
Algorithm Hash digest
SHA256 fe61c9570d511ecb471b521e8b0ab63bf6a89872e81d639db4a51e4ef67c7398
MD5 4a00f4645f521a2ef5eac58977391ba8
BLAKE2b-256 49ff156b331afed54d81378d98da82b237f133cde3da5b24b03e2b5d3a8ee55c

See more details on using hashes here.

File details

Details for the file nxlc-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: nxlc-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.6

File hashes

Hashes for nxlc-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 77e2e814edcde8b982d2e00d2eaa555e9b18891ac5446b2a367080971b3cb875
MD5 441765a03d009d399c293743de04f0bc
BLAKE2b-256 c6e7ba8df48ebb34bad1f29e8f13f98ef91c8207ad7db81fbc86c43a30417ca3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page