string-text 0.2.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 966183d6fa9a4ab3f04278e9f0e22c5c85cc704b3a82c5d9271f065d5968905b
4
- data.tar.gz: 0bc9b6cf81c86bc1e0104b3fbe95e000c14a4983ce8ed311eb2a9dfc0b21063c
3
+ metadata.gz: bbebbdbd77112e3f5322cd1bc2e1296c06cc0e4106dbb2b59cfa71e41e869f93
4
+ data.tar.gz: 883ad7d37349a4a0b7851006d19292e46c4a9628a63daba9011fd8283b782bde
5
5
  SHA512:
6
- metadata.gz: 185b584f5adabc6a82bcfcb191cd2ea6ba6e2fb364e95ab273c3f4beb20a581dfe859a1c08788946539369c008770f14cb4e600be23ea78484c69651d98aaa0a
7
- data.tar.gz: c446c492db325e861e86f308cb924d2adfdc3f2a6320e0a4aa771d61621302c92a5bdcd7c8814d272c6cc98895ed8712f95f4c93e704dfe58559c8d6db258d14
6
+ metadata.gz: 37879cfee303951695df37ba4a110a3020a3d8b769fb0e1ed48607aea1912d8c1ef4085bed452b881422e2a687e2e46a050f33bb8adc577a3eaaeafdbd1b8f45
7
+ data.tar.gz: f32f7e8b5146b90f763e8a68301be62d37354f640b6882364334ba64d741f56ee2eac35cb78a37e8b319cf2d679c94ec90fa0bb0a16d1d4ed3381556f4eb27d2
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module String::Text
4
- VERSION = "0.2.3"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/string-text.rb CHANGED
@@ -4,7 +4,7 @@ require_relative "string-text/version"
4
4
 
5
5
  module String::Text
6
6
  class Error < StandardError; end
7
-
7
+
8
8
  refine String do
9
9
  # Indent or outdent a block of text to the given column (default 1). It
10
10
  # uses the indent of the least indented non-empty line as the indent of the
@@ -20,15 +20,22 @@ module String::Text
20
20
  # ).align
21
21
  #
22
22
  def align(column = 1)
23
- column == 1 or raise NotImplementedError
23
+ column > 0 or raise ArgumentError "Illegal column: #{column}"
24
+ initial = " " * (column - 1)
24
25
  lines = self.split(/\n/)
25
26
  lines.pop while !lines.empty? && !(lines.last =~ /^\s*\S/)
26
27
  lines.shift while !lines.empty? && !(lines.first =~ /^\s*\S/)
27
28
  return "" if lines.empty?
28
29
  indent = lines.map { _1 =~ /^(\s*)/; $1.size }.select { _1 > 0 }.min || 0
29
- lines.map { |line| line[indent..-1]&.rstrip || "" }.join("\n")
30
+ lines.map { |line|
31
+ l = line[indent..-1]&.rstrip
32
+ l ? initial + l : ""
33
+ }.join("\n")
30
34
  end
31
35
 
36
+ # Like #align but replaces the string
37
+ def align!(column = 1) = self.replace align(column)
38
+
32
39
  # Converts a string to a boolean so that "true" becomes true and that
33
40
  # "false" and the empty string becomes false. Any other string is an error
34
41
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: string-text
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-20 00:00:00.000000000 Z
11
+ date: 2024-09-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Gem string-text
14
14
  email: