Module: RMTools::CodeReader::Defaults
- Defined in:
- lib/rmtools/dev/code_reader.rb
Constant Summary collapse
- Leftop =
leftop = '\[{(<=>~+\-*,;^&\|'
- Ender =
'\s*\)? *(?:end\b|[\n;})\]])'
- StringParseRE =
/#{heredoc}|#{simple}|[{}]|[^\w#{rightop}'"`\/\\]\?\\?\S/m
- HeredocParseRE =
/\n|#{heredoc}|#{simple}/m
- ArgumentsParseRE =
/#{simple }|(\d[\d.]+|:[@$_a-z]\w*|[@$]\w+) *#{ }|([@$_a-z][:.\w!?]+)([(`"' ] *|:['"]?)?#{ }| *( [:?]\s|=[>~]|[<!>]=|[+\-\|*%,])\s*#{ }|[{}()\[\]\n;,\|]| end\b/m
- StringRE =
/(^['"`]$)|^#{percent}$/
- RERE =
%r{(?:^|[#{leftop}\w!\s/])\s*(/)}
- HeredocRE =
heredoc_handle.to_re
- Symbol =
/^:#{name}$/
- Attrs =
/\s(c)?(?:attr_(reader|writer|accessor))[( ] *((?::\w+ *,\s*)*:\w+)#{Ender}/
- Include =
/\s(include|extend)[( ] *#{mname}/
- AliasMethod =
/\salias_method :#{name} *,\s*:#{name}/
- Beginners =
/(([#{leftop}\n]?\s*)(if|unless|while|until))#{ }|(.)?(?:(do|for)|begin|case)/
- EOF =
/($0\s*==\s*__FILE__\s*|__FILE__\s*==\s*\$0\s*)?\n/
- BlockOpen =
/(?:^\{\s*\||.\{)$/
- Ord =
/^\W\?\\?\S$/
- MainParseRE =
/#{simple }|#{call_}|[{}]#{ }|(^|\n)=begin\b#{ }|^\s*[;\(]? *(#{mod_def}|#{method_def})#{ }|:#{name }|[^\w#{rightop}'"`\/\\]\?\\?\S#{ }|#{heredoc }|(^|[#{leftop}\n])\s*((if|unless)\b|#{ }[;\(]? *#{class_def})#{ }|(^|[\n;])\s*(while|until)\b#{ }|(^|[#{leftop}\s?])(do|case|begin|for)\b#{ }|\s(c)?(?:attr_(reader|writer|accessor))[( ] *((?::\w+ *,\s*)*:\w+)#{Ender }|\salias_method +:#{name} *,\s*:#{name }|\s(include|extend)[( ] *#{mname }|(^|[;\s])(#{alias_def}|end|__END__)\b/m
- ModDef =
mod_def.to_re
- ClassDef =
class_def.to_re
- MethodDef =
method_def.to_re
- AliasDef =
alias_def.to_re
Instance Method Summary collapse
- #Alias(s, m) ⇒ Object
- #Class(s, m) ⇒ Object
- #debug(s) ⇒ Object
- #Method(s, m) ⇒ Object
- #Module(s, m) ⇒ Object
Instance Method Details
#Alias(s, m) ⇒ Object
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/rmtools/dev/code_reader.rb', line 134 def Alias(s, m) debug(s) _stack = clean_stack case _stack.any? && _stack[-1][0] when false, :def, :block return when :singleton prefix = _stack[-1][1] new, old = '.'+m[1], '.'+m[2] else prefix = _stack.lasts*'::' new, old = '#'+m[1], '#'+m[2] end @MethodCache[prefix][new] = @MethodCache[prefix][old] || "def #{new}(*args)\n #{old}(*args)\nend" end |
#Class(s, m) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/rmtools/dev/code_reader.rb', line 78 def Class(s, m) debug(s) _stack = clean_stack if _stack[-1] == [:block] stack << [:beginner] elsif m[1] if m[2] =~ /^[@$]/ stack << [:beginner] elsif _stack.any? and _stack[-1][0] == :def stack << [:beginner] else slf = _stack.lasts*'::' name = m[2].sub 'self.', '' name.sub! 'self', slf name = fix_module_name slf, name stack << [:singleton, name] end else new = clean_stack.lasts*'::' stack << [:class, m[2]] name = fix_module_name new, m[3] if m[3] new << '::' if new.b new << m[2] @MethodCache[new] ||= {} inherit! new, name if m[3] end end |
#debug(s) ⇒ Object
72 73 74 75 76 |
# File 'lib/rmtools/dev/code_reader.rb', line 72 def debug(s) $log.debug(:caller=>1) {"#{s.string[0, s.pos].count("\n")+1}:#{s.head.size + s.matched_size - ((s.head+s.matched).reverse.index("\n") || 0)}"} $log.debug(@stack, :caller=>1) $log.debug(:caller=>1) {Painter.g(s.head+s.matched)} end |
#Method(s, m) ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/rmtools/dev/code_reader.rb', line 112 def Method(s, m) debug(s) _stack = clean_stack(true) if _stack[-1] == [:block] stack << [:beginner] else start = s.pos - s.matched[/[^\n]+$/].size name = m[1].sub(/::([^:.]+)$/, '.\1') name.sub!(/#{_stack.last[1]}\./, 'self.') if _stack.any? if name[/^self\.(.+)/] stack << [:def, "#{_stack.lasts*'::'}.#$1", start] elsif name['.'] and name =~ /^[A-Z]/ mod, name = name/'.' fix_module_name(_stack.lasts*'::', mod) >> '.' >> name stack << [:def, name, start] else prefix = (_stack.any? && _stack[-1][0] == :singleton) ? _stack[-1][1]+'.' : _stack.lasts*'::'+'#' stack << [:def, prefix+name, start] end end end |
#Module(s, m) ⇒ Object
106 107 108 109 110 |
# File 'lib/rmtools/dev/code_reader.rb', line 106 def Module(s, m) debug(s) stack << [:mod, m[1]] @MethodCache[clean_stack.lasts*'::'] = {} end |