2013-05-18 61 views
2

我查找了帶有gem的模板(我只能找到默認的HTML輸出器),我搜索了一個將重定向到STDOUT的開關的幫助和在線文檔。我無法找到任何有關如何處理此問題的信息。如何讓Yardoc輸出到標準輸出?

有沒有一種簡單的方法來做到這一點(也許是一個shell命令?)還是我有通過源代碼?

+0

爲什麼你需要這種功能? – luacassus

+0

您是否試圖避免將文檔寫入磁盤?或者您是否想要在控制檯中查看生成的文檔? – davogones

+0

@davogones我想這樣做,因爲...... @luacassus我正在編寫一個控制檯應用程序,而不是複製文檔,我可以編寫這些代碼,並在調用'help'時輸出某些標記。 – iain

回答

2
  • 創建以下文件作爲test.rb:之前您可以輸出這個

    # This class is cool 
    class Test 
        # This method is also cool 
        def foo 
        end 
    end 
    
  • 必須編譯院子文檔。但是你不想doc文件夾正確嗎?所以讓我們省略一下。

    yardoc --no-output test.rb 
    

    這隻會更新隱藏的.yardoc文件夾內的文檔。 doc文件夾將不會生成。現在

  • 你可以看到在幾個方面爲特定對象的文檔:

    > yard display "Test" 
    # Outputs: 
    ------------------------------------------ Class: Foo < Object 
    
        This class is cool 
    
    
    
    -------------------------------------------------------------- 
    
    > yard display "Test#foo" 
    # Outputs: 
    ------------------------------------------ Method: #meth (Foo) 
                  (Defined in: foo.rb) 
    
        foo.meth -> Object 
    -------------------------------------------------------------- 
    
        This method is cool 
    

    這是你得到的輸出。您可以使用yard display命令獲取任何類別/方法的代碼文檔。

  • 但是,嘿,輸出糟透了!我們來爲它創建一個模板。有幾個文件創建以下文件夾templates

    + your app 
        + templates 
        + default 
         + class 
         | + text 
         | + setup.rb 
         |  def init 
         |   super 
         |   sections T('docstring') 
         |  end 
         + method 
         | + text 
         | + setup.rb 
         |  def init 
         |   super 
         |   sections T('docstring') 
         |  end 
         + method_details 
         | + text 
         | + setup.rb 
         |  def init 
         |   super 
         |   sections T('docstring') 
         |  end 
    

    所有setup.rb文件必須具有相同的內容,如def init, super, sections T('docstring'), end。這將使text輸出只顯示文檔,沒有任何花哨的標題和內容。

  • 現在只需運行相同yard display命令,但讓我們使用自定義模板:

    > yard display Foo --template-path ./templates 
    
    This class is cool 
    
    > yard display "Foo#meth" --template-path ./templates 
    
    This method is cool 
    
  • 就是這樣。你可能發現yard doc可能在輸出中有太多的前導/尾隨新行,你可以使用一些其他標準的linux head/tail命令來解決這個問題。

+0

感謝您花時間回答這個問題。我正在完成一些事情,然後我出去參加一個技術大會(我時常強迫自己到外面去,所以我不會有機會在明天試試這個,但我會讓你知道。非常感激。 – iain

+0

歡迎@iain,並感謝更新相同... – Subhas

+0

這真的很有幫助的答案,我根本不知道'display'命令。如果數據庫只在內存中,那會很好。我實際上已經開始在圖書館進行攻擊,原因不同,所以我會看看我是否可以讓自己的夢想成真!感謝這一點,非常感謝。 – iain