gmi2latex 0.1.2 → 0.1.3
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 +4 -4
- data/.envrc +1 -2
- data/.rubocop.yml +4 -3
- data/CHANGELOG.md +9 -0
- data/Rakefile +13 -6
- data/exe/gmi2latex +3 -1
- data/lib/gmi2latex/command.rb +9 -7
- data/lib/gmi2latex/renderer.rb +30 -24
- data/lib/gmi2latex/version.rb +1 -1
- data/lib/gmi2latex.rb +2 -2
- data/sig/gmi2latex.gen.rbs +7 -0
- data/sig/gmi2latex.rbs +60 -2
- metadata +9 -12
- data/lib/gmi2latex/gemtext_refinements.rb +0 -17
- data/manifest.scm +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: adcbc0a32303d293d5d1f0c06ddbf8d11979c0e3ca8eae5cfe2d4b6b46748179
|
|
4
|
+
data.tar.gz: ce5c2f24a782c2ad1905af6182d0f7f20642e27fa658ff27317580eb3836e36e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 05705ef468ea5d7aac3e54b0610b83be1dbae6a0a0f66efc6240b63f99cd3d65d4742edd608c5528cdf314f3f49e38fa61b10ff8cc1b1ce4b7e6eb02936a8303
|
|
7
|
+
data.tar.gz: a14e3fc7388f4c749133688d59d50754221558bcc6d57a7a249bd876e5fd1169803a5de42b1af9d5ae6825713d59a09e898adf3e5ddcda5eda1e87f9d418ed00
|
data/.envrc
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
eval "$(guix shell --search-paths)"
|
|
1
|
+
use guix ruby ruby-gemtext ruby-rubocop
|
data/.rubocop.yml
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
AllCops:
|
|
2
|
-
TargetRubyVersion:
|
|
2
|
+
TargetRubyVersion: 3.1
|
|
3
|
+
NewCops: enable
|
|
3
4
|
|
|
4
5
|
Style/StringLiterals:
|
|
5
6
|
Enabled: true
|
|
6
|
-
EnforcedStyle:
|
|
7
|
+
EnforcedStyle: single_quotes
|
|
7
8
|
|
|
8
9
|
Style/StringLiteralsInInterpolation:
|
|
9
10
|
Enabled: true
|
|
10
|
-
EnforcedStyle:
|
|
11
|
+
EnforcedStyle: single_quotes
|
|
11
12
|
|
|
12
13
|
Layout/LineLength:
|
|
13
14
|
Max: 120
|
data/CHANGELOG.md
CHANGED
data/Rakefile
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require 'bundler/gem_tasks'
|
|
4
|
+
require 'rake/testtask'
|
|
5
5
|
|
|
6
6
|
Rake::TestTask.new(:test) do |t|
|
|
7
|
-
t.libs <<
|
|
8
|
-
t.libs <<
|
|
9
|
-
t.test_files = FileList[
|
|
7
|
+
t.libs << 'test'
|
|
8
|
+
t.libs << 'lib'
|
|
9
|
+
t.test_files = FileList['test/**/*_test.rb']
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
require
|
|
12
|
+
require 'rubocop/rake_task'
|
|
13
13
|
|
|
14
14
|
RuboCop::RakeTask.new
|
|
15
15
|
|
|
16
16
|
task default: %i[test rubocop]
|
|
17
|
+
|
|
18
|
+
hand_written_signatures = Dir['sig/**/*.rbs'] - Dir['sig/**/*.gen.rbs']
|
|
19
|
+
|
|
20
|
+
desc 'generate signatures'
|
|
21
|
+
task :sig do
|
|
22
|
+
sh 'typeprof', '-o', 'sig/gmi2latex.gen.rbs', '-r', 'gemtext', *Dir['lib/**/*.rb'], *hand_written_signatures
|
|
23
|
+
end
|
data/exe/gmi2latex
CHANGED
data/lib/gmi2latex/command.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'gemtext'
|
|
4
|
+
require 'optparse'
|
|
5
|
+
require_relative 'renderer'
|
|
4
6
|
|
|
5
7
|
module Gmi2LaTeX
|
|
6
8
|
class Command
|
|
@@ -9,17 +11,17 @@ module Gmi2LaTeX
|
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def run
|
|
12
|
-
header = <<~
|
|
14
|
+
header = <<~LATEX
|
|
13
15
|
\\RequirePackage{plautopatch}
|
|
14
16
|
\\documentclass[a4paper,article,dvipdfmx]{jlreq}
|
|
15
17
|
\\usepackage{hyperref}
|
|
16
18
|
\\begin{document}
|
|
17
|
-
|
|
19
|
+
LATEX
|
|
18
20
|
footer = "\\end{document}\n"
|
|
19
21
|
|
|
20
22
|
OptionParser.new do |parser|
|
|
21
|
-
parser.on(
|
|
22
|
-
parser.on(
|
|
23
|
+
parser.on('--header=SOURCE') { |source| header = source }
|
|
24
|
+
parser.on('--footer=SOURCE') { |source| footer = source }
|
|
23
25
|
end.parse!
|
|
24
26
|
|
|
25
27
|
doc = Gemtext::Parser.new($stdin).parse
|
data/lib/gmi2latex/renderer.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Gmi2LaTeX
|
|
4
4
|
class Renderer
|
|
@@ -8,8 +8,6 @@ module Gmi2LaTeX
|
|
|
8
8
|
@footer = footer
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
using Gmi2LaTeX::GemtextRefinements
|
|
12
|
-
|
|
13
11
|
def render
|
|
14
12
|
@header and print @header
|
|
15
13
|
@document.nodes.each { |node| render_node(node) }
|
|
@@ -38,17 +36,15 @@ module Gmi2LaTeX
|
|
|
38
36
|
in Gemtext::Text[content:]
|
|
39
37
|
render_text(content)
|
|
40
38
|
in Gemtext::Link[target:, description:]
|
|
41
|
-
|
|
42
|
-
end_itemize
|
|
43
|
-
print "#{description} (\\url{#{target}})\n"
|
|
39
|
+
render_link(target, description:)
|
|
44
40
|
in Gemtext::Preformatted[content:]
|
|
45
41
|
end_text
|
|
46
42
|
end_itemize
|
|
47
|
-
print <<~
|
|
43
|
+
print <<~LATEX
|
|
48
44
|
\\begin{verbatim}
|
|
49
45
|
#{content}
|
|
50
46
|
\\end{verbatim}
|
|
51
|
-
|
|
47
|
+
LATEX
|
|
52
48
|
in Gemtext::ListItem[content:]
|
|
53
49
|
end_text
|
|
54
50
|
render_list_item(content)
|
|
@@ -66,18 +62,18 @@ module Gmi2LaTeX
|
|
|
66
62
|
@was_text and print "\\\\\n"
|
|
67
63
|
content.each_char do |char|
|
|
68
64
|
case char
|
|
69
|
-
in
|
|
70
|
-
print
|
|
71
|
-
in
|
|
72
|
-
print
|
|
73
|
-
in
|
|
74
|
-
print
|
|
75
|
-
in
|
|
76
|
-
print
|
|
77
|
-
in
|
|
78
|
-
print
|
|
79
|
-
in
|
|
80
|
-
print
|
|
65
|
+
in '_'
|
|
66
|
+
print '\\_'
|
|
67
|
+
in '#'
|
|
68
|
+
print '\\#'
|
|
69
|
+
in '%'
|
|
70
|
+
print '\\%'
|
|
71
|
+
in '<'
|
|
72
|
+
print '\\textlangle{}'
|
|
73
|
+
in '>'
|
|
74
|
+
print '\\textrangle{}'
|
|
75
|
+
in '`'
|
|
76
|
+
print '\\`{}'
|
|
81
77
|
else
|
|
82
78
|
print char
|
|
83
79
|
end
|
|
@@ -88,20 +84,30 @@ module Gmi2LaTeX
|
|
|
88
84
|
|
|
89
85
|
def render_list_item(content)
|
|
90
86
|
if @listing
|
|
91
|
-
print <<~
|
|
87
|
+
print <<~LATEX
|
|
92
88
|
\\item{}
|
|
93
89
|
#{content}
|
|
94
|
-
|
|
90
|
+
LATEX
|
|
95
91
|
else
|
|
96
|
-
print <<~
|
|
92
|
+
print <<~LATEX
|
|
97
93
|
\\begin{itemize}
|
|
98
94
|
\\item{}
|
|
99
95
|
#{content}
|
|
100
|
-
|
|
96
|
+
LATEX
|
|
101
97
|
@listing = true
|
|
102
98
|
end
|
|
103
99
|
end
|
|
104
100
|
|
|
101
|
+
def render_link(target, description:)
|
|
102
|
+
end_text
|
|
103
|
+
end_itemize
|
|
104
|
+
if description.empty?
|
|
105
|
+
print "☞ \\url{#{target}}\n"
|
|
106
|
+
else
|
|
107
|
+
print "☞ #{description} (\\url{#{target}})\n"
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
105
111
|
def end_text
|
|
106
112
|
@was_text or return
|
|
107
113
|
print "\n"
|
data/lib/gmi2latex/version.rb
CHANGED
data/lib/gmi2latex.rb
CHANGED
data/sig/gmi2latex.rbs
CHANGED
|
@@ -1,4 +1,62 @@
|
|
|
1
|
-
module
|
|
1
|
+
module Gemtext
|
|
2
|
+
class Document
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
class Heading
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class SubHeading
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class SubSubHeading
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class Whitespace
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class Text
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class Link
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class Preformatted
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class ListItem
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
module Gmi2LaTeX
|
|
2
31
|
VERSION: String
|
|
3
|
-
|
|
32
|
+
Error: Class
|
|
33
|
+
|
|
34
|
+
class Renderer
|
|
35
|
+
@document: Gemtext::Document
|
|
36
|
+
@header: String?
|
|
37
|
+
@footer: String?
|
|
38
|
+
@listing: bool
|
|
39
|
+
@was_text: bool
|
|
40
|
+
|
|
41
|
+
def initialize: (Gemtext::Document document, ?header: String?, ?footer: String?) -> void
|
|
42
|
+
def render: -> nil
|
|
43
|
+
def render_node: (Gemtext::Heading |
|
|
44
|
+
Gemtext::SubHeading |
|
|
45
|
+
Gemtext::SubSubHeading |
|
|
46
|
+
Gemtext::Whitespace |
|
|
47
|
+
Gemtext::Text |
|
|
48
|
+
Gemtext::Link |
|
|
49
|
+
Gemtext::Preformatted |
|
|
50
|
+
Gemtext::ListItem node) -> void
|
|
51
|
+
def render_text: (String content) -> void
|
|
52
|
+
def render_list_item: (String content) -> void
|
|
53
|
+
def render_link: (String target, description: String) -> void
|
|
54
|
+
def end_text: -> void
|
|
55
|
+
def end_itemize: -> void
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class Command
|
|
59
|
+
def self.run: -> void
|
|
60
|
+
def run: -> void
|
|
61
|
+
end
|
|
4
62
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gmi2latex
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- gemmaro
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: gemtext
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
16
|
+
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
18
|
+
version: 1.0.3
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
|
-
- - "
|
|
23
|
+
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
25
|
+
version: 1.0.3
|
|
27
26
|
description: Gmi2LaTeX is a Gemtext (Gemini naitive text format, suffix .gmi) to LaTeX
|
|
28
27
|
converter.
|
|
29
28
|
email:
|
|
@@ -42,10 +41,9 @@ files:
|
|
|
42
41
|
- exe/gmi2latex
|
|
43
42
|
- lib/gmi2latex.rb
|
|
44
43
|
- lib/gmi2latex/command.rb
|
|
45
|
-
- lib/gmi2latex/gemtext_refinements.rb
|
|
46
44
|
- lib/gmi2latex/renderer.rb
|
|
47
45
|
- lib/gmi2latex/version.rb
|
|
48
|
-
-
|
|
46
|
+
- sig/gmi2latex.gen.rbs
|
|
49
47
|
- sig/gmi2latex.rbs
|
|
50
48
|
homepage: https://codeberg.org/gemmaro/gmi2latex
|
|
51
49
|
licenses:
|
|
@@ -54,7 +52,7 @@ metadata:
|
|
|
54
52
|
homepage_uri: https://codeberg.org/gemmaro/gmi2latex
|
|
55
53
|
source_code_uri: https://codeberg.org/gemmaro/gmi2latex.git
|
|
56
54
|
changelog_uri: https://codeberg.org/gemmaro/gmi2latex/src/branch/main/CHANGELOG.md
|
|
57
|
-
|
|
55
|
+
rubygems_mfa_required: 'true'
|
|
58
56
|
rdoc_options: []
|
|
59
57
|
require_paths:
|
|
60
58
|
- lib
|
|
@@ -69,8 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
69
67
|
- !ruby/object:Gem::Version
|
|
70
68
|
version: '0'
|
|
71
69
|
requirements: []
|
|
72
|
-
rubygems_version:
|
|
73
|
-
signing_key:
|
|
70
|
+
rubygems_version: 4.0.10
|
|
74
71
|
specification_version: 4
|
|
75
72
|
summary: Gemtext to LaTeX converter
|
|
76
73
|
test_files: []
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
require "gemtext"
|
|
2
|
-
|
|
3
|
-
module Gmi2LaTeX
|
|
4
|
-
module GemtextRefinements
|
|
5
|
-
refine Gemtext::Node do
|
|
6
|
-
def deconstruct_keys(*_keys)
|
|
7
|
-
{ content: }
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
refine Gemtext::Link do
|
|
12
|
-
def deconstruct_keys(*_keys)
|
|
13
|
-
{ **super, target:, description: }
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
data/manifest.scm
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(specifications->manifest (list "ruby@3.1" "ruby-gemtext" "ruby-rubocop"))
|