commentbox 0.1.2 → 0.2.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 +4 -4
- data/lib/commentbox.rb +40 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a43575a5fce78f88644c9bb88e0291a89455ab0431d28ce196fd7c9297817f45
|
4
|
+
data.tar.gz: 4da8a222cdb0bbc9051ac63f42d394754b62d51b1e2582517be3ade0938a7003
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3c437d82fe9a730adc67f3c54a67d76dd7dd6cc30851d173d24f725ce16cc33a043b105bbe640033455e916a4ad3596e896198e6e1c46a9867e298d3604fcaa
|
7
|
+
data.tar.gz: 33e51c50a9d063ae040b9071d325e2f32dd1535b19a7266e5af3d25551c3dd00cad85c6f34273e967169e661ad338a7aca047d4e576c3cbf2d35d81957972e95
|
data/lib/commentbox.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
|
1
2
|
module CommentBoxStyles
|
2
|
-
private
|
3
3
|
DefaultParams = {
|
4
4
|
style: :stub,
|
5
5
|
padding: 4,
|
6
6
|
stretch: 0,
|
7
7
|
offset: 2,
|
8
|
+
min_width: 0,
|
8
9
|
spacelines: true,
|
9
10
|
alignment: :left
|
10
11
|
}
|
@@ -15,7 +16,7 @@ private
|
|
15
16
|
evenlines: ['/ ', ' /'],
|
16
17
|
oddcorners: ['=/','/=']
|
17
18
|
},
|
18
|
-
|
19
|
+
parallax: {
|
19
20
|
hlines: '==',
|
20
21
|
oddlines: ['||', '||'],
|
21
22
|
evenlines: ['||', '||'],
|
@@ -36,12 +37,12 @@ private
|
|
36
37
|
}
|
37
38
|
end
|
38
39
|
|
39
|
-
|
40
40
|
module CommentBoxIntegerExtensions
|
41
41
|
def is_even?
|
42
42
|
self % 2 == 0
|
43
43
|
end
|
44
44
|
end
|
45
|
+
|
45
46
|
module CommentBoxStringExtensions
|
46
47
|
Integer.prepend CommentBoxIntegerExtensions
|
47
48
|
def justify_to (length)
|
@@ -73,11 +74,30 @@ end
|
|
73
74
|
class CommentBox
|
74
75
|
String.prepend CommentBoxStringExtensions # string align/justify methods
|
75
76
|
Integer.prepend CommentBoxIntegerExtensions # integer is_even? method
|
76
|
-
|
77
|
+
@@default_params = CommentBoxStyles::DefaultParams
|
78
|
+
@@styles = CommentBoxStyles::Styles
|
79
|
+
|
80
|
+
# class methods for messing with default values
|
81
|
+
def self.default_params; @@default_params end
|
82
|
+
def self.default_params=(value); @@default_params = value end
|
83
|
+
def self.set_default_params (value = {}); value.each { |key, val| @@default_params[key] = val } end
|
84
|
+
def self.styles; @@styles end
|
85
|
+
def self.add_style(value)
|
86
|
+
value.each do |key, val|
|
87
|
+
if val[:default] || val[:default?]
|
88
|
+
@@default_params[:style] = key
|
89
|
+
break # set the first default we find and stop the madness immediately
|
90
|
+
end
|
91
|
+
end
|
92
|
+
# I could attempt to remove a :default? key here but it doesn't matter
|
93
|
+
@@styles.merge! value
|
94
|
+
end
|
77
95
|
|
96
|
+
# instance setter methods
|
78
97
|
attr_writer :padding, :spacelines, :alignment, :offset
|
79
98
|
# I don't know how to call param= methods from the inside so I just use a set_param in private
|
80
|
-
def text= (value); set_text value; self end;
|
99
|
+
def text= (value); set_text value; self end;
|
100
|
+
def alignment= (value); set_alignment value; self end
|
81
101
|
def style= (value); set_style value; self end
|
82
102
|
# there is no @stretch, stretch is just added to @max_line_length
|
83
103
|
# but, if stretch= is called, then @max_line_length must be recalculated
|
@@ -86,7 +106,8 @@ class CommentBox
|
|
86
106
|
if !@max_line_length.is_even? then @max_line_length += 1 end
|
87
107
|
self end
|
88
108
|
|
89
|
-
|
109
|
+
# needs more reliance on setter methods. changing instance variables after initialization is a total house of cards right now
|
110
|
+
def initialize (params) # params: {text: String or Array, style: Symbol, padding: Integer, spacelines: Boolean, alignment: Symbol or Array, and some others}
|
90
111
|
# for now require an argument of some sort
|
91
112
|
if params.class != Hash && params.class != String then raise 'CommentBox#initialize : you gotta initialize this with Hash or String.' end
|
92
113
|
|
@@ -94,20 +115,22 @@ class CommentBox
|
|
94
115
|
if params.is_a? String then params = {text: params} end
|
95
116
|
|
96
117
|
# fill in a bunch of instance variables from params or default values
|
97
|
-
|
98
|
-
@
|
99
|
-
@offset = params[:offset] || DefaultParams[:offset]
|
118
|
+
@padding = params[:padding] || @@default_params[:padding]
|
119
|
+
@offset = params[:offset] || @@default_params[:offset]
|
100
120
|
# one of the options for this is false, so it's not gonna play nice with ||
|
101
|
-
@spacelines = (params[:spacelines] != nil) ? params[:spacelines] :
|
121
|
+
@spacelines = (params[:spacelines] != nil) ? params[:spacelines] : @@default_params[:spacelines]
|
122
|
+
@stretch = (params[:stretch] || @@default_params[:stretch]).to_i
|
123
|
+
@min_width = (params[:min_width] || @@default_params[:min_width]).to_i
|
102
124
|
|
103
125
|
# call on some special methods to parse text and alignment
|
104
126
|
set_text params[:text]
|
105
127
|
set_alignment params[:alignment]
|
106
128
|
set_style params[:style]
|
107
|
-
@max_line_length += (params[:stretch] ||
|
129
|
+
# @max_line_length += (params[:stretch] || @@default_params[:stretch]).to_i
|
108
130
|
if !@max_line_length.is_even? then @max_line_length += 1 end
|
109
131
|
end
|
110
132
|
def to_s
|
133
|
+
# exact value of spaceLine is calculated if @spacelines is true, otherwise it's just an empty string
|
111
134
|
spaceLine = @spacelines ? [@style[:oddlines][0], ' ' * (@max_line_length + @padding * 2), @style[:oddlines][1], "\n"].join : ''
|
112
135
|
|
113
136
|
# construct an array of lines, join them together and return
|
@@ -130,14 +153,15 @@ private
|
|
130
153
|
else
|
131
154
|
raise 'CommentBox#text= : expected String or Array here'
|
132
155
|
end
|
133
|
-
@max_line_length = @text.map(&:length).max
|
156
|
+
@max_line_length = @text.map(&:length).max + @stretch
|
157
|
+
@max_line_length = @min_width unless @max_line_length > @min_width
|
134
158
|
if !@max_line_length.is_even? then @max_line_length += 1 end
|
135
159
|
insert_line_if_even
|
136
160
|
end
|
137
161
|
def set_alignment (align)
|
138
162
|
if align == nil
|
139
163
|
# set default value if no argument is given
|
140
|
-
@alignment = [
|
164
|
+
@alignment = [ @@default_params[:alignment] ] * (@text.size)
|
141
165
|
else
|
142
166
|
# fill array with align if one symbol is given
|
143
167
|
if align.is_a? Symbol
|
@@ -158,10 +182,10 @@ private
|
|
158
182
|
insert_line_if_even
|
159
183
|
end
|
160
184
|
def set_style (style)
|
161
|
-
if style == nil then @style =
|
162
|
-
elsif style.is_a? Symbol then @style =
|
185
|
+
if style == nil then @style = @@styles[@@default_params[:style]]
|
186
|
+
elsif style.is_a? Symbol then @style = @@styles[style]
|
163
187
|
elsif style.is_a? Hash then @style = style
|
164
|
-
elsif style.is_a? String then @style =
|
188
|
+
elsif style.is_a? String then @style = @@styles[style.to_sym]
|
165
189
|
else raise 'CommentBox#style= : expected Symbol, Hash, or String here' end
|
166
190
|
end
|
167
191
|
def insert_line_if_even # also will delete a blank line if there is one
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: commentbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leonard H. Phelan IV
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A little gem for generating pretty multiline comment boxes in C/C++ templates
|
14
14
|
email: lenny@lenny.beer
|