11
A
回答
9
您可以使用實現to_ruby方法的Ruby2Ruby完成此操作。
require 'rubygems'
require 'parse_tree'
require 'parse_tree_extensions'
require 'ruby2ruby'
def meth &block
puts block.to_ruby
end
meth { some code }
將輸出:
"proc { some(code) }"
我也想看看通過Github上的克里斯Wanstrath爲此這真棒談話http://goruco2008.confreaks.com/03_wanstrath.html他展示了一些有趣的ruby2ruby和分析樹使用的例子。
2
在Ruby 1.9中,你可以試試這個從源文件中提取代碼的gem。
3
上Evangenieur的回答大廈,這裏的古爾邦節的答案,如果你有紅寶石1.9:
# Works with Ruby 1.9
require 'sourcify'
def meth &block
# Note it's to_source, not to_ruby
puts block.to_source
end
meth { some code }
我公司使用它來顯示用來做碳計算的Ruby代碼......我們使用了分析樹與Ruby 1.8和現在sourcify with Ruby 1.9。
2
在Ruby 1.9+(與2.1.2測試),你可以使用https://github.com/banister/method_source
打印出源通過block#source
:
#! /usr/bin/ruby
require 'rubygems'
require 'method_source'
def wait &block
puts "Running the following code: #{block.source}"
puts "Result: #{yield}"
puts "Done"
end
def run!
x = 6
wait { x == 5 }
wait { x == 6 }
end
run!
注意,爲了使源讀取你需要使用一個文件並執行該文件(從irb測試它將導致以下錯誤:MethodSource::SourceNotFoundError: Could not load source for : No such file or directory @ rb_sysopen - (irb)
相關問題
- 1. 打印塊的實際Ruby代碼?
- 2. 我可以讓ruby打印動態方法的源代碼嗎?
- 3. Java-打印導入類的源代碼
- 4. 打印其源代碼的Python腳本
- 5. 打印源代碼演進的時間
- 6. 執行期間打印ruby代碼
- 7. 如何檢查打印源代碼
- 8. 如何打印Rails源代碼?
- 9. 在Windows上打印源代碼
- 10. 如何打印源代碼Vue.js
- 11. 從HtmlAgilityPack打印網頁源代碼
- 12. 代碼塊不打印特定格式
- 13. Drupal打印模塊 - 忽略打印代碼
- 14. Ruby on Rails的 - 在視圖文件Ruby代碼獲取打印
- 15. 打印PHP代碼
- 16. PHP打印代碼(打印成紙)
- 17. 的Android HTML代碼打印
- 18. 打印的分頁代碼
- 19. 代碼打印的票據
- 20. Python模塊的源代碼
- 21. 如何將原始打印機代碼從ruby寫入Windows打印機共享?
- 22. 如何打印語法高亮的Ruby代碼?
- 23. 將Ruby代碼打破HTML
- 24. 注入Ruby代碼到塊中塊
- 25. 打印自己的源代碼的Java應用程序
- 26. XmlTextWriter的C#打印也頁面的HTML源代碼
- 27. 打印腳本代碼
- 28. ArrayList打印複製代碼
- 29. 打印陣列爲代碼
- 30. 代碼保持打印空
這隻適用於Ruby 1.8嗎?http://blog.zenspider.com/2009/04/parsetree-eol .html討論了「丟棄塊/ proc支持」來處理Parse樹沒有在紅寶石1.9可用。 – 2009-11-04 22:21:19
不,這不會在Ruby 1.9中工作,因爲它不提供ParseTree工作所需的鉤子。顯然現在有1.9的性別。這不是一個巨大的問題,因爲到了每個人轉換到1.9的其他vms時,rubinius應該在黃金時段可用。 Rubinius原生包含了一個to_sexp用於所有對象,因此執行這些操作很簡單。 – 2009-11-05 04:01:34