fat_table 0.6.6 → 0.7.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba8791fd0b89302cb5127adc325afd0a84bee337298955ecb48119805bcff53a
|
4
|
+
data.tar.gz: da6f4923fe75df0707c3fc21f96fef52127188e76f8a9ae1b923ea768689d31e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f9b047a93e55f7752173dc7f2c927db2bf45669ede7de1d652b89f1052054f90763c7910b850f84d80ea86a959c82e48f9f9d5b5fe9192ff6b15f9dabb104a7
|
7
|
+
data.tar.gz: 498eb355cce5f5fa8597ad23657d4699cfead201b6bbf5200386f50773c846061199de0373edbe41ff94c79e1a5d90da8c1f9a37d275c580a0a021109c2d8780
|
@@ -53,35 +53,38 @@ module FatTable
|
|
53
53
|
# 'Average'.
|
54
54
|
attr_reader :gfooters
|
55
55
|
|
56
|
-
class_attribute :default_format
|
57
|
-
self.default_format = {
|
58
|
-
nil_text: '',
|
59
|
-
case: :none,
|
60
|
-
alignment: :left,
|
61
|
-
bold: false,
|
62
|
-
italic: false,
|
63
|
-
color: 'none',
|
64
|
-
bgcolor: 'none',
|
65
|
-
hms: false,
|
66
|
-
pre_digits: 0,
|
67
|
-
post_digits: 0,
|
68
|
-
commas: false,
|
69
|
-
currency: false,
|
70
|
-
datetime_fmt: '%F %H:%M:%S',
|
71
|
-
date_fmt: '%F',
|
72
|
-
true_text: 'T',
|
73
|
-
false_text: 'F',
|
74
|
-
true_color: 'none',
|
75
|
-
true_bgcolor: 'none',
|
76
|
-
false_color: 'none',
|
77
|
-
false_bgcolor: 'none',
|
78
|
-
underline: false,
|
79
|
-
blink: false,
|
80
|
-
}
|
81
|
-
|
82
56
|
class_attribute :valid_colors
|
83
57
|
self.valid_colors = ['none']
|
84
58
|
|
59
|
+
def self.default_format
|
60
|
+
{
|
61
|
+
nil_text: '',
|
62
|
+
case: :none,
|
63
|
+
alignment: :left,
|
64
|
+
bold: false,
|
65
|
+
italic: false,
|
66
|
+
color: 'none',
|
67
|
+
bgcolor: 'none',
|
68
|
+
hms: false,
|
69
|
+
pre_digits: 0,
|
70
|
+
post_digits: 0,
|
71
|
+
commas: false,
|
72
|
+
currency: false,
|
73
|
+
datetime_fmt: '%F %H:%M:%S',
|
74
|
+
date_fmt: '%F',
|
75
|
+
true_text: 'T',
|
76
|
+
false_text: 'F',
|
77
|
+
true_color: 'none',
|
78
|
+
true_bgcolor: 'none',
|
79
|
+
false_color: 'none',
|
80
|
+
false_bgcolor: 'none',
|
81
|
+
underline: false,
|
82
|
+
blink: false,
|
83
|
+
_h: nil,
|
84
|
+
_location: nil
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
85
88
|
# :category: Constructors
|
86
89
|
|
87
90
|
# Return a new Formatter for the given +table+ which must be of the class
|
@@ -659,7 +662,7 @@ module FatTable
|
|
659
662
|
# hash.
|
660
663
|
format_h =
|
661
664
|
if format_at[location][h].empty?
|
662
|
-
default_format
|
665
|
+
default_format
|
663
666
|
else
|
664
667
|
format_at[location][h].to_h
|
665
668
|
end
|
@@ -700,17 +703,17 @@ module FatTable
|
|
700
703
|
# format_for call with those locations.
|
701
704
|
if location == :body
|
702
705
|
format_h.each_pair do |k, v|
|
703
|
-
if format_at[:bfirst][h].send(k) == default_format[k]
|
706
|
+
if format_at[:bfirst][h].send(k) == self.class.default_format[k]
|
704
707
|
format_at[:bfirst][h].send("#{k}=", v)
|
705
708
|
end
|
706
|
-
if format_at[:gfirst][h].send(k) == default_format[k]
|
709
|
+
if format_at[:gfirst][h].send(k) == self.class.default_format[k]
|
707
710
|
format_at[:gfirst][h].send("#{k}=", v)
|
708
711
|
end
|
709
712
|
end
|
710
713
|
elsif location == :gfirst
|
711
714
|
# Copy :gfirst formatting to :bfirst if it is still the default
|
712
715
|
format_h.each_pair do |k, v|
|
713
|
-
if format_at[:bfirst][h].send(k) == default_format[k]
|
716
|
+
if format_at[:bfirst][h].send(k) == self.class.default_format[k]
|
714
717
|
format_at[:bfirst][h].send("#{k}=", v)
|
715
718
|
end
|
716
719
|
end
|
@@ -942,9 +945,10 @@ module FatTable
|
|
942
945
|
# Convert a value to a string based on the instructions in istruct,
|
943
946
|
# depending on the type of val. "Formatting," which changes the content of
|
944
947
|
# the string, such as adding commas, is always performed, except alignment
|
945
|
-
# which is only performed when the width parameter is
|
946
|
-
# which changes the appearance without changing the
|
947
|
-
# only if the decorate parameter is true.
|
948
|
+
# which is only performed when the width parameter is
|
949
|
+
# non-nil. "Decorating", which changes the appearance without changing the
|
950
|
+
# content, is performed only if the decorate parameter is true. Priority:
|
951
|
+
# lowest to highest: type, location, column_name
|
948
952
|
def format_cell(val, istruct, width: nil, decorate: false)
|
949
953
|
case val
|
950
954
|
when Numeric
|
@@ -982,8 +986,6 @@ module FatTable
|
|
982
986
|
end
|
983
987
|
end
|
984
988
|
|
985
|
-
private
|
986
|
-
|
987
989
|
# Add LaTeX control sequences, ANSI terminal escape codes, or other
|
988
990
|
# decorations to string to decorate it with the given attributes. None of
|
989
991
|
# the decorations may affect the displayed width of the string. Return the
|
@@ -992,6 +994,8 @@ module FatTable
|
|
992
994
|
str
|
993
995
|
end
|
994
996
|
|
997
|
+
private
|
998
|
+
|
995
999
|
# Convert a boolean to a string according to instructions in istruct, which
|
996
1000
|
# is assumed to be the result of parsing a formatting instruction string as
|
997
1001
|
# above. Only device-independent formatting is done here. Device dependent
|
@@ -1099,7 +1103,7 @@ module FatTable
|
|
1099
1103
|
val
|
1100
1104
|
end
|
1101
1105
|
if width && aligned?
|
1102
|
-
pad = width - width(val)
|
1106
|
+
pad = [width - width(val), 0].max
|
1103
1107
|
case istruct.alignment
|
1104
1108
|
when :left
|
1105
1109
|
val += ' ' * pad
|
@@ -95,18 +95,6 @@ module FatTable
|
|
95
95
|
result
|
96
96
|
end
|
97
97
|
|
98
|
-
private
|
99
|
-
|
100
|
-
def color_valid?(clr)
|
101
|
-
valid_colors.include?(clr)
|
102
|
-
end
|
103
|
-
|
104
|
-
def invalid_color_msg(clr)
|
105
|
-
valid_colors_list = valid_colors.join(' ').wrap
|
106
|
-
"LaTeXFormatter invalid color '#{clr}'. Valid colors are:\n" +
|
107
|
-
valid_colors_list
|
108
|
-
end
|
109
|
-
|
110
98
|
# Add LaTeX control sequences. Ignore background color, underline, and
|
111
99
|
# blink. Alignment needs to be done by LaTeX, so we have to take it into
|
112
100
|
# account unless it's the same as the body alignment, since that is the
|
@@ -119,15 +107,29 @@ module FatTable
|
|
119
107
|
result = "{\\textcolor{#{istruct.color}}{#{result}}}"
|
120
108
|
end
|
121
109
|
if istruct.bgcolor && istruct.bgcolor != 'none'
|
122
|
-
result = "\\cellcolor{#{istruct.bgcolor}}#{result}"
|
110
|
+
result = "{\\cellcolor{#{istruct.bgcolor}}{#{result}}}"
|
123
111
|
end
|
124
|
-
|
112
|
+
if (istruct._h && format_at[:body][istruct._h] &&
|
113
|
+
istruct.alignment != format_at[:body][istruct._h].alignment) ||
|
114
|
+
(istruct._h.nil? && istruct.alignment.to_sym != :left)
|
125
115
|
ac = alignment_code(istruct.alignment)
|
126
116
|
result = "\\multicolumn{1}{#{ac}}{#{result}}"
|
127
117
|
end
|
128
118
|
result
|
129
119
|
end
|
130
120
|
|
121
|
+
private
|
122
|
+
|
123
|
+
def color_valid?(clr)
|
124
|
+
valid_colors.include?(clr)
|
125
|
+
end
|
126
|
+
|
127
|
+
def invalid_color_msg(clr)
|
128
|
+
valid_colors_list = valid_colors.join(' ').wrap
|
129
|
+
"LaTeXFormatter invalid color '#{clr}'. Valid colors are:\n" +
|
130
|
+
valid_colors_list
|
131
|
+
end
|
132
|
+
|
131
133
|
# Return +str+ with quote marks oriented and special TeX characters quoted.
|
132
134
|
def quote(str)
|
133
135
|
# Replace single and double quotes with TeX oriented quotes.
|
@@ -159,7 +161,7 @@ module FatTable
|
|
159
161
|
end
|
160
162
|
|
161
163
|
def alignment_code(al_sym)
|
162
|
-
case al_sym
|
164
|
+
case al_sym.to_sym
|
163
165
|
when :center
|
164
166
|
'c'
|
165
167
|
when :right
|
@@ -6,9 +6,12 @@ module FatTable
|
|
6
6
|
# timestamps and the connector at the beginning of hlines is a '|' rather than
|
7
7
|
# a '+' as for text tables.
|
8
8
|
class OrgFormatter < Formatter
|
9
|
-
self.default_format
|
10
|
-
|
11
|
-
|
9
|
+
def self.default_format
|
10
|
+
fmt = super
|
11
|
+
fmt[:date_fmt] = '[%F %a]'
|
12
|
+
fmt[:datetime_fmt] = '[%F %a %H:%M:%S]'
|
13
|
+
fmt
|
14
|
+
end
|
12
15
|
|
13
16
|
private
|
14
17
|
|
@@ -38,6 +38,17 @@ module FatTable
|
|
38
38
|
self.valid_colors = ['none'] +
|
39
39
|
::Rainbow::X11ColorNames::NAMES.keys.map(&:to_s).sort
|
40
40
|
|
41
|
+
# Add ANSI codes to string to implement the given decorations
|
42
|
+
def decorate_string(str, istruct)
|
43
|
+
result = Rainbow(str)
|
44
|
+
result = colorize(result, istruct.color, istruct.bgcolor)
|
45
|
+
result = result.bold if istruct.bold
|
46
|
+
result = result.italic if istruct.italic
|
47
|
+
result = result.underline if istruct.underline
|
48
|
+
result = result.blink if istruct.blink
|
49
|
+
result
|
50
|
+
end
|
51
|
+
|
41
52
|
private
|
42
53
|
|
43
54
|
def color_valid?(clr)
|
@@ -66,17 +77,6 @@ module FatTable
|
|
66
77
|
str.gsub(/\e\[[0-9;]+m/, '')
|
67
78
|
end
|
68
79
|
|
69
|
-
# Add ANSI codes to string to implement the given decorations
|
70
|
-
def decorate_string(str, istruct)
|
71
|
-
result = Rainbow(str)
|
72
|
-
result = colorize(result, istruct.color, istruct.bgcolor)
|
73
|
-
result = result.bold if istruct.bold
|
74
|
-
result = result.italic if istruct.italic
|
75
|
-
result = result.underline if istruct.underline
|
76
|
-
result = result.blink if istruct.blink
|
77
|
-
result
|
78
|
-
end
|
79
|
-
|
80
80
|
def colorize(str, fg_color, bg_color)
|
81
81
|
fg_color = nil if fg_color == 'none'
|
82
82
|
bg_color = nil if bg_color == 'none'
|
data/lib/fat_table/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fat_table
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel E. Doherty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|