Sha256: 7ac8881405988ce7762ae0c6a2a2bf3cc0689ada5ec99b8d65b5002777f7facb
Contents?: true
Size: 1.96 KB
Versions: 5
Compression:
Stored size: 1.96 KB
Contents
# frozen_string_literal: true require "json" require "pp" require "prettyprint" require "ripper" require "stringio" require_relative "syntax_tree/formatter" require_relative "syntax_tree/node" require_relative "syntax_tree/parser" require_relative "syntax_tree/version" require_relative "syntax_tree/visitor" require_relative "syntax_tree/visitor/json_visitor" require_relative "syntax_tree/visitor/pretty_print_visitor" # If PrettyPrint::Align isn't defined, then we haven't gotten the updated # version of prettyprint. In that case we'll define our own. This is going to # overwrite a bunch of methods, so silencing them as well. unless PrettyPrint.const_defined?(:Align) verbose = $VERBOSE $VERBOSE = nil begin require_relative "syntax_tree/prettyprint" ensure $VERBOSE = verbose end end module SyntaxTree # This holds references to objects that respond to both #parse and #format # so that we can use them in the CLI. HANDLERS = {} HANDLERS.default = SyntaxTree # This is a hook provided so that plugins can register themselves as the # handler for a particular file type. def self.register_handler(extension, handler) HANDLERS[extension] = handler end # Parses the given source and returns the syntax tree. def self.parse(source) parser = Parser.new(source) response = parser.parse response unless parser.error? end # Parses the given source and returns the formatted source. def self.format(source) formatter = Formatter.new(source, []) parse(source).format(formatter) formatter.flush formatter.output.join end # Returns the source from the given filepath taking into account any potential # magic encoding comments. def self.read(filepath) encoding = File.open(filepath, "r") do |file| header = file.readline header += file.readline if header.start_with?("#!") Ripper.new(header).tap(&:parse).encoding end File.read(filepath, encoding: encoding) end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
syntax_tree-2.3.1 | lib/syntax_tree.rb |
syntax_tree-2.3.0 | lib/syntax_tree.rb |
syntax_tree-2.2.0 | lib/syntax_tree.rb |
syntax_tree-2.1.1 | lib/syntax_tree.rb |
syntax_tree-2.1.0 | lib/syntax_tree.rb |