From 4fcec11a848deca8a5134beb92569e558ff290da Mon Sep 17 00:00:00 2001 From: Andrey Helldar Date: Wed, 1 Mar 2023 11:45:36 +0300 Subject: [PATCH] Added blobs parser --- README.md | 2 +- index.html | 14 ++++++++++++++ src/node/plugins/transformers/blobs.ts | 22 ++++++++++++++++++++++ src/node/plugins/transformers/index.ts | 3 +++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/node/plugins/transformers/blobs.ts diff --git a/README.md b/README.md index 1b85ff4..8f803a2 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ import { githubLinkifyPlugin } from 'vuepress-plugin-github-linkify' * [x] compares * [x] tags * [x] trees -* [ ] blobs +* [x] blobs ## Example diff --git a/index.html b/index.html index 0222373..0f86407 100644 --- a/index.html +++ b/index.html @@ -56,6 +56,13 @@
  • https://github.com/Laravel-Lang/common/tree/v1.0.13
  • + +

    **Full Changelog**: https://github.com/Laravel-Lang/common/compare/12.18.3...12.8.4

    **Full Changelog**: 12.18.3...12.8.4

    @@ -104,6 +111,13 @@
  • https://github.com/Laravel-Lang/lang/tree/v1.0.13
  • + +

    **Full Changelog**: https://github.com/Laravel-Lang/lang/compare/12.18.3...12.8.4

    **Full Changelog**: 12.18.3...12.8.4

    diff --git a/src/node/plugins/transformers/blobs.ts b/src/node/plugins/transformers/blobs.ts new file mode 100644 index 0000000..bf42664 --- /dev/null +++ b/src/node/plugins/transformers/blobs.ts @@ -0,0 +1,22 @@ +import type { GitHubLinkifyTransformer } from '../../types/transformer.js' +import { replace } from '../helpers.js' +import { template } from '../template.js' +import { regex } from '../regex' +import { url } from '../url' + +export const blobsCompact: GitHubLinkifyTransformer = (text: string, repo: string) => { + const replacer = (value, item) => replace(value, item, template('blob', `${ item[1] }/${ item[2] }`, item[3])) + + text = regex(text, /\[[\w\d\s`]+]\(https:\/\/github\.com\/([\w\d\-_]+)\/([\w\d\-_]+)\/blob\/([\w\d\/\.\-_]+)\)/g, replacer) + text = regex(text, /https:\/\/github\.com\/([\w\d\-_]+)\/([\w\d\-_]+)\/blob\/([\w\d\/\.\-_]+)/g, replacer) + + return text +} + +export const blobsExpand: GitHubLinkifyTransformer = (text: string, repo: string) => { + const replacer = (value, item) => value.replace(item[0], url(repo, `${ item[1].includes(repo) ? '' : item[1] + '#' }${ item[2] }`, `${ item[1] }/blob/${ item[2] }`)) + + text = regex(text, /::blob::([\w\d\-_\/]+)::([\w\d\/\.\-_]+)::/g, replacer) + + return text +} diff --git a/src/node/plugins/transformers/index.ts b/src/node/plugins/transformers/index.ts index 80c7237..b22ae7d 100644 --- a/src/node/plugins/transformers/index.ts +++ b/src/node/plugins/transformers/index.ts @@ -6,6 +6,7 @@ import { compareCompact, compareExpand } from './compare.js' import { commitCompact, commitExpand } from './commit.js' import { tagsCompact, tagsExpand } from './tags.js' import { treesCompact, treesExpand } from './trees.js' +import { blobsCompact, blobsExpand } from './blobs.js' const compact = [ mentionCompact, @@ -13,6 +14,7 @@ const compact = [ compareCompact, commitCompact, treesCompact, + blobsCompact, tagsCompact ] @@ -22,6 +24,7 @@ const expand = [ compareExpand, commitExpand, treesExpand, + blobsExpand, tagsExpand ]