mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Add documentation
This commit is contained in:
parent
437584f9db
commit
749c53527e
6 changed files with 21 additions and 1 deletions
|
@ -54,6 +54,7 @@ class Ameba::Config
|
|||
# ```
|
||||
property excluded : Array(String)
|
||||
|
||||
# Returns true if correctable issues should be autocorrected.
|
||||
property? autocorrect = false
|
||||
|
||||
@rule_groups : Hash(String, Array(Rule::Base))
|
||||
|
|
|
@ -50,6 +50,7 @@ module Ameba
|
|||
# Checks for unneeded disable directives. Always inspects a source last
|
||||
@unneeded_disable_directive_rule : Rule::Base?
|
||||
|
||||
# Returns true if correctable issues should be autocorrected.
|
||||
private getter? autocorrect : Bool
|
||||
|
||||
# Instantiates a runner using a `config`.
|
||||
|
|
|
@ -25,6 +25,8 @@ module Ameba
|
|||
def initialize(@code, @path = "")
|
||||
end
|
||||
|
||||
# Corrects any correctable issues and updates `code`.
|
||||
# Returns `false` if no issues were corrected.
|
||||
def correct
|
||||
corrector = Corrector.new(code)
|
||||
issues.each(&.correct(corrector))
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
require "./rewriter"
|
||||
|
||||
class Ameba::Source
|
||||
# This class takes source code and rewrites it based
|
||||
# on the different correction actions supplied.
|
||||
class Corrector
|
||||
@line_sizes : Array(Int32)
|
||||
|
||||
|
@ -9,30 +11,37 @@ class Ameba::Source
|
|||
@line_sizes = code.lines(chomp: false).map(&.size)
|
||||
end
|
||||
|
||||
# Replaces the code of the given range with *content*.
|
||||
def replace(location, end_location, content)
|
||||
@rewriter.replace(loc_to_pos(location), loc_to_pos(end_location) + 1, content)
|
||||
end
|
||||
|
||||
# Inserts the given strings before and after the given range.
|
||||
def wrap(location, end_location, insert_before, insert_after)
|
||||
@rewriter.wrap(loc_to_pos(location), loc_to_pos(end_location) + 1, insert_before, insert_after)
|
||||
end
|
||||
|
||||
# Shortcut for `replace(location, end_location, "")`
|
||||
def remove(location, end_location)
|
||||
@rewriter.remove(loc_to_pos(location), loc_to_pos(end_location) + 1)
|
||||
end
|
||||
|
||||
# Shortcut for `wrap(location, end_location, content, nil)`
|
||||
def insert_before(location, end_location, content)
|
||||
@rewriter.insert_before(loc_to_pos(location), loc_to_pos(end_location) + 1, content)
|
||||
end
|
||||
|
||||
# Shortcut for `wrap(location, end_location, nil, content)`
|
||||
def insert_after(location, end_location, content)
|
||||
@rewriter.insert_after(loc_to_pos(location), loc_to_pos(end_location) + 1, content)
|
||||
end
|
||||
|
||||
# Shortcut for `insert_before(location, location, content)`
|
||||
def insert_before(location, content)
|
||||
@rewriter.insert_before(loc_to_pos(location), content)
|
||||
end
|
||||
|
||||
# Shortcut for `insert_after(location, location, content)`
|
||||
def insert_after(location, content)
|
||||
@rewriter.insert_after(loc_to_pos(location) + 1, content)
|
||||
end
|
||||
|
@ -46,22 +55,27 @@ class Ameba::Source
|
|||
@line_sizes[0...line - 1].sum + (column - 1)
|
||||
end
|
||||
|
||||
# Replaces the code of the given node with *content*.
|
||||
def replace(node : Crystal::ASTNode, content)
|
||||
replace(location(node), end_location(node), content)
|
||||
end
|
||||
|
||||
# Inserts the given strings before and after the given node.
|
||||
def wrap(node : Crystal::ASTNode, insert_before, insert_after)
|
||||
wrap(location(node), end_location(node), insert_before, insert_after)
|
||||
end
|
||||
|
||||
# Shortcut for `replace(node, "")`
|
||||
def remove(node : Crystal::ASTNode)
|
||||
remove(location(node), end_location(node))
|
||||
end
|
||||
|
||||
# Shortcut for `wrap(node, content, nil)`
|
||||
def insert_before(node : Crystal::ASTNode, content)
|
||||
insert_before(location(node), content)
|
||||
end
|
||||
|
||||
# Shortcut for `wrap(node, nil, content)`
|
||||
def insert_after(node : Crystal::ASTNode, content)
|
||||
insert_after(end_location(node), content)
|
||||
end
|
||||
|
@ -74,6 +88,7 @@ class Ameba::Source
|
|||
node.end_location || raise "Missing end location"
|
||||
end
|
||||
|
||||
# Applies all scheduled changes and returns modified source as a new string.
|
||||
def process
|
||||
@rewriter.process
|
||||
end
|
||||
|
|
|
@ -70,7 +70,7 @@ class Ameba::Source
|
|||
@action_root.empty?
|
||||
end
|
||||
|
||||
# Replaces the code of the given range with `content`.
|
||||
# Replaces the code of the given range with *content*.
|
||||
def replace(begin_pos, end_pos, content)
|
||||
combine(begin_pos, end_pos, replacement: content.to_s)
|
||||
end
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
class Ameba::Source::Rewriter
|
||||
# :nodoc:
|
||||
# Actions are arranged in a tree and get combined so that:
|
||||
# - children are strictly contained by their parent
|
||||
# - siblings all disjoint from one another and ordered
|
||||
|
|
Loading…
Reference in a new issue