Module: Textbringer::TreeSitter::LanguageAliases

Defined in:
lib/textbringer/tree_sitter/language_aliases.rb

Overview

Centralized language name normalization and alias resolution

Usage:

LanguageAliases.normalize("c-sharp")  #=> "csharp"
LanguageAliases.normalize("c_sharp")  #=> "csharp"
LanguageAliases.normalize("CSharp")   #=> "csharp"

Constant Summary collapse

ALIASES =

Canonical language names mapped to their aliases

{
  "csharp" => ["c-sharp", "c_sharp", "cs"],
  "javascript" => ["js"],
  "typescript" => ["ts"],
  "python" => ["py"],
  "ruby" => ["rb"]
}.freeze
ALIAS_TO_CANONICAL =

Build reverse lookup: alias => canonical name

ALIASES.flat_map { |canonical, aliases|
  aliases.map { |alias_name| [alias_name, canonical] }
}.to_h.freeze

Class Method Summary collapse

Class Method Details

.normalize(language) ⇒ String

Normalize a language name to its canonical form

Examples:

normalize("c-sharp")   #=> "csharp"
normalize("C_Sharp")   #=> "csharp"
normalize(:csharp)     #=> "csharp"
normalize("ruby")      #=> "ruby"

Parameters:

  • language (String, Symbol) —

    Language name (e.g., "c-sharp", "C_Sharp", :csharp)

Returns:

  • (String) —

    Normalized canonical name (e.g., "csharp")



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/textbringer/tree_sitter/language_aliases.rb', line 37

def normalize(language)
  # Convert to string and lowercase
  name = language.to_s.downcase

  # Check exact match with known alias (e.g., "c-sharp", "js", "rb")
  return ALIAS_TO_CANONICAL[name] if ALIAS_TO_CANONICAL.key?(name)

  # Check separator-stripped match (e.g., "CSharp" → "csharp")
  stripped = name.tr("-_", "")
  return ALIAS_TO_CANONICAL[stripped] if ALIAS_TO_CANONICAL.key?(stripped)

  # Not aliased - return original name preserving separators
  # (e.g., "embedded-template" stays "embedded-template")
  name
end

.to_sym(language) ⇒ Symbol

Convert a normalized canonical name to a symbol

Examples:

to_sym("c-sharp")  #=> :csharp
to_sym(:ruby)      #=> :ruby

Parameters:

  • language (String, Symbol) —

    Language name

Returns:

  • (Symbol) —

    Normalized canonical name as symbol



61
62
63
# File 'lib/textbringer/tree_sitter/language_aliases.rb', line 61

def to_sym(language)
  normalize(language).to_sym
end