Sha256: 6cabde616922605aae6d3863bde3430a838ec8326794ae0407525646cc79f112
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true require_relative 'lexers_db' module Snibbets # Lexer definitions module Lexers class << self def lexers @lexers ||= build_lexers end def build_lexers lex = [] LEXERS_DB.split(/\n/).each do |line| key = line.match(/(?mi)^((, )?[^,]+?)+?(?=\[)/)[0] keys = key.split(/,/).map(&:strip) value = line.match(/\[(.*?)\]/)[1] values = value.split(/,/).map(&:strip) lex << { lexer: keys.shift, aliases: keys, extensions: values } end lex end def ext_to_lang(ext) matches = lexers.select { |lex| lex[:extensions].map(&:downcase).include?(ext.downcase) } matches.map { |lex| lex[:lexer] }.first end def lang_to_ext(lexer) matches = lexers.select { |lex| lex[:lexer] == lexer || lex[:aliases].map(&:downcase).include?(lexer.downcase) } matches.map { |lex| lex[:extensions].first }.first end def syntax_from_extension(filename) ext_to_lang(filename.split(/\./)[1]) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
snibbets-2.0.14 | lib/snibbets/lexers.rb |