Module: SyntaxTree
- Defined in:
- lib/syntax_tree.rb,
lib/syntax_tree/cli.rb,
lib/syntax_tree/node.rb,
lib/syntax_tree/parser.rb,
lib/syntax_tree/version.rb,
lib/syntax_tree/formatter.rb,
lib/syntax_tree/language_server.rb,
lib/syntax_tree/language_server/inlay_hints.rb
Defined Under Namespace
Modules: AssignFormatting, CLI, ContainsAssignment, HashKeyFormatter, Parentheses, Quotes, RemoveBreaks Classes: ARef, ARefField, Alias, ArgBlock, ArgParen, ArgStar, Args, ArgsForward, ArrayLiteral, AryPtn, Assign, Assoc, AssocSplat, BEGINBlock, Backref, Backtick, BareAssocHash, Begin, Binary, BlockArg, BlockFormatter, BlockVar, BodyStmt, BraceBlock, Break, CHAR, CVar, Call, CallOperatorFormatter, Case, ClassDeclaration, Comma, Command, CommandCall, Comment, ConditionalFormatter, ConditionalModFormatter, Const, ConstPathField, ConstPathRef, ConstRef, Def, DefEndless, Defined, Defs, DoBlock, Dot2, Dot3, DotFormatter, DynaSymbol, ENDBlock, Else, Elsif, EmbDoc, EmbExprBeg, EmbExprEnd, EmbVar, EndContent, Ensure, ExcessedComma, FCall, Field, FloatLiteral, FlowControlFormatter, FndPtn, For, Formatter, GVar, HashLiteral, Heredoc, HeredocBeg, HshPtn, IVar, Ident, If, IfMod, IfOp, Imaginary, In, Int, Kw, KwRestParam, LBrace, LBracket, LParen, Label, LabelEnd, Lambda, LanguageServer, Location, LoopFormatter, MAssign, MLHS, MLHSParen, MRHS, MethodAddBlock, ModuleDeclaration, Next, Node, Not, Op, OpAssign, Params, Paren, Parser, Period, PinnedBegin, PinnedVarRef, Program, QSymbols, QSymbolsBeg, QWords, QWordsBeg, RAssign, RBrace, RBracket, RParen, RationalLiteral, Redo, RegexpBeg, RegexpContent, RegexpEnd, RegexpLiteral, Rescue, RescueEx, RescueMod, RestParam, Retry, Return, Return0, SClass, Statements, StringConcat, StringContent, StringDVar, StringEmbExpr, StringLiteral, Super, SymBeg, SymbolContent, SymbolLiteral, Symbols, SymbolsBeg, TLamBeg, TLambda, TStringBeg, TStringContent, TStringEnd, TopConstField, TopConstRef, Unary, Undef, Unless, UnlessMod, Until, UntilMod, VCall, VarAlias, VarField, VarRef, VoidStmt, When, While, WhileMod, Word, Words, WordsBeg, XString, XStringLiteral, Yield, Yield0, ZSuper
Constant Summary collapse
- HANDLERS =
This holds references to objects that respond to both #parse and #format so that we can use them in the CLI.
{}
- PATTERNS =
The list of nodes that represent patterns inside of pattern matching so that when a pattern is being printed it knows if it’s nested.
[AryPtn, Binary, FndPtn, HshPtn, RAssign]
- VERSION =
"2.0.1"
Class Method Summary collapse
-
.format(source) ⇒ Object
Parses the given source and returns the formatted source.
-
.parse(source) ⇒ Object
Parses the given source and returns the syntax tree.
-
.read(filepath) ⇒ Object
Returns the source from the given filepath taking into account any potential magic encoding comments.
-
.register_handler(extension, handler) ⇒ Object
This is a hook provided so that plugins can register themselves as the handler for a particular file type.
Class Method Details
.format(source) ⇒ Object
Parses the given source and returns the formatted source.
47 48 49 50 51 52 53 |
# File 'lib/syntax_tree.rb', line 47 def self.format(source) formatter = Formatter.new(source, []) parse(source).format(formatter) formatter.flush formatter.output.join end |
.parse(source) ⇒ Object
Parses the given source and returns the syntax tree.
40 41 42 43 44 |
# File 'lib/syntax_tree.rb', line 40 def self.parse(source) parser = Parser.new(source) response = parser.parse response unless parser.error? end |
.read(filepath) ⇒ Object
Returns the source from the given filepath taking into account any potential magic encoding comments.
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/syntax_tree.rb', line 57 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 |
.register_handler(extension, handler) ⇒ Object
This is a hook provided so that plugins can register themselves as the handler for a particular file type.
35 36 37 |
# File 'lib/syntax_tree.rb', line 35 def self.register_handler(extension, handler) HANDLERS[extension] = handler end |