rootlyhq / SlackMrkdwn

Converts markdown to Slack's internal format 'mrkdwn'

Home Page:https://rubygems.org/gems/slack_mrkdwn

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SlackMrkdwn

Build Status Gem Version

Converts markdown to Slack's message format 'mrkdwn' (See Slack API docs: https://api.slack.com/docs/message-formatting).

Installation

Add the gem to your gemfile: gem 'slack_mrkdwn', then run bundle install.

Or install the gem by running: gem install slack_mrkdwn.

Usage

require 'slack_mrkdwn'

slack_formatted_text = SlackMrkdwn.from('My markdown formatted text')

Note: Requires Ruby version above or equal to v1.9.2 (because it uses Redcarpet to render Markdown).

What is being converted?

It will first encode Slack's restricted characters to HTML entities (<, > and &). Then it will convert:

  • Italics emphasis
  • Strong emphasis
  • Strike-through
  • Headings (to bold text)
  • Codeblocks
  • Single line codeblocks
  • Blockquotes
  • Unordered lists
  • Ordered lists
  • Images
  • Links (Classic-style and reference-style)

It will also strip any trailing whitespace once it's done the conversion.

Contributing

Testing

To run the test suite, execute:

rake test

Integration tests

The test runner reads integration test fixtures from the spec/fixtures directory. To add a new integration test fixture:

  • Add the markdown formatted text content in the spec/fixtures/source directory
  • Add a corresponding expectation fixture in the spec/fixtures/expectation directory

The expectation fixture should have the same name as the source fixture and end with _expectation.

The test runner supports a nested file structure for the fixture directories. For example, adding the source fixture spec/fixtures/source/my_org_name/integration_fixture, would test it against the expectation fixture found in spec/fixtures/expectation/my_org_name/integration_fixture_expecation.

Source fixtures that do not have a corresponding expectation fixture will log a test failure.

Changelog

2.2.1

  • Bumped RedCarpet version due to security vulnerability in version <3.5.1

2.2.0

  • Fixed paragraph and list spacing
  • Added better integration test support

2.1.0

  • Added list support

2.0.0

  • Now using Redcarpet markdown renderer to convert text.

About

Converts markdown to Slack's internal format 'mrkdwn'

https://rubygems.org/gems/slack_mrkdwn


Languages

Language:Ruby 100.0%