# Class: YARD::CLI::Display

Inherits:
  Yardoc
  - Object
  - Command
  - YardoptsCommand
  - Yardoc
  - YARD::CLI::Display
  show all

Defined in:
  lib/yard/cli/display.rb

## Overview

Display one object

Since:

- 0.8.6

## Instance Method Summary collapse

- #description ⇒ Object
- #format_objects ⇒ String

  The output data for all formatted objects.

- #initialize(*args) ⇒ Display constructor

  A new instance of Display.

- #output_options(opts) ⇒ Object
- #parse_arguments(*args) ⇒ Object

  Parses commandline options.

- #run(*args) ⇒ void

  Runs the commandline utility, parsing arguments and displaying an object from the Registry.

- #wrap_layout(contents) ⇒ Object

## Constructor Details

### #initialize(*args) ⇒ `Display`

Returns a new instance of Display.

Since:

- 0.8.6

    9
    10
    11
    12
    13
    14

    # File 'lib/yard/cli/display.rb', line 9

    def initialize(*args)
      super
      options.format = :text # default for this command
      @layout = nil
      @objects = []
    end

## Instance Method Details

### #description ⇒ `Object`

Since:

- 0.8.6

    7

    # File 'lib/yard/cli/display.rb', line 7

    def description; 'Displays a formatted object' end

### #format_objects ⇒ `String`

Returns the output data for all formatted objects.

Returns:

- (`String`) —

  the output data for all formatted objects

Since:

- 0.8.6

    27
    28
    29
    30
    31

    # File 'lib/yard/cli/display.rb', line 27

    def format_objects
      @objects.inject([]) do |arr, obj|
        arr.push obj.format(options)
      end.join("\n")
    end

### #output_options(opts) ⇒ `Object`

Since:

- 0.8.6

    61
    62
    63
    64
    65
    66

    # File 'lib/yard/cli/display.rb', line 61

    def output_options(opts)
      super(opts)
      opts.on('-l', '--layout [LAYOUT]', 'Wraps output in layout template (good for HTML)') do |layout|
        @layout = layout || 'layout'
      end
    end

### #parse_arguments(*args) ⇒ `Object`

Parses commandline options.

Parameters:

- args (`Array<String>`) —

  each tokenized argument

Since:

- 0.8.6

    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59

    # File 'lib/yard/cli/display.rb', line 46

    def parse_arguments(*args)
      opts = OptionParser.new
      opts.banner = "Usage: yard display [options] OBJECT [OTHER OBJECTS]"
      general_options(opts)
      output_options(opts)
      parse_options(opts, args)

      Registry.load
      @objects = args.map {|o| Registry.at(o) }

      # validation
      return false if @objects.any?(&:nil?)
      verify_markup_options
    end

### #run(*args) ⇒ `void`

This method returns an undefined value.

Runs the commandline utility, parsing arguments and displaying an object from the Registry.

Parameters:

- args (`Array<String>`) —

  the list of arguments.

Since:

- 0.8.6

    21
    22
    23
    24

    # File 'lib/yard/cli/display.rb', line 21

    def run(*args)
      return unless parse_arguments(*args)
      log.puts wrap_layout(format_objects)
    end

### #wrap_layout(contents) ⇒ `Object`

Since:

- 0.8.6

    33
    34
    35
    36
    37
    38
    39
    40
    41
    42

    # File 'lib/yard/cli/display.rb', line 33

    def wrap_layout(contents)
      return contents unless @layout
      opts = options.merge(
        :contents => contents,
        :object => @objects.first,
        :objects => @objects
      )
      args = [options.template, @layout, options.format]
      Templates::Engine.template(*args).run(opts)
    end