2

我寻找了 gem 附带的模板(我只能找到默认的 HTML 输出器),我在帮助和在线文档中搜索了一个将重定向到 STDOUT 的开关。我找不到任何关于如何解决这个问题的信息。

有没有一种简单的方法可以做到这一点(也许是一个 shell 命令?)还是我已经浏览了源代码?

4

1 回答 1

4
  • 创建以下文件test.rb

    # This class is cool
    class Test
      # This method is also cool
      def foo
      end
    end
    
  • 必须先编译 yard 文档,然后才能输出它。但是您不想要该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您可以使用该命令获取任何类/方法的 yard 文档。

  • 但是,嘿,输出很糟糕!让我们为它创建一个模板。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输出中可能有太多的前导/尾随新行,您可以使用其他一些标准的 linuxhead/tail命令来解决这个问题。

于 2013-05-28T15:24:30.877 回答