Retrieve the MDoc related to a MEntity

Introduced properties

private var _fallback: Bool

nitc :: CmdComment :: _fallback

Allow fallback
private var _format: String

nitc :: CmdComment :: _format

Format to render the comment
private var _full_doc: Bool

nitc :: CmdComment :: _full_doc

Retrieve the full documentation
private var _mdoc: nullable MDoc

nitc :: CmdComment :: _mdoc

MDoc to return
init defaultinit(model: Model, filter: nullable ModelFilter, mentity: nullable MEntity, mentity_name: nullable String, fallback: nullable Bool, full_doc: nullable Bool, format: nullable String, mdoc: nullable MDoc)

nitc :: CmdComment :: defaultinit

fun fallback: Bool

nitc :: CmdComment :: fallback

Allow fallback
fun fallback=(fallback: nullable Bool)

nitc :: CmdComment :: fallback=

Allow fallback
fun format: String

nitc :: CmdComment :: format

Format to render the comment
fun format=(format: nullable String)

nitc :: CmdComment :: format=

Format to render the comment
fun full_doc: Bool

nitc :: CmdComment :: full_doc

Retrieve the full documentation
fun full_doc=(full_doc: nullable Bool)

nitc :: CmdComment :: full_doc=

Retrieve the full documentation
fun mdoc: nullable MDoc

nitc :: CmdComment :: mdoc

MDoc to return
fun mdoc=(mdoc: nullable MDoc)

nitc :: CmdComment :: mdoc=

MDoc to return
fun render_comment: nullable Writable

nitc :: CmdComment :: render_comment

Render mdoc depending on full_doc and format

Redefined properties

redef type SELF: CmdComment

nitc $ CmdComment :: SELF

Type of this instance, automatically specialized in every class
redef fun execute(no_color: nullable Bool)

nitc :: term $ CmdComment :: execute

redef fun http_init(req: HttpRequest): CmdMessage

nitc :: commands_http $ CmdComment :: http_init

Init the command from an HTTPRequest
redef fun init_command: CmdMessage

nitc $ CmdComment :: init_command

Same states than CmdEntity::init_mentity
redef fun parser_init(mentity_name: String, options: CmdOptions): CmdMessage

nitc :: commands_parser $ CmdComment :: parser_init

Initialize the command from the CommandParser data
redef fun render_comment: nullable Writable

nitc :: md_commands $ CmdComment :: render_comment

Render mdoc depending on full_doc and format
redef fun render_comment: nullable Writable

nitc :: html_commands $ CmdComment :: render_comment

Render mdoc depending on full_doc and format
redef fun to_html: Writable

nitc :: html_commands $ CmdComment :: to_html

Render results as a HTML string
redef fun to_json: nullable Serializable

nitc :: json_commands $ CmdComment :: to_json

Return a JSON Serializable representation of self results
redef fun to_md: Writable

nitc :: md_commands $ CmdComment :: to_md

Render results as a Markdown string

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
private var _fallback: Bool

nitc :: CmdComment :: _fallback

Allow fallback
private var _filter: nullable ModelFilter

nitc :: DocCommand :: _filter

ModelFilter to apply if any
private var _format: String

nitc :: CmdComment :: _format

Format to render the comment
private var _full_doc: Bool

nitc :: CmdComment :: _full_doc

Retrieve the full documentation
private var _mdoc: nullable MDoc

nitc :: CmdComment :: _mdoc

MDoc to return
private var _mentity: nullable MEntity

nitc :: CmdEntity :: _mentity

MEntity this command is about
private var _mentity_name: nullable String

nitc :: CmdEntity :: _mentity_name

Name of the mentity this command is about
private var _model: Model

nitc :: DocCommand :: _model

Model to retrieve data for
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
fun cmd_filter: ModelFilter

nitc :: DocCommand :: cmd_filter

Return a new filter for that command execution.
init defaultinit(model: Model, filter: nullable ModelFilter, mentity: nullable MEntity, mentity_name: nullable String, fallback: nullable Bool, full_doc: nullable Bool, format: nullable String, mdoc: nullable MDoc)

nitc :: CmdComment :: defaultinit

init defaultinit(model: Model, filter: nullable ModelFilter)

nitc :: DocCommand :: defaultinit

init defaultinit(model: Model, filter: nullable ModelFilter, mentity: nullable MEntity, mentity_name: nullable String)

nitc :: CmdEntity :: defaultinit

abstract fun execute(no_color: nullable Bool)

nitc :: DocCommand :: execute

fun fallback: Bool

nitc :: CmdComment :: fallback

