Module: BitClust::RbsSignatures
- Included in:
- RDCompiler
- Defined in:
- lib/bitclust/rbs_signatures.rb
Instance Method Summary collapse
-
#prepare_rbs_signatures(entry, source) ⇒ Object
compile_method 冒頭で呼ぶ。rbs_sig property があれば、source の シグネチャ行からチャンク列を作りオーバーロードを振り分けておく.
-
#rbs_signature_dts_for_chunk ⇒ Object
現在のチャンクに割り当てられたオーバーロードの
- 行(改行連結)を 返し、チャンクカウンタを進める。メソッド以外のコンパイル (prepare が呼ばれていない)や割り当てが無いチャンクでは nil.
-
#reset_rbs_signatures ⇒ Object
振り分け状態はメソッドのコンパイル専用(compile_method が prepare_rbs_signatures で作り直す)なので、他のコンパイルへ 持ち越さないよう setup(全コンパイル共通)からリセットする.
Instance Method Details
#prepare_rbs_signatures(entry, source) ⇒ Object
compile_method 冒頭で呼ぶ。rbs_sig property があれば、source の シグネチャ行からチャンク列を作りオーバーロードを振り分けておく
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/bitclust/rbs_signatures.rb', line 37 def prepare_rbs_signatures(entry, source) reset_rbs_signatures overloads = entry.rbs_signature_overloads return unless overloads chunks = rbs_scan_signature_chunks(source) if chunks.empty? no_signatures = [] #: Array[String] chunks = [no_signatures] end assignment = RbsOverloadMatcher.assign(overloads, chunks) @rbs_sig_by_chunk = assignment.map {|indexes| indexes.filter_map {|i| overloads[i]['segments'] } } end |
#rbs_signature_dts_for_chunk ⇒ Object
現在のチャンクに割り当てられたオーバーロードの
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/bitclust/rbs_signatures.rb', line 55 def rbs_signature_dts_for_chunk by_chunk = @rbs_sig_by_chunk return nil unless by_chunk lines = by_chunk[@rbs_chunk_index] @rbs_chunk_index += 1 return nil unless lines && !lines.empty? lines.map {|line| html = line.map {|kind, text| rbs_segment_html(kind, text) }.join %Q(<dt class="rbs-signature"><code>#{html}</code></dt>) }.join("\n") end |
#reset_rbs_signatures ⇒ Object
振り分け状態はメソッドのコンパイル専用(compile_method が prepare_rbs_signatures で作り直す)なので、他のコンパイルへ 持ち越さないよう setup(全コンパイル共通)からリセットする
30 31 32 33 |
# File 'lib/bitclust/rbs_signatures.rb', line 30 def reset_rbs_signatures @rbs_sig_by_chunk = nil @rbs_chunk_index = 0 end |