• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / orangelight / 00dbc10b-d747-4ad7-b211-7b26d753abbb

14 Aug 2025 01:25PM UTC coverage: 0.483% (-94.9%) from 95.343%
00dbc10b-d747-4ad7-b211-7b26d753abbb

push

circleci

web-flow
Merge pull request #5181 from pulibrary/dependabot/bundler/activestorage-7.2.2.2

Bump activestorage from 7.2.2.1 to 7.2.2.2

47 of 9721 relevant lines covered (0.48%)

0.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/lib/orangelight/string_functions.rb
1
# frozen_string_literal: true
2

3
module StringFunctions
×
4
  class << self
×
5
    def cn_normalize(str)
×
6
      if /^[a-zA-Z]{2,3} \d+([qQ]?)$/.match? str # the normalizer thinks "CD 104" is valid LC
×
7
        accession_number(str)&.strip
×
8
      else
×
9
        Lcsort.normalize(str.gsub(/x([A-Z])/, '\1'))&.strip || accession_number(str)&.strip
×
10
      end
×
11
    end
×
12

13
    def oclc_normalize(oclc, _opts = { prefix: false })
×
14
      oclc.gsub(/\D/, '').to_i.to_s
×
15
    end
×
16

17
    # Needed for name-title browse
18
    # https://github.com/traject/traject/blob/v2.3.1/lib/traject/macros/marc21.rb#L227
19
    def trim_punctuation(str)
×
20
      # If something went wrong and we got a nil, just return it
21
      return str unless str
×
22

23
      # trailing: comma, slash, semicolon, colon (possibly preceded and followed by whitespace)
24
      str = str.sub(%r{ *[ ,\/;:] *\Z}, '')
×
25

26
      # trailing period if it is preceded by at least three letters
27
      # (possibly preceded and followed by whitespace)
28
      str = str.sub(/( *\w\w\w)\. *\Z/, '\1')
×
29

30
      # single square bracket characters if they are the start and/or end
31
      #   chars and there are no internal square brackets.
32
      str = str.sub(/\A\[?([^\[\]]+)\]?\Z/, '\1')
×
33

34
      # trim any leading or trailing whitespace
35
      str.strip!
×
36

37
      str
×
38
    end
×
39

40
    private
×
41

42
      def accession_number(str)
×
43
        norm = str.upcase
×
44
        norm = norm.gsub(/(CD|DVD|LP|LS)-/, '\1') # should file together regardless of dash
×
45

46
        # normalize number to 7-digits, ignore oversize q
47
        norm.gsub(/(\d{1,7})(Q$|Q OVERSIZE$)?/) do
×
48
          format('%07d', Regexp.last_match[1].to_i)
×
49
        end
×
50
      end
×
51
  end
×
52
end
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc