Sha256: 08f161a2876136eb3bf77f4025eb79d7f2da9dfd65d10054e81d2b7af1931443

Contents?: true

Size: 1.32 KB

Versions: 8

Compression:

Stored size: 1.32 KB

Contents

module Brief::Util
  def self.split_doc_content(raw_content)
    if raw_content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
      content = raw_content[(Regexp.last_match[1].size + Regexp.last_match[2].size)..-1]
      frontmatter = YAML.load(Regexp.last_match[1]).to_mash
      [content, frontmatter]
    else
      [nil, {}.to_mash]
    end
  end

  def self.create_method_dispatcher_command_for(action, klass)
    identifier = "#{ action } #{ klass.type_alias.to_s.pluralize }"

    Object.class.class_eval do
      command "#{identifier}" do |c|
        c.syntax = "brief #{identifier}"
        c.description = "run the #{identifier} command"

        c.action do |args, _opts|
          briefcase = Brief.case

          path_args = args.select { |arg| arg.is_a?(String) && arg.match(/\.md$/) }

          path_args.select! do |arg|
            path = briefcase.repository.root.join(arg)
            path.exist?
          end

          path_args.map! { |p| briefcase.repository.root.join(p) }

          models = path_args.map { |path| Brief::Document.new(path) }.map(&:to_model)

          if models.empty?
            model_finder = c.name.to_s.split(' ').last
            models = briefcase.send(model_finder)
          end

          models.each do |model|
            model.send(action)
          end
        end
      end rescue nil
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
brief-1.7.2 lib/brief/util.rb
brief-1.7.1 lib/brief/util.rb
brief-1.7.0 lib/brief/util.rb
brief-1.6.1 lib/brief/util.rb
brief-1.6.0 lib/brief/util.rb
brief-1.5.2 lib/brief/util.rb
brief-1.5.1 lib/brief/util.rb
brief-1.5.0 lib/brief/util.rb