Allow fallback
fun fallback=(fallback: nullable Bool)

nitc :: CmdComment :: fallback=

Allow fallback
fun filter: nullable ModelFilter

nitc :: DocCommand :: filter

ModelFilter to apply if any
protected fun filter=(filter: nullable ModelFilter)

nitc :: DocCommand :: filter=

ModelFilter to apply if any
fun format: String

nitc :: CmdComment :: format

Format to render the comment
fun format=(format: nullable String)

nitc :: CmdComment :: format=

Format to render the comment
fun full_doc: Bool

nitc :: CmdComment :: full_doc

Retrieve the full documentation
fun full_doc=(full_doc: nullable Bool)

nitc :: CmdComment :: full_doc=

Retrieve the full documentation
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
fun http_init(req: HttpRequest): CmdMessage

nitc :: DocCommand :: http_init

Init the command from an HTTPRequest
init init

core :: Object :: init

fun init_command: CmdMessage

nitc :: DocCommand :: init_command

Initialize the command
fun init_mentity: CmdMessage

nitc :: CmdEntity :: init_mentity

Initialize the command mentity.
fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun mdoc: nullable MDoc

nitc :: CmdComment :: mdoc

MDoc to return
fun mdoc=(mdoc: nullable MDoc)

nitc :: CmdComment :: mdoc=

MDoc to return
fun mentity: nullable MEntity

nitc :: CmdEntity :: mentity

MEntity this command is about
fun mentity=(mentity: nullable MEntity)

nitc :: CmdEntity :: mentity=

MEntity this command is about
fun mentity_name: nullable String

nitc :: CmdEntity :: mentity_name

Name of the mentity this command is about
fun mentity_name=(mentity_name: nullable String)

nitc :: CmdEntity :: mentity_name=

Name of the mentity this command is about
fun model: Model

nitc :: DocCommand :: model

Model to retrieve data for
protected fun model=(model: Model)

nitc :: DocCommand :: model=

Model to retrieve data for
private intern fun native_class_name: CString

core :: Object :: native_class_name

The class name of the object in CString format.
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun parser_init(arg: String, options: CmdOptions): CmdMessage

nitc :: DocCommand :: parser_init

Initialize the command from the CommandParser data
fun render_comment: nullable Writable

nitc :: CmdComment :: render_comment

Render mdoc depending on full_doc and format
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
fun to_html: Writable

nitc :: DocCommand :: to_html

Render results as a HTML string
abstract fun to_json: nullable Serializable

nitc :: DocCommand :: to_json

Return a JSON Serializable representation of self results
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_md: Writable

nitc :: DocCommand :: to_md

Render results as a Markdown string
fun to_s: String

core :: Object :: to_s

User readable representation of self.
package_diagram nitc::CmdComment CmdComment nitc::CmdEntity CmdEntity nitc::CmdComment->nitc::CmdEntity nitc::DocCommand DocCommand nitc::CmdEntity->nitc::DocCommand ...nitc::DocCommand ... ...nitc::DocCommand->nitc::DocCommand nitc::CmdSummary CmdSummary nitc::CmdSummary->nitc::CmdComment

Ancestors

abstract class DocCommand

nitc :: DocCommand

Documentation command
interface Object

core :: Object

The root of the class hierarchy.

Parents

class CmdEntity

nitc :: CmdEntity

A command about a MEntity

Children

class CmdSummary

nitc :: CmdSummary

Retrieve the MDoc summary

Class definitions

nitc $ CmdComment
# Retrieve the MDoc related to a MEntity
class CmdComment
	super CmdEntity

	# Allow fallback
	#
	# If `true`, the command uses `mdoc_or_fallback`.
	# Default is `true`.
	var fallback = true is optional, writable

	# Retrieve the full documentation
	#
	# If `true`, retrieves the full documentation.
	# If `false`, retrieves only the synopsis.
	# Default is `true`.
	#
	# Since the rendering the final string (md, html...) depends on the kind of
	# client, the handling of this option is delegated to submodules.
	var full_doc = true is optional, writable

	# Format to render the comment
	#
	# Can be one of `raw`, `html` or `md`.
	# Default is `raw`.
	var format = "raw" is optional, writable

	# MDoc to return
	var mdoc: nullable MDoc = null is optional, writable

	# Same states than `CmdEntity::init_mentity`
	#
	# Plus returns `WarningNoMDoc` if no MDoc was found for the MEntity.
	redef fun init_command do
		var res = super
		if not res isa CmdSuccess then return res
		var mentity = self.mentity.as(not null)

		if mdoc == null then
			mdoc = if fallback then mentity.mdoc_or_fallback else mentity.mdoc
		end
		if mdoc == null then return new WarningNoMDoc(mentity)
		return res
	end

	# Render `mdoc` depending on `full_doc` and `format`
	fun render_comment: nullable Writable do
		var mdoc = self.mdoc
		if mdoc == null then return null

		if full_doc then return mdoc.documentation
		return mdoc.synopsis
	end
end
src/doc/commands/commands_model.nit:23,1--75,3

nitc :: commands_parser $ CmdComment
redef class CmdComment
	redef fun parser_init(mentity_name, options) do
		var opt_full_doc = options.opt_bool("only-synopsis")
		if opt_full_doc != null then full_doc = not opt_full_doc
		var opt_fallback = options.opt_bool("no-fallback")
		if opt_fallback != null then fallback = not opt_fallback
		var opt_format = options.opt_string("format")
		if opt_format != null then format = opt_format
		return super
	end
end
src/doc/commands/commands_parser.nit:303,1--313,3

nitc :: commands_http $ CmdComment
redef class CmdComment
	redef fun http_init(req) do
		var opt_full_doc = req.bool_arg("full_doc")
		if opt_full_doc != null then full_doc = opt_full_doc
		var opt_fallback = req.bool_arg("fallback")
		if opt_fallback != null then fallback = opt_fallback
		var opt_format = req.string_arg("format")
		if opt_format != null then format = opt_format
		return super
	end
end
src/doc/commands/commands_http.nit:109,1--119,3

nitc :: md_commands $ CmdComment
redef class CmdComment
	redef fun to_md do
		var mentity = self.mentity
		if mentity == null then return ""

		var mdoc = self.mdoc
		var tpl = new Template
		tpl.add "### `{mentity}`"
		if mdoc != null then
			tpl.add " - "
			tpl.add mdoc.synopsis
		end
		tpl.add "\n"
		if mdoc != null then
			tpl.add mdoc.comment
		end
		return tpl.write_to_string
	end

	redef fun render_comment do
		var mdoc = self.mdoc
		if mdoc == null then return null

		if format == "md" then
			if full_doc then return mdoc.md_documentation
			return mdoc.md_synopsis
		end
		return super
	end
end
src/doc/templates/md_commands.nit:75,1--104,3

nitc :: json_commands $ CmdComment
redef class CmdComment
	redef fun to_json do
		var obj = new JsonObject
		var render = self.render_comment
		if render != null then
			obj["documentation"] = render.write_to_string
		end
		return obj
	end
end
src/doc/templates/json_commands.nit:66,1--75,3

nitc :: term $ CmdComment
redef class CmdComment
	redef fun execute(no_color) do
		var mentity = self.mentity
		if mentity == null then return

		var full_name = mentity.cs_full_name(no_color)
		if no_color == null or not no_color then
			print "Documentation for `{full_name}`:".bold
		else
			print "Documentation for `{full_name}`:"
		end
		print ""
		print " {mentity.cs_icon(no_color)} {mentity.cs_full_name(no_color)}"
		print "   {mentity.cs_declaration(no_color)}"
		print "   {mentity.cs_location(no_color)}"
		print ""
		var mdoc = self.mdoc
		if mdoc == null then return
		if full_doc then
			print mdoc.cs_comment(no_color, 3)
		else
			print "   {mdoc.cs_short_comment(no_color)}\n"
		end
	end
end
src/doc/term/term.nit:129,1--153,3

nitc :: html_commands $ CmdComment
redef class CmdComment
	redef fun to_html do
		var mentity = self.mentity
		if mentity == null then return ""

		var mdoc = self.mdoc
		var tpl = new Template
		tpl.add "<h3>"
		# FIXME comments left here until I figure out what to do about the presentation options
		# if not opts.has_key("no-link") then
			tpl.add mentity.html_link
		# end
		if mdoc != null then
			# if not opts.has_key("no-link") and not opts.has_key("no-synopsis") then
				tpl.add " - "
			# end
			# if not opts.has_key("no-synopsis") then
				tpl.add mdoc.html_synopsis
			# end
		end
		tpl.add "</h3>"
		if mdoc != null then
			# if not opts.has_key("no-comment") then
				tpl.add mdoc.html_comment
			# end
		end
		return tpl.write_to_string
	end

	redef fun render_comment do
		var mdoc = self.mdoc
		if mdoc == null then return null

		if format == "html" then
			if full_doc then return mdoc.html_documentation
			return mdoc.html_synopsis
		end
		return super
	end
end
src/doc/templates/html_commands.nit:81,1--120,3