1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# Recipe for building md4c at specific snapshot
#
# SPDX-FileCopyrightText: 2021 Anderson Torres
# SPDX-FileCopyrightText: 2021 Thomas Gerbet
# SPDX-FileCopyrightText: 2021 Leif Middelschulte
# SPDX-License-Identifier: MIT
#
# SPDX-FileCopyrightText: 2023 Nguyễn Gia Phong
# SPDX-License-Identifier: AGPL-3.0-or-later
{ lib, stdenv, version, fetchFromGitHub, commit, hash, patches
, bcExtractHook, binRenameHook, cmake, pkg-config }:
stdenv.mkDerivation {
pname = "md4c";
inherit version;
src = fetchFromGitHub {
owner = "mity";
repo = "md4c";
rev = commit;
inherit hash;
};
patches = patches ++ [
# We set CMAKE_INSTALL_LIBDIR to the absolute path in $out, so
# prefix and exec_prefix cannot be $out, too
# Use CMake's _FULL_ variables instead of `prefix` concatenation.
./fix-pkgconfig.patch
];
# RPATH of binary [...] contains a forbidden reference to /build/
cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=ON" ];
nativeBuildInputs = [ bcExtractHook binRenameHook cmake pkg-config ];
meta = with lib; {
description = "Markdown parser made in C";
longDescription = ''
MD4C is Markdown parser implementation in C, with the following features:
- Compliance: Generally, MD4C aims to be compliant to the latest version
of CommonMark specification. Currently, we are fully compliant to
CommonMark 0.29.
- Extensions: MD4C supports some commonly requested and accepted
extensions. See below.
- Performance: MD4C is very fast.
- Compactness: MD4C parser is implemented in one source file and one
header file. There are no dependencies other than standard C library.
- Embedding: MD4C parser is easy to reuse in other projects, its API is
very straightforward: There is actually just one function, md_parse().
- Push model: MD4C parses the complete document and calls few callback
functions provided by the application to inform it about a start/end of
every block, a start/end of every span, and with any textual contents.
- Portability: MD4C builds and works on Windows and POSIX-compliant
OSes. (It should be simple to make it run also on most other platforms,
at least as long as the platform provides C standard library, including
a heap memory management.)
- Encoding: MD4C by default expects UTF-8 encoding of the input
document. But it can be compiled to recognize ASCII-only control
characters (i.e. to disable all Unicode-specific code), or (on Windows)
to expect UTF-16 (i.e. what is on Windows commonly called just
"Unicode"). See more details below.
- Permissive license: MD4C is available under the MIT license.
'';
homepage = "https://github.com/mity/md4c";
license = licenses.mit;
platforms = platforms.all;
};
}
|