typst 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Cargo.toml +3 -0
- data/README.md +80 -0
- data/README.typ +83 -0
- data/Rakefile +24 -0
- data/ext/typst/Cargo.lock +2840 -0
- data/ext/typst/Cargo.toml +39 -0
- data/ext/typst/extconf.rb +4 -0
- data/ext/typst/src/compiler.rs +187 -0
- data/ext/typst/src/download.rs +79 -0
- data/ext/typst/src/fonts.rs +86 -0
- data/ext/typst/src/lib.rs +133 -0
- data/ext/typst/src/package.rs +64 -0
- data/ext/typst/src/world.rs +357 -0
- data/lib/fonts/DejaVuSansMono-Bold.ttf +0 -0
- data/lib/fonts/DejaVuSansMono-BoldOblique.ttf +0 -0
- data/lib/fonts/DejaVuSansMono-Oblique.ttf +0 -0
- data/lib/fonts/DejaVuSansMono.ttf +0 -0
- data/lib/fonts/LinLibertine_R.ttf +0 -0
- data/lib/fonts/LinLibertine_RB.ttf +0 -0
- data/lib/fonts/LinLibertine_RBI.ttf +0 -0
- data/lib/fonts/LinLibertine_RI.ttf +0 -0
- data/lib/fonts/NewCM10-Bold.otf +0 -0
- data/lib/fonts/NewCM10-BoldItalic.otf +0 -0
- data/lib/fonts/NewCM10-Italic.otf +0 -0
- data/lib/fonts/NewCM10-Regular.otf +0 -0
- data/lib/fonts/NewCMMath-Book.otf +0 -0
- data/lib/fonts/NewCMMath-Regular.otf +0 -0
- data/lib/typst.rb +115 -0
- metadata +86 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 43d8c84a75186f58f150a1b401f023269a87b65ff4181622d12ee0605e44e12c
|
4
|
+
data.tar.gz: b04f05668004a681b3dbf23cd8c5741e7a5d88418b1b282144b8a855575e9ae1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 90852c841c355b42fd6f305627d6ce61e3ad2321e56e8a45bab1eff715888f232f76779eb217375e0da4855c24fd139cb14a86dea2a4aa53aeacccc816ece7da
|
7
|
+
data.tar.gz: 2e661ba34cdef35d3e9911b461cbd06815c31a2ac4408fa6be4a3395519f8a159bf3a3e31ae6cc573f78dbbe14a8818f0089dacf59f6ad6d779e80c79d02733d
|
data/Cargo.toml
ADDED
data/README.md
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
# typst-rb
|
2
|
+
|
3
|
+
Ruby binding to [typst](https://github.com/typst/typst),
|
4
|
+
a new markup-based typesetting system that is powerful and easy to learn.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
```bash
|
9
|
+
gem install typst
|
10
|
+
```
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
require "typst"
|
16
|
+
|
17
|
+
# Compile `readme.typ` to PDF and save as `readme.pdf`
|
18
|
+
Typst::Pdf.new("readme.typ").write("readme.pdf")
|
19
|
+
|
20
|
+
# Or return PDF content as an array of bytes
|
21
|
+
pdf_bytes = Typst::Pdf.new("readme.typ").bytes
|
22
|
+
# => [37, 80, 68, 70, 45, 49, 46, 55, 10, 37, 128 ...]
|
23
|
+
|
24
|
+
# Or return PDF content as a string of bytes
|
25
|
+
document = Typst::Pdf.new("readme.typ").document
|
26
|
+
# => "%PDF-1.7\n%\x80\x80\x80\x80\n\n4 0 obj\n<<\n /Type /Font\n /Subtype ..."
|
27
|
+
|
28
|
+
# Compile `readme.typ` to SVG and save as `readme.svg`
|
29
|
+
Typst::Svg.new("readme.typ").write("readme.svg")
|
30
|
+
|
31
|
+
# Or return SVG content as an array of pages
|
32
|
+
pages = Typst::Svg.new("readme.typ").pages
|
33
|
+
# => ["<svg class=\"typst-doc\" viewBox=\"0 0 595.2764999999999 841.89105\" ..."
|
34
|
+
|
35
|
+
# Compile `readme.typ` to SVG and save as `readme.html`
|
36
|
+
Typst::Html.new("readme.typ", "README").write("readme.html")
|
37
|
+
|
38
|
+
# Or return HTML content
|
39
|
+
markup = Typst::Html.new("readme.typ", "README").markup
|
40
|
+
# => "\n<!DOCTYPE html>\n<html>\n<head>\n<title>README</title>\n</head>\n<bo..."
|
41
|
+
|
42
|
+
# Compile from a string to PDF
|
43
|
+
t = Typst::Pdf.from_s(%{hello world})
|
44
|
+
|
45
|
+
# Compile from a string to SVG
|
46
|
+
t = Typst::Svg.from_s(%{hello world})
|
47
|
+
|
48
|
+
# Compile from a string to PDF
|
49
|
+
t = Typst::Html.from_s(%{hello world})
|
50
|
+
|
51
|
+
# A more complex example of compiling from string
|
52
|
+
main = %{
|
53
|
+
#import "template.typ": *
|
54
|
+
|
55
|
+
#show: template.with()
|
56
|
+
|
57
|
+
#lorem(50)
|
58
|
+
|
59
|
+
#image("icon.svg")
|
60
|
+
}
|
61
|
+
|
62
|
+
template = %{
|
63
|
+
#let template(body) = {
|
64
|
+
set text(12pt, font: "Example")
|
65
|
+
body
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
icon = File.read("icon.svg")
|
70
|
+
font_bytes = File.read("Example.ttf")
|
71
|
+
|
72
|
+
t = Typst::Pdf.from_s(main, dependencies: { "template.typ" => template, "icon.svg" => icon }, fonts: { "Example.ttf" => font_bytes })
|
73
|
+
```
|
74
|
+
|
75
|
+
## Contributors & Acknowledgements
|
76
|
+
typst-rb is based on [typst-py](https://github.com/messense/typst-py) by [messense](https://github.com/messense)
|
77
|
+
|
78
|
+
## License
|
79
|
+
|
80
|
+
This work is released under the Apache-2.0 license. A copy of the license is provided in the [LICENSE](./LICENSE) file.
|
data/README.typ
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
|
2
|
+
#show link: underline
|
3
|
+
#show link: set text(blue)
|
4
|
+
|
5
|
+
= typst-rb
|
6
|
+
|
7
|
+
Ruby binding to #link("https://github.com/typst/typst")[typst], a new markup-based typesetting system that is powerful and easy to learn.
|
8
|
+
|
9
|
+
== Installation
|
10
|
+
|
11
|
+
```bash
|
12
|
+
gem install typst
|
13
|
+
```
|
14
|
+
|
15
|
+
== Usage
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
require "typst"
|
19
|
+
|
20
|
+
# Compile `readme.typ` to PDF and save as `readme.pdf`
|
21
|
+
Typst::Pdf.new("readme.typ").write("readme.pdf")
|
22
|
+
|
23
|
+
# Or return PDF content as an array of bytes
|
24
|
+
pdf_bytes = Typst::Pdf.new("readme.typ").bytes
|
25
|
+
# => [37, 80, 68, 70, 45, 49, 46, 55, 10, 37, 128 ...]
|
26
|
+
|
27
|
+
# Or return PDF content as a string of bytes
|
28
|
+
document = Typst::Pdf.new("readme.typ").document
|
29
|
+
# => "%PDF-1.7\n%\x80\x80\x80\x80\n\n4 0 obj\n<<\n /Type /Font\n /Subtype ..."
|
30
|
+
|
31
|
+
# Compile `readme.typ` to SVG and save as `readme.svg`
|
32
|
+
Typst::Svg.new("readme.typ").write("readme.svg")
|
33
|
+
|
34
|
+
# Or return SVG content as an array of pages
|
35
|
+
pages = Typst::Svg.new("readme.typ").pages
|
36
|
+
# => ["<svg class=\"typst-doc\" viewBox=\"0 0 595.2764999999999 841.89105\" ..."
|
37
|
+
|
38
|
+
# Compile `readme.typ` to SVG and save as `readme.html`
|
39
|
+
Typst::Html.new("readme.typ", "README").write("readme.html")
|
40
|
+
|
41
|
+
# Or return HTML content
|
42
|
+
markup = Typst::Html.new("readme.typ", "README").markup
|
43
|
+
# => "\n<!DOCTYPE html>\n<html>\n<head>\n<title>README</title>\n</head>\n<bo..."
|
44
|
+
|
45
|
+
# Compile from a string to PDF
|
46
|
+
t = Typst::Pdf.from_s(%{hello world})
|
47
|
+
|
48
|
+
# Compile from a string to SVG
|
49
|
+
t = Typst::Svg.from_s(%{hello world})
|
50
|
+
|
51
|
+
# Compile from a string to PDF
|
52
|
+
t = Typst::Html.from_s(%{hello world})
|
53
|
+
|
54
|
+
# A more complex example of compiling from string
|
55
|
+
main = %{
|
56
|
+
#import "template.typ": *
|
57
|
+
|
58
|
+
#show: template.with()
|
59
|
+
|
60
|
+
#lorem(50)
|
61
|
+
|
62
|
+
#image("icon.svg")
|
63
|
+
}
|
64
|
+
|
65
|
+
template = %{
|
66
|
+
#let template(body) = {
|
67
|
+
set text(12pt, font: "Example")
|
68
|
+
body
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
icon = File.read("icon.svg")
|
73
|
+
font_bytes = File.read("Example.ttf")
|
74
|
+
|
75
|
+
t = Typst::Pdf.from_s(main, dependencies: { "template.typ" => template, "icon.svg" => icon }, fonts: { "Example.ttf" => font_bytes })
|
76
|
+
```
|
77
|
+
|
78
|
+
== Contributors & Acknowledgements
|
79
|
+
typst-rb is based on #link("https://github.com/messense/typst-py")[typst-py] by #link("https://github.com/messense")[messense]
|
80
|
+
|
81
|
+
== License
|
82
|
+
|
83
|
+
This work is released under the Apache-2.0 license. A copy of the license is provided in the #link("https://github.com/actsasflinn/typst-rb/blob/main/LICENSE")[LICENSE] file.
|
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rake/extensiontask"
|
3
|
+
require "rubygems/package_task"
|
4
|
+
require "bundler"
|
5
|
+
|
6
|
+
CROSS_PLATFORMS = %w[
|
7
|
+
aarch64-linux
|
8
|
+
arm64-darwin
|
9
|
+
x64-mingw32
|
10
|
+
x86_64-darwin
|
11
|
+
x86_64-linux
|
12
|
+
x86_64-linux-musl
|
13
|
+
]
|
14
|
+
|
15
|
+
spec = Bundler.load_gemspec("typst.gemspec")
|
16
|
+
|
17
|
+
Gem::PackageTask.new(spec).define
|
18
|
+
|
19
|
+
Rake::ExtensionTask.new("typst", spec) do |ext|
|
20
|
+
ext.lib_dir = "lib/typst"
|
21
|
+
ext.source_pattern = "*.{rs,toml}"
|
22
|
+
ext.cross_compile = true
|
23
|
+
ext.cross_platform = CROSS_PLATFORMS
|
24
|
+
end
|