Sha256: feb7c50e45a02ed2c7ee39eba603f10278329ed23222b54e4942ade06f5b813b

Contents?: true

Size: 1.12 KB

Versions: 4

Compression:

Stored size: 1.12 KB

Contents

require 'yaml'
require 'textpow/syntax'
require 'textpow/debug_processor'
require 'textpow/recording_processor'
require 'textpow/score_manager'
require 'textpow/version'

module Textpow
  class ParsingError < Exception; end

  def self.syntax_path
    File.join(File.dirname(__FILE__), 'textpow', 'syntax')
  end

  @@syntax = {}
  def self.syntax(syntax_name)
    syntax_name = syntax_name.downcase
    if @@syntax.has_key?(syntax_name)
      @@syntax[syntax_name]
    else
      @@syntax[syntax_name] = uncached_syntax(syntax_name)
    end
  end

private

  def self.uncached_syntax(name)
    path = (
      find_syntax_by_path(name) ||
      find_syntax_by_scope_name(name) ||
      find_syntax_by_fuzzy_name(name)
    )
    SyntaxNode.load(path) if path
  end

  def self.find_syntax_by_scope_name(name)
    path = File.join(syntax_path, "#{name}.syntax")
    path if File.exist?(path)
  end

  def self.find_syntax_by_fuzzy_name(name)
    path = Dir.glob(File.join(syntax_path, "*.#{name}.*")).sort_by(&:size).first
    path if path and File.exist?(path)
  end

  def self.find_syntax_by_path(path)
    path if File.exist?(path)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
textpow1x-1.2.3 lib/textpow.rb
textpow1x-1.2.2 lib/textpow.rb
textpow1x-1.2.1 lib/textpow.rb
textpow1x-1.2.0 lib/textpow.rb