1.3.3 • Published 4 months ago

@puregram/markup v1.3.3

Weekly downloads
-
License
WTFPL
Repository
github
Last release
4 months ago

@puregram/markup

simple yet powerful markup system for puregram package

introduction

you all know how you need to provide parse_mode every time you send a message with a markdown or html, right? it might get a little boring after first few hundreds of times, so i present to you @puregram/markup!

example

const { format, bold, italic, code, hooks: formatHooks } = require('@puregram/markup')

const { Telegram } = require('puregram')

const telegram = Telegram.fromToken(process.env.TOKEN)

// we use hooks for this one
telegram.useHooks(formatHooks())

telegram.updates.on('message', (context) => {
  return context.send(
    format`hey! this ${bold('message')} is ${italic('formatted')} without ${code('parse_mode')}!`
  )
})

telegram.updates.startPolling()

installation

$ yarn add @puregram/markup
$ npm i -S @puregram/markup

usage

all of the functions except those that require two or more arguments can be called either via template strings or like basic functions

// template strings
bold`foo ${italic`bar`}`

// parentheses
bold(italic('bar'))

there's literally no distinction between them, however if you are going to do embedded markup, you should use template strings:

// ✅ works
bold`foo ${italic`bar`}`
bold`${italic`bar`}`
bold(italic('bar'))

// ❌ does not work
bold(`foo ${italic('bar')}`)
bold(`${italic('foo')}`)

the last one does not work simply because javascript compiles foo ${italic('bar')} into a single string which becomes 'foo object Object' soo yeah


available functions

format(strings: TemplateStringsArray, ...rest: Rest)

formats the template and strips first pack of spaces from all lines (stripIndent-like)

format`
  hello!
  those two spaces at the start will be stripped
    but those additional two spaces wont
`

formatDedent(strings: TemplateStringsArray, ...rest: Rest)

this one acts like format except it... ugh just roll the credits code example

format`
  hello!
  those two spaces at the start will be stripped
    those additional two will also be stripped
                      and those additional 18 spaces too!
`

(stripIndents-like)

bold(text: string)

bold('hey!')
bold`hey!`

italic(text: string)

italic('hey!')
italic`hey!`

code(code: string)

code('const x = 5')
code`const x = 5`

underline(text: string)

underline('hey!')
underline`hey!`

strikethrough(text: string)

strikethrough('hey!')
strikethrough`hey!`

spoiler(text: string)

spoiler('hey!')
spoiler`hey!`

mention(text: string)

mention('@username')
mention`@username`

pre(text: string, language?: string)

pre('im cool')
pre('im cool but in bash', 'sh')

link(text: string, url: string)

link('epic!', 'https://github.puregram.cool')

mentionUser(text: string, userId: number)

mentionUser('dude', 398859857)

mentionBot(text: string, userId: number)

mentionUser('robodude', telegram.bot.id)

textMention(text: string, user: Interfaces.TelegramUser)

mentionUser('dude', { id: 398859857, is_bot: false, first_name: 'dude' })

customEmoji(text: string, id: string)

customEmoji('😁', '...')
1.3.3

4 months ago

1.3.2

4 months ago

1.3.1

4 months ago

1.3.0

4 months ago

1.2.0

4 months ago

1.1.2

6 months ago

1.1.1

6 months ago

1.1.0

6 months ago

1.0.0

6 months ago