Class: Sourcify::Method::Parser
- Defined in:
- lib/sourcify/lib/sourcify/method/parser.rb,
lib/sourcify/lib/sourcify/method/parser/scanner.rb,
lib/sourcify/lib/sourcify/method/parser/converter.rb,
lib/sourcify/lib/sourcify/method/parser/raw_scanner.rb,
lib/sourcify/lib/sourcify/method/parser/source_code.rb,
lib/sourcify/lib/sourcify/method/parser/raw_scanner_extensions.rb
Overview
:nodoc:all
Defined Under Namespace
Modules: RawScanner Classes: ProbablyDefinedByProc, Scanner
Constant Summary collapse
Instance Method Summary collapse
-
#initialize(_meth) ⇒ Parser
constructor
A new instance of Parser.
- #raw_source(opts) ⇒ Object
- #sexp(opts) ⇒ Object
- #source(opts) ⇒ Object
Constructor Details
#initialize(_meth) ⇒ Parser
Returns a new instance of Parser.
11 12 13 14 15 16 |
# File 'lib/sourcify/lib/sourcify/method/parser.rb', line 11 def initialize(_meth) @parameters, @name = _meth.parameters, _meth.name @source_code = SourceCode.new(*_meth.source_location) raise CannotFindSourceLocationError unless @source_code.file raise CannotParseEvalCodeError if @source_code.file == '(eval)' end |
Instance Method Details
#raw_source(opts) ⇒ Object
18 19 20 21 |
# File 'lib/sourcify/lib/sourcify/method/parser.rb', line 18 def raw_source(opts) raw_source = extracted_source(opts)[0].strip opts[:strip_enclosure] ? strip_raw_enclosure(raw_source) : raw_source end |
#sexp(opts) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/sourcify/lib/sourcify/method/parser.rb', line 27 def sexp(opts) (@sexps ||= {})[opts.hash] ||= ( extracted = extracted_source(opts)[1] raw_code = (("\n" * @source_code.line) + extracted).same_encoding_as(extracted) sexp = Converter.to_sexp(raw_code, @source_code.file) opts[:strip_enclosure] ? Sexp.from_array(sexp.to_a[-1]) : sexp ) end |