class Lookbook::ParamTag
def description
def description tag_args[:description] end
def extract_name(text)
def extract_name(text) parts = text.to_s.split(" ") [parts.shift, parts.join(" ")] end
def initialize(text)
def initialize(text) @name, text_without_name = extract_name(text) @tag_args = parse_tag_body(text_without_name) super("param", tag_args[:rest], nil, @name) end
def input
def input tag_args[:input]&.downcase&.tr("_", "-") end
def parse_tag_body(text)
def parse_tag_body(text) value_type = nil description = nil # Parse out YARD-style value type definition - i.e. [Boolean] text.match(VALUE_TYPE_MATCHER) do |match_data| value_type = match_data[2] text.gsub!(VALUE_TYPE_MATCHER, "").strip! end # Parse and remove any options from string options_str, text = parse_options(text, resolve: false) # Parse description, if provided text.match(DESCRIPTION_MATCHER) do |match_data| description = match_data[1] text.sub!(DESCRIPTION_MATCHER, "").strip! end input, rest = text.split(" ", 2) { input: input, value_type: value_type, description: description, rest: [rest, options_str].compact.join(" ") } end
def value_default
def value_default default_value_parts = object.parameters.find { |parts| parts[0].chomp(":") == name } if default_value_parts host_class_instance.instance_eval(default_value_parts[1]) else raise ParserError.new "Unknown method parameter '#{name}'" end end
def value_type
def value_type tag_args[:value_type]&.downcase end