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

pulibrary / bibdata / 1dcebae2-3318-4e77-bc53-82276e293354

02 May 2025 04:45PM UTC coverage: 28.256% (-63.9%) from 92.189%
1dcebae2-3318-4e77-bc53-82276e293354

push

circleci

sandbergja
Add basic infrastructure for compiling rust code

* Add a rake compile task to compile
* Run the rake task in CI
* Run the rake task before rspec tests with the rust tag, to provide quick feedback on rust changes in TDD cycles

2 of 7 new or added lines in 2 files covered. (28.57%)

2467 existing lines in 97 files now uncovered.

1089 of 3854 relevant lines covered (28.26%)

0.29 hits per line

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

39.02
/marc_to_solr/lib/language_service.rb
1
# frozen_string_literal: true
2

3
require 'languages'
1✔
4
require_relative './indigenous_languages'
1✔
5

6
class LanguageService
1✔
7
  include IndigenousLanguages
1✔
8
  def loc_to_iana(loc)
1✔
UNCOV
9
    if Languages[loc]&.alpha2.blank? || ['zxx', 'mul', 'sgn', 'und', '|||'].include?(loc)
×
UNCOV
10
      'en'
×
11
    else
UNCOV
12
      Languages[loc].alpha2.to_s
×
13
    end
14
  end
15

16
  def valid_language_code?(code)
1✔
UNCOV
17
    return false if code.blank?
×
18

UNCOV
19
    Languages[code].present? || iso_639_5_include?(code)
×
20
  end
21

22
  def code_to_name(code)
1✔
UNCOV
23
    Languages[code]&.name || iso_639_5_name(code)
×
24
  end
25

26
  def macrolanguage_codes(individual_language_code)
1✔
UNCOV
27
    individual = Languages[individual_language_code]
×
UNCOV
28
    if individual.respond_to? :macrolanguage
×
UNCOV
29
      [individual&.macrolanguage&.alpha3_bibliographic.to_s, individual&.macrolanguage&.iso639_3.to_s].uniq
×
30
    else
UNCOV
31
      []
×
32
    end
33
  end
34

35
  def specific_names(record)
1✔
UNCOV
36
    specific_codes(record).map { |code| code_to_name(code) }
×
37
                          .compact
38
  end
39

40
  def specific_codes(record)
1✔
UNCOV
41
    extractor = LanguageExtractor.new(record)
×
UNCOV
42
    codes = []
×
UNCOV
43
    codes << extractor.fixed_field_code if extractor.fixed_field_code
×
44

UNCOV
45
    if extractor.iso_041_fields.any?
×
UNCOV
46
      codes.concat(extractor.iso_041_codes)
×
UNCOV
47
    elsif extractor.all_041_fields.any?
×
UNCOV
48
      codes.concat(extractor.all_041_codes)
×
49
    end
UNCOV
50
    codes.uniq.reject { |general_code| includes_more_specific_version?(codes, general_code) }
×
51
  end
52

53
  def iso639_language_names(record)
1✔
UNCOV
54
    LanguageExtractor.new(record).iso_041_codes.map { |code| code_to_name(code) }
×
55
                     .compact
56
  end
57

58
  def includes_more_specific_version?(codes, code_to_check)
1✔
UNCOV
59
    codes.any? { |individual| macrolanguage_codes(individual).include? code_to_check }
×
60
  end
61

62
  private
1✔
63

64
    def iso639_5_collective_languages
1✔
UNCOV
65
      @iso639_5_collective_languages ||= CSV.read(File.join(File.dirname(__FILE__), 'iso639-5.tsv'), headers: true, col_sep: "\t")
×
66
    end
67

68
    def iso_639_5_include?(code)
1✔
UNCOV
69
      iso639_5_collective_languages['code'].include?(code)
×
70
    end
71

72
    def iso_639_5_name(code)
1✔
UNCOV
73
      return unless iso_639_5_include?(code)
×
74

UNCOV
75
      iso639_5_collective_languages.find { |row| row['code'] == code }['Label (English)']
×
76
    end
77
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