lx 1.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 +7 -0
- data/README.md +34 -0
- data/lib/lx.rb +197 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d4c0434d776d126749bc25f0261862ef735b77ac115e65fa53b81c4d37910e0b
|
4
|
+
data.tar.gz: 327b023d673ed23f7281d61d85001b9a2c1e577ed2b0c5ba571f245c4b8d1883
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d46c1fd25072f59cb72eff63d3b323c86749cdb522ac17c225509397227be60f2fc9e92ac695467866170244f6318128c2b744394b1e755f0f25ffb7ce440838
|
7
|
+
data.tar.gz: 35bbb8fb3bd0a20c9eaae80685bf255ebb3374950230c28771e5a7a1bdff0b9cccffc46938af062990d2d52359a3d813281e5051947eda274fcc7bcac136e424
|
data/README.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# LX
|
2
|
+
|
3
|
+
OK, let's just be honest here. These are some cool little utilities I cooked up
|
4
|
+
for myself. I think they're the coolest thing since sliced bread. You probably
|
5
|
+
won't agree. That's how we programmers are, always besmirching each other's work
|
6
|
+
because it doesn't meet our individual ideas of what constitutes making the
|
7
|
+
world a better place.
|
8
|
+
|
9
|
+
Mainly, I'm posting this library on RubyGems because I use it in some other
|
10
|
+
libraries that I'm going to upload.
|
11
|
+
|
12
|
+
## Install
|
13
|
+
|
14
|
+
The usual:
|
15
|
+
|
16
|
+
``
|
17
|
+
gem install lx
|
18
|
+
``
|
19
|
+
|
20
|
+
## Author
|
21
|
+
|
22
|
+
Mike O'Sullivan
|
23
|
+
mike@idocs.com
|
24
|
+
|
25
|
+
## Name
|
26
|
+
|
27
|
+
"LX" doesn't mean anything in particular. It's concise and it was available on
|
28
|
+
rubygems.rb.
|
29
|
+
|
30
|
+
## History
|
31
|
+
|
32
|
+
| version | date | notes |
|
33
|
+
|---------|--------------|-------------------------------|
|
34
|
+
| 1.0 | May 29, 2020 | Initial upload. |
|
data/lib/lx.rb
ADDED
@@ -0,0 +1,197 @@
|
|
1
|
+
#===============================================================================
|
2
|
+
# LX
|
3
|
+
#
|
4
|
+
|
5
|
+
# The LX module is the home for utilities that don't particularly fit in one
|
6
|
+
# class. For now, it only contains the randstr method.
|
7
|
+
module LX
|
8
|
+
# version '1.0'
|
9
|
+
VERSION = '1.0'
|
10
|
+
|
11
|
+
#---------------------------------------------------------------------------
|
12
|
+
# verbose
|
13
|
+
# @verbose = true
|
14
|
+
#
|
15
|
+
# def self.verbose
|
16
|
+
# return @verbose
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# def self.verbose=(bool)
|
20
|
+
# return @verbose = bool ? true : false
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# verbose
|
24
|
+
#---------------------------------------------------------------------------
|
25
|
+
|
26
|
+
|
27
|
+
#---------------------------------------------------------------------------
|
28
|
+
# randstr
|
29
|
+
#
|
30
|
+
|
31
|
+
# characters for random string
|
32
|
+
@@RAND_CHARS = %w(
|
33
|
+
b c d f h m p q r s t v w x z
|
34
|
+
B C D F H M P Q R S T V W X Z
|
35
|
+
2 3 4 5 7 8 9
|
36
|
+
)
|
37
|
+
|
38
|
+
# length of random character string
|
39
|
+
@@RND_CHARS_MAX = @@RAND_CHARS.length - 1
|
40
|
+
|
41
|
+
# target length
|
42
|
+
@@RND_PK_LENGTH = 20
|
43
|
+
|
44
|
+
# Returns a random string of characters. The optional single param is the
|
45
|
+
# length of the string to return. By default, the string is 20 characters
|
46
|
+
# long.
|
47
|
+
def self.randstr(len=@@RND_PK_LENGTH)
|
48
|
+
# intialize rv
|
49
|
+
rv = ''
|
50
|
+
|
51
|
+
# build return string
|
52
|
+
len.times do
|
53
|
+
rv += @@RAND_CHARS[rand 0 .. @@RND_CHARS_MAX]
|
54
|
+
end
|
55
|
+
|
56
|
+
# freeze return value
|
57
|
+
rv.freeze
|
58
|
+
|
59
|
+
# return
|
60
|
+
return rv
|
61
|
+
end
|
62
|
+
#
|
63
|
+
# randstr
|
64
|
+
#---------------------------------------------------------------------------
|
65
|
+
end
|
66
|
+
#
|
67
|
+
# LX
|
68
|
+
#===============================================================================
|
69
|
+
|
70
|
+
|
71
|
+
#===============================================================================
|
72
|
+
# Array
|
73
|
+
#
|
74
|
+
|
75
|
+
# Adds a single method to the Array class. This is the only method that is
|
76
|
+
# added to the Array class itself. Access LX utilities through the array's new
|
77
|
+
# +lx+ method.
|
78
|
+
#
|
79
|
+
# For example, the use the move method, call the method like this:
|
80
|
+
# arr = ['a', 'b', 'c']
|
81
|
+
# arr.lx.move 1, 2
|
82
|
+
class Array
|
83
|
+
# Creates a LX::Array object and returns it.
|
84
|
+
def lx
|
85
|
+
return LX::Array.new(self)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# A helper class to add methods to the Array class. When you use the Array::lx
|
90
|
+
# you're creating an instance of LX::Array.
|
91
|
+
class LX::Array
|
92
|
+
# Initialize a LX::Array object. The only param is the array itself.
|
93
|
+
def initialize(p_arr)
|
94
|
+
@arr = p_arr
|
95
|
+
end
|
96
|
+
|
97
|
+
# Moves an array element from the old index to the new index.
|
98
|
+
# arr = ['a', 'b', 'c']
|
99
|
+
# arr.lx.move 1, 2 # => ["a", "c", "b"]
|
100
|
+
def move(old_idx, new_idx)
|
101
|
+
@arr.insert new_idx, @arr.slice!(1)
|
102
|
+
end
|
103
|
+
|
104
|
+
# Splits an array into an array of arrays. The param is the delimiter.
|
105
|
+
# arr = ['Fred', 'George', ':', 'Mary', 'Frank']
|
106
|
+
# arr.lx.split ':' # => [["Fred", "George"], ["Mary", "Frank"]]
|
107
|
+
def split(exp)
|
108
|
+
# $tm.hrm
|
109
|
+
rv = []
|
110
|
+
current = nil
|
111
|
+
|
112
|
+
# loop through array looking for delimiter
|
113
|
+
@arr.each do |el|
|
114
|
+
if el == exp
|
115
|
+
if current
|
116
|
+
rv.push current
|
117
|
+
current = nil
|
118
|
+
end
|
119
|
+
else
|
120
|
+
current ||= []
|
121
|
+
current.push el
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# add last current
|
126
|
+
if current
|
127
|
+
rv.push current
|
128
|
+
end
|
129
|
+
|
130
|
+
# return
|
131
|
+
return rv
|
132
|
+
end
|
133
|
+
end
|
134
|
+
#
|
135
|
+
# Array
|
136
|
+
#===============================================================================
|
137
|
+
|
138
|
+
|
139
|
+
#===============================================================================
|
140
|
+
# String
|
141
|
+
#
|
142
|
+
|
143
|
+
# Adds the +lx+ method to the String class. To call LX utilities on the string,
|
144
|
+
# call its lx method. For example, call +collapse+ like this:
|
145
|
+
# str = ' Whatever Dude '
|
146
|
+
# str.lx.collapse # => "Whatever Dude"
|
147
|
+
class String
|
148
|
+
# Creates and returns an LX::String object.
|
149
|
+
def lx
|
150
|
+
return LX::String.new(self)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
# Utilities for strings.
|
155
|
+
class LX::String
|
156
|
+
#---------------------------------------------------------------------------
|
157
|
+
# initialize
|
158
|
+
#
|
159
|
+
|
160
|
+
# Initializes a LX::String object, The single param is the string with which
|
161
|
+
# the object will be associated.
|
162
|
+
def initialize(p_str)
|
163
|
+
@str = p_str
|
164
|
+
end
|
165
|
+
#
|
166
|
+
# initialize
|
167
|
+
#---------------------------------------------------------------------------
|
168
|
+
|
169
|
+
|
170
|
+
#---------------------------------------------------------------------------
|
171
|
+
# collapse
|
172
|
+
#
|
173
|
+
|
174
|
+
# Returns a new string in which leading and trailing whitespace have been
|
175
|
+
# removed, and multiple internal whitespaces are collapsed into into single
|
176
|
+
# spaces.
|
177
|
+
# str = ' Whatever Dude '
|
178
|
+
# str.lx.collapse # => "Whatever Dude"
|
179
|
+
def collapse()
|
180
|
+
rv = @str.dup
|
181
|
+
rv.lx.collapse!
|
182
|
+
return rv
|
183
|
+
end
|
184
|
+
|
185
|
+
# Performs a collapse on the string itself.
|
186
|
+
def collapse!()
|
187
|
+
@str.sub!(/\A[^[:graph:]]+/mu, '')
|
188
|
+
@str.sub!(/[^[:graph:]]+\z/mu, '')
|
189
|
+
@str.gsub!(/[^[:graph:]]+/mu, ' ')
|
190
|
+
end
|
191
|
+
#
|
192
|
+
# collapse
|
193
|
+
#---------------------------------------------------------------------------
|
194
|
+
end
|
195
|
+
#
|
196
|
+
# String
|
197
|
+
#===============================================================================
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lx
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike O'Sullivan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-05-29 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Misc utilities for strings and arrays
|
14
|
+
email: mike@idocs.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- README.md
|
20
|
+
- lib/lx.rb
|
21
|
+
homepage: https://rubygems.org/gems/lx
|
22
|
+
licenses:
|
23
|
+
- MIT
|
24
|
+
metadata: {}
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 2.7.6
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Misc utilities
|
45
|
+
test_files: []
|