Module: MetaCommit::Extension::RubySupport::Helpers::ContextualAstAccessor
- Included in:
- Diffs::Diff
- Defined in:
- lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb
Instance Method Summary collapse
- #contextual_ast_has_target_node(ast) ⇒ Object
- #is_in_context_of_class?(ast) ⇒ Boolean
- #is_in_context_of_method?(ast) ⇒ Boolean
- #is_in_context_of_module?(ast) ⇒ Boolean
-
#is_name_of_class?(ast) ⇒ Boolean
on created class only first line goes to diff.
-
#is_name_of_module?(ast) ⇒ Boolean
on created module only first line goes to diff.
- #name_of_context_class(ast) ⇒ Object
- #name_of_context_method(ast) ⇒ Object
- #name_of_context_module(ast) ⇒ Object
- #path_to_component(ast, depth = nil) ⇒ String
Instance Method Details
#contextual_ast_has_target_node(ast) ⇒ Object
75 76 77 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 75 def contextual_ast_has_target_node(ast) !ast.target_node.nil? && !ast.target_node.empty_ast? end |
#is_in_context_of_class?(ast) ⇒ Boolean
59 60 61 62 63 64 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 59 def is_in_context_of_class?(ast) ast.context_nodes.each do |parent| return true if parent.is_class? end false end |
#is_in_context_of_method?(ast) ⇒ Boolean
68 69 70 71 72 73 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 68 def is_in_context_of_method?(ast) ast.context_nodes.each do |parent| return true if parent.is_method? end false end |
#is_in_context_of_module?(ast) ⇒ Boolean
50 51 52 53 54 55 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 50 def is_in_context_of_module?(ast) ast.context_nodes.each do |parent| return true if parent.is_module? end false end |
#is_name_of_class?(ast) ⇒ Boolean
on created class only first line goes to diff
17 18 19 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 17 def is_name_of_class?(ast) (ast.target_node.type == :const) and (ast.context_nodes.length > 1) and (ast.context_nodes[ast.context_nodes.length - 1 - 1].type == :class) end |
#is_name_of_module?(ast) ⇒ Boolean
on created module only first line goes to diff
23 24 25 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 23 def is_name_of_module?(ast) (ast.target_node.type == :const) and (ast.context_nodes.length > 1) and (ast.context_nodes[ast.context_nodes.length - 1 - 1].type == :module) end |
#name_of_context_class(ast) ⇒ Object
35 36 37 38 39 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 35 def name_of_context_class(ast) ast.context_nodes.reverse.each do |parent| return parent.class_name if parent.is_class? end end |
#name_of_context_method(ast) ⇒ Object
42 43 44 45 46 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 42 def name_of_context_method(ast) ast.context_nodes.reverse.each do |parent| return parent.method_name if parent.is_method? end end |
#name_of_context_module(ast) ⇒ Object
28 29 30 31 32 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 28 def name_of_context_module(ast) ast.context_nodes.reverse.each do |parent| return parent.module_name if parent.is_module? end end |
#path_to_component(ast, depth = nil) ⇒ String
6 7 8 9 10 11 12 13 |
# File 'lib/meta_commit_ruby_support/helpers/contextual_ast_accessor.rb', line 6 def path_to_component(ast, depth=nil) depth = -1 if depth.nil? result = [] result.concat([name_of_context_module(ast), is_in_context_of_class?(ast) && depth < 1 ? '::' : '']) if is_in_context_of_module?(ast) && depth < 2 result.concat([name_of_context_class(ast)]) if is_in_context_of_class?(ast) && depth < 1 result.concat(['#', name_of_context_method(ast)]) if is_in_context_of_method?(ast) && depth < 0 result.join('') end |