Module: StandupMD::Post

Defined in:
lib/standup_md/post.rb,
lib/standup_md/post/result.rb,
lib/standup_md/post/adapter.rb,
lib/standup_md/post/message.rb,
lib/standup_md/post/adapters/slack.rb

Overview

Namespace for posting standup entries to chat clients.

Defined Under Namespace

Modules: Adapters Classes: Adapter, Error, Message, Result, UnknownAdapter

Class Method Summary collapse

Class Method Details

.apply_post_title(text, entry, config) ⇒ String

Applies the configured post title format to the first entry header.

Parameters:

Returns:

  • (String)


76
77
78
79
80
81
82
# File 'lib/standup_md/post.rb', line 76

def apply_post_title(text, entry, config)
  return text unless config.post.title

  title = config.post.title % entry.date.strftime(config.file.header_date_format)
  header = "#" * config.file.header_depth
  text.sub(/\A#{Regexp.escape(header)}\s+.*$/, "#{header} #{title}")
end

.default_renderer(config = StandupMD.config) ⇒ StandupMD::Parsers::Markdown

Default renderer used when posting an entry.

Parameters:

Returns:



51
52
53
# File 'lib/standup_md/post.rb', line 51

def default_renderer(config = StandupMD.config)
  StandupMD::Parsers::Markdown.new(config.file)
end

.post(entry, adapter: nil, channel: nil, text: nil, renderer: nil, config: StandupMD.config) ⇒ StandupMD::Post::Result

Renders and posts a standup entry through a configured chat adapter.

Parameters:

  • entry (StandupMD::Entry)
  • adapter (String, Symbol, nil) (defaults to: nil)
  • channel (String, nil) (defaults to: nil)
  • text (String, nil) (defaults to: nil)
  • renderer (Object, nil) (defaults to: nil)
  • config (StandupMD::Config) (defaults to: StandupMD.config)

Returns:



34
35
36
37
38
39
40
41
42
43
# File 'lib/standup_md/post.rb', line 34

def post(entry, adapter: nil, channel: nil, text: nil, renderer: nil, config: StandupMD.config)
  adapter_name = (adapter || config.post.default_adapter).to_sym
  message = Message.new(
    entry: entry,
    text: text || render_post_text(entry, renderer, config),
    channel: channel,
    adapter: adapter_name
  )
  config.post.build_adapter(adapter_name).post(message)
end

.render_post_text(entry, renderer, config) ⇒ String

Renders text for a posted entry.

Parameters:

Returns:

  • (String)


63
64
65
66
# File 'lib/standup_md/post.rb', line 63

def render_post_text(entry, renderer, config)
  text = (renderer || default_renderer(config)).render_entry(entry)
  apply_post_title(text, entry, config)
end