push
travis-ci
1108 of 1264 relevant lines covered (87.66%)
11936.29 hits per line
1 |
module AnyStyle |
1✔ |
2 |
require 'uri'
|
1✔ |
3 |
|
|
4 |
class Normalizer |
1✔ |
5 |
class Locator < Normalizer |
1✔ |
6 |
@keys = [:isbn, :url, :doi] |
1✔ |
7 |
|
|
8 |
def normalize(item, **opts) |
1✔ |
9 |
map_values(item) do |key, value|
|
3,902✔ |
10 |
case key
|
251✔ |
11 |
when :isbn |
|
12 |
value[/[\d-]+/]
|
36✔ |
13 |
when :url |
|
14 |
doi = doi_extract(value) |
144✔ |
15 |
append item, :doi, doi unless doi.nil? |
144✔ |
16 |
URI.extract(value)
|
144✔ |
17 |
when :doi |
|
18 |
doi_extract(value) || value |
71✔ |
19 |
else
|
|
20 |
value |
× |
21 |
end
|
|
22 |
end
|
|
23 |
end
|
|
24 |
end
|
|
25 |
|
|
26 |
def doi_extract(value) |
1✔ |
27 |
value[/10\.(\d{4,9}\/[-._;()\/:A-Z0-9]+|1002\/\S+)/i]
|
215✔ |
28 |
end
|
|
29 |
end
|
|
30 |
end
|