jekyll-latex-pdf 0.4.2 → 0.5.0
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/.rubocop.yml +197 -144
- data/CHANGELOG.md +9 -2
- data/Gemfile.lock +1 -1
- data/README.md +82 -18
- data/bin/setup +5 -3
- data/data/kramdown/apa6.latex +7 -1
- data/data/kramdown/jekyll-latex-pdf.latex +1 -0
- data/jekyll-latex-pdf.gemspec +3 -0
- data/lib/jekyll/latex/pdf.rb +9 -4
- data/lib/jekyll/latex/pdf/defaults.rb +48 -0
- data/lib/jekyll/latex/pdf/document.rb +28 -10
- data/lib/jekyll/latex/pdf/figure.rb +2 -0
- data/lib/jekyll/latex/pdf/figure/figure.rb +58 -0
- data/lib/jekyll/latex/pdf/generator.rb +14 -2
- data/lib/jekyll/latex/pdf/kramdown_data.rb +32 -0
- data/lib/jekyll/latex/pdf/latex.rb +72 -49
- data/lib/jekyll/latex/pdf/liquid.rb +17 -12
- data/lib/jekyll/latex/pdf/scholar/bibliography.rb +6 -1
- data/lib/jekyll/latex/pdf/scholar/cite.rb +9 -4
- data/lib/jekyll/latex/pdf/tikz.rb +4 -0
- data/lib/jekyll/latex/pdf/tikz/tikz-html.rb +108 -0
- data/lib/jekyll/latex/pdf/tikz/tikz-latex.rb +34 -0
- data/lib/jekyll/latex/pdf/utilities.rb +33 -0
- data/lib/jekyll/latex/pdf/version.rb +1 -1
- metadata +9 -7
- data/lib/jekyll/latex/pdf/options.rb +0 -83
- data/rubocop/jekyll.rb +0 -5
- data/rubocop/jekyll/assert_equal_literal_actual.rb +0 -149
- data/rubocop/jekyll/no_p_allowed.rb +0 -23
- data/rubocop/jekyll/no_puts_allowed.rb +0 -23
data/rubocop/jekyll.rb
DELETED
@@ -1,149 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module Jekyll
|
6
|
-
# Checks for `assert_equal(exp, act, msg = nil)` calls containing literal values as
|
7
|
-
# second argument. The second argument should ideally be a method called on the tested
|
8
|
-
# instance.
|
9
|
-
#
|
10
|
-
# @example
|
11
|
-
# # bad
|
12
|
-
# assert_equal @foo.bar, "foobar"
|
13
|
-
# assert_equal @alpha.beta, { "foo" => "bar", "lorem" => "ipsum" }
|
14
|
-
# assert_equal @alpha.omega, ["foobar", "lipsum"]
|
15
|
-
#
|
16
|
-
# # good
|
17
|
-
# assert_equal "foobar", @foo.bar
|
18
|
-
#
|
19
|
-
# assert_equal(
|
20
|
-
# { "foo" => "bar", "lorem" => "ipsum" },
|
21
|
-
# @alpha.beta
|
22
|
-
# )
|
23
|
-
#
|
24
|
-
# assert_equal(
|
25
|
-
# ["foobar", "lipsum"],
|
26
|
-
# @alpha.omega
|
27
|
-
# )
|
28
|
-
#
|
29
|
-
class AssertEqualLiteralActual < Cop
|
30
|
-
MSG = "Provide the 'expected value' as the first argument to `assert_equal`.".freeze
|
31
|
-
|
32
|
-
SIMPLE_LITERALS = %i(
|
33
|
-
true
|
34
|
-
false
|
35
|
-
nil
|
36
|
-
int
|
37
|
-
float
|
38
|
-
str
|
39
|
-
sym
|
40
|
-
complex
|
41
|
-
rational
|
42
|
-
regopt
|
43
|
-
).freeze
|
44
|
-
|
45
|
-
COMPLEX_LITERALS = %i(
|
46
|
-
array
|
47
|
-
hash
|
48
|
-
pair
|
49
|
-
irange
|
50
|
-
erange
|
51
|
-
regexp
|
52
|
-
).freeze
|
53
|
-
|
54
|
-
def_node_matcher :literal_actual?, <<-PATTERN
|
55
|
-
(send nil? :assert_equal $(send ...) $#literal?)
|
56
|
-
PATTERN
|
57
|
-
|
58
|
-
def_node_matcher :literal_actual_with_msg?, <<-PATTERN
|
59
|
-
(send nil? :assert_equal $(send ...) $#literal? $#opt_msg?)
|
60
|
-
PATTERN
|
61
|
-
|
62
|
-
def on_send(node)
|
63
|
-
return unless literal_actual?(node) || literal_actual_with_msg?(node)
|
64
|
-
add_offense(node, location: :expression)
|
65
|
-
end
|
66
|
-
|
67
|
-
def autocorrect(node)
|
68
|
-
lambda do |corrector|
|
69
|
-
corrector.replace(node.loc.expression, replacement(node))
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
private
|
74
|
-
|
75
|
-
def opt_msg?(node)
|
76
|
-
node&.source
|
77
|
-
end
|
78
|
-
|
79
|
-
# This is not implement using a NodePattern because it seems
|
80
|
-
# to not be able to match against an explicit (nil) sexp
|
81
|
-
def literal?(node)
|
82
|
-
node && (simple_literal?(node) || complex_literal?(node))
|
83
|
-
end
|
84
|
-
|
85
|
-
def simple_literal?(node)
|
86
|
-
SIMPLE_LITERALS.include?(node.type)
|
87
|
-
end
|
88
|
-
|
89
|
-
def complex_literal?(node)
|
90
|
-
COMPLEX_LITERALS.include?(node.type) &&
|
91
|
-
node.each_child_node.all?(&method(:literal?))
|
92
|
-
end
|
93
|
-
|
94
|
-
def replacement(node)
|
95
|
-
_, _, first_param, second_param, optional_param = *node
|
96
|
-
|
97
|
-
replaced_text = \
|
98
|
-
if second_param.type == :hash
|
99
|
-
replace_hash_with_variable(first_param.source, second_param.source)
|
100
|
-
elsif second_param.type == :array && second_param.source != "[]"
|
101
|
-
replace_array_with_variable(first_param.source, second_param.source)
|
102
|
-
else
|
103
|
-
replace_based_on_line_length(first_param.source, second_param.source)
|
104
|
-
end
|
105
|
-
|
106
|
-
return "#{replaced_text}, #{optional_param.source}" if optional_param
|
107
|
-
replaced_text
|
108
|
-
end
|
109
|
-
|
110
|
-
def replace_based_on_line_length(first_expression, second_expression)
|
111
|
-
result = "assert_equal #{second_expression}, #{first_expression}"
|
112
|
-
return result if result.length < 80
|
113
|
-
|
114
|
-
# fold long lines independent of Rubocop configuration for better readability
|
115
|
-
<<~TEXT
|
116
|
-
assert_equal(
|
117
|
-
#{second_expression},
|
118
|
-
#{first_expression}
|
119
|
-
)
|
120
|
-
TEXT
|
121
|
-
end
|
122
|
-
|
123
|
-
def replace_hash_with_variable(first_expression, second_expression)
|
124
|
-
expect_expression = if second_expression.start_with?("{")
|
125
|
-
second_expression
|
126
|
-
else
|
127
|
-
"{#{second_expression}}"
|
128
|
-
end
|
129
|
-
<<~TEXT
|
130
|
-
expected = #{expect_expression}
|
131
|
-
assert_equal expected, #{first_expression}
|
132
|
-
TEXT
|
133
|
-
end
|
134
|
-
|
135
|
-
def replace_array_with_variable(first_expression, second_expression)
|
136
|
-
expect_expression = if second_expression.start_with?("%")
|
137
|
-
second_expression
|
138
|
-
else
|
139
|
-
Array(second_expression)
|
140
|
-
end
|
141
|
-
<<~TEXT
|
142
|
-
expected = #{expect_expression}
|
143
|
-
assert_equal expected, #{first_expression}
|
144
|
-
TEXT
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rubocop"
|
4
|
-
|
5
|
-
module RuboCop
|
6
|
-
module Cop
|
7
|
-
module Jekyll
|
8
|
-
class NoPAllowed < Cop
|
9
|
-
MSG = "Avoid using `p` to print things. Use `Jekyll.logger` instead.".freeze
|
10
|
-
|
11
|
-
def_node_search :p_called?, <<-PATTERN
|
12
|
-
(send _ :p _)
|
13
|
-
PATTERN
|
14
|
-
|
15
|
-
def on_send(node)
|
16
|
-
if p_called?(node)
|
17
|
-
add_offense(node, :location => :selector)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rubocop"
|
4
|
-
|
5
|
-
module RuboCop
|
6
|
-
module Cop
|
7
|
-
module Jekyll
|
8
|
-
class NoPutsAllowed < Cop
|
9
|
-
MSG = "Avoid using `puts` to print things. Use `Jekyll.logger` instead.".freeze
|
10
|
-
|
11
|
-
def_node_search :puts_called?, <<-PATTERN
|
12
|
-
(send nil? :puts _)
|
13
|
-
PATTERN
|
14
|
-
|
15
|
-
def on_send(node)
|
16
|
-
if puts_called?(node)
|
17
|
-
add_offense(node, :location => :selector)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|