arclight 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.eslintrc +12 -0
- data/.gitignore +5 -0
- data/.rubocop.yml +66 -0
- data/.solr_wrapper +5 -0
- data/.travis.yml +30 -2
- data/CONTRIBUTING.md +43 -0
- data/Gemfile +36 -0
- data/LICENSE.txt +1 -0
- data/README.md +85 -12
- data/Rakefile +14 -3
- data/app/assets/images/blacklight/compact.svg +25 -0
- data/app/assets/images/blacklight/logo.png +0 -0
- data/app/assets/javascripts/arclight/arclight.js +9 -0
- data/app/assets/javascripts/arclight/collection_context.js +18 -0
- data/app/assets/javascripts/arclight/collection_navigation.js +114 -0
- data/app/assets/javascripts/arclight/collection_scrollspy.js +6 -0
- data/app/assets/javascripts/arclight/component_ancestors.js +56 -0
- data/app/assets/javascripts/arclight/oembed_viewer.js +39 -0
- data/app/assets/javascripts/arclight/truncator.js.erb +23 -0
- data/app/assets/stylesheets/arclight/application.scss +13 -0
- data/app/assets/stylesheets/arclight/bootstrap_overrides.scss +3 -0
- data/app/assets/stylesheets/arclight/modules/collection_search.scss +3 -0
- data/app/assets/stylesheets/arclight/modules/hierarchy_and_online_contents.scss +174 -0
- data/app/assets/stylesheets/arclight/modules/highlights.scss +10 -0
- data/app/assets/stylesheets/arclight/modules/layout.scss +33 -0
- data/app/assets/stylesheets/arclight/modules/mastheads.scss +60 -0
- data/app/assets/stylesheets/arclight/modules/repositories.scss +29 -0
- data/app/assets/stylesheets/arclight/modules/repository_card.scss +54 -0
- data/app/assets/stylesheets/arclight/modules/search_results.scss +75 -0
- data/app/assets/stylesheets/arclight/modules/show_collection.scss +78 -0
- data/app/assets/stylesheets/arclight/modules/sidebar.scss +16 -0
- data/app/assets/stylesheets/arclight/variables.scss +2 -0
- data/app/controllers/arclight/repositories_controller.rb +40 -0
- data/app/controllers/concerns/arclight/field_config_helpers.rb +86 -0
- data/app/factories/blacklight_field_configuration_factory.rb +29 -0
- data/app/helpers/arclight_helper.rb +173 -0
- data/app/models/arclight/parent.rb +24 -0
- data/app/models/arclight/parents.rb +34 -0
- data/app/models/arclight/requests/google_form.rb +44 -0
- data/app/models/concerns/arclight/catalog.rb +22 -0
- data/app/models/concerns/arclight/search_behavior.rb +46 -0
- data/app/models/concerns/arclight/solr_document.rb +131 -0
- data/app/presenters/arclight/index_presenter.rb +10 -0
- data/app/presenters/arclight/show_presenter.rb +27 -0
- data/app/views/arclight/.keep +0 -0
- data/app/views/arclight/repositories/_in_person_repository.html.erb +19 -0
- data/app/views/arclight/repositories/_repository.html.erb +62 -0
- data/app/views/arclight/repositories/index.html.erb +4 -0
- data/app/views/arclight/repositories/show.html.erb +38 -0
- data/app/views/arclight/requests/_google_form.html.erb +11 -0
- data/app/views/arclight/viewers/_oembed.html.erb +7 -0
- data/app/views/catalog/_arclight_document_index_header.html.erb +13 -0
- data/app/views/catalog/_arclight_document_index_header_hierarchy_default.html.erb +0 -0
- data/app/views/catalog/_arclight_document_index_header_online_contents_default.html.erb +0 -0
- data/app/views/catalog/_arclight_document_show_header.html.erb +15 -0
- data/app/views/catalog/_arclight_document_show_header_collection.html.erb +12 -0
- data/app/views/catalog/_arclight_index_compact_default.html.erb +15 -0
- data/app/views/catalog/_arclight_online_content_indicator.html.erb +5 -0
- data/app/views/catalog/_arclight_rangelimit.html.erb +24 -0
- data/app/views/catalog/_arclight_viewer_default.html.erb +1 -0
- data/app/views/catalog/_collection_contents.html.erb +12 -0
- data/app/views/catalog/_collection_count.html.erb +7 -0
- data/app/views/catalog/_collection_downloads.html.erb +17 -0
- data/app/views/catalog/_collection_online_contents.html.erb +17 -0
- data/app/views/catalog/_collection_overview.html.erb +7 -0
- data/app/views/catalog/_component_overview.html.erb +46 -0
- data/app/views/catalog/_context_card.html.erb +27 -0
- data/app/views/catalog/_context_sidebar.html.erb +8 -0
- data/app/views/catalog/_custom_metadata.html.erb +16 -0
- data/app/views/catalog/_home.html.erb +1 -0
- data/app/views/catalog/_index_breadcrumb_default.html.erb +3 -0
- data/app/views/catalog/_index_default.html.erb +17 -0
- data/app/views/catalog/_index_header.html.erb +7 -0
- data/app/views/catalog/_index_header_hierarchy_default.html.erb +42 -0
- data/app/views/catalog/_index_header_online_contents_default.html.erb +1 -0
- data/app/views/catalog/_index_hierarchy_default.html.erb +28 -0
- data/app/views/catalog/_index_online_contents_default.html.erb +6 -0
- data/app/views/catalog/_results_histogram.html.erb +10 -0
- data/app/views/catalog/_search_results.html.erb +31 -0
- data/app/views/catalog/_search_results_repository.html.erb +6 -0
- data/app/views/catalog/_search_within_form.html.erb +16 -0
- data/app/views/catalog/_show_breadcrumbs_default.html.erb +7 -0
- data/app/views/catalog/_show_collection.html.erb +40 -0
- data/app/views/catalog/_show_component_sidebar.html.erb +12 -0
- data/app/views/catalog/_show_default.html.erb +32 -0
- data/app/views/catalog/_show_header.html.erb +5 -0
- data/app/views/catalog/_show_sidebar.html.erb +30 -0
- data/app/views/catalog/index.html.erb +8 -0
- data/app/views/layouts/catalog_result.html.erb +7 -0
- data/app/views/shared/_breadcrumbs.html.erb +15 -0
- data/app/views/shared/_context_sidebar.html.erb +8 -0
- data/app/views/shared/_header_navbar.html.erb +54 -0
- data/app/views/shared/_main_menu_links.html.erb +6 -0
- data/arclight.gemspec +17 -4
- data/bin/rails +13 -0
- data/config/locales/arclight.en.yml +65 -0
- data/config/routes.rb +6 -0
- data/lib/arclight.rb +5 -0
- data/lib/arclight/custom_component.rb +98 -0
- data/lib/arclight/custom_document.rb +93 -0
- data/lib/arclight/digital_object.rb +26 -0
- data/lib/arclight/engine.rb +55 -0
- data/lib/arclight/exceptions.rb +18 -0
- data/lib/arclight/indexer.rb +9 -0
- data/lib/arclight/normalized_date.rb +45 -0
- data/lib/arclight/normalized_id.rb +25 -0
- data/lib/arclight/normalized_title.rb +30 -0
- data/lib/arclight/repository.rb +91 -0
- data/lib/arclight/shared_indexing_behavior.rb +97 -0
- data/lib/arclight/shared_terminology_behavior.rb +65 -0
- data/lib/arclight/solr_ead_indexer_ext.rb +159 -0
- data/lib/arclight/version.rb +3 -1
- data/lib/arclight/viewer.rb +45 -0
- data/lib/arclight/viewers/oembed.rb +56 -0
- data/lib/arclight/year_range.rb +102 -0
- data/lib/generators/arclight/install_generator.rb +63 -0
- data/lib/generators/arclight/templates/arclight.js +2 -0
- data/lib/generators/arclight/templates/arclight.scss +3 -0
- data/lib/generators/arclight/templates/catalog_controller.rb +347 -0
- data/lib/generators/arclight/templates/config/downloads.yml +13 -0
- data/lib/generators/arclight/templates/config/repositories.yml +42 -0
- data/lib/generators/arclight/update_generator.rb +22 -0
- data/lib/tasks/index.rake +87 -0
- data/package.json +24 -0
- data/solr/conf/_rest_managed.json +3 -0
- data/solr/conf/admin-extra.html +31 -0
- data/solr/conf/elevate.xml +36 -0
- data/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
- data/solr/conf/protwords.txt +21 -0
- data/solr/conf/schema.xml +631 -0
- data/solr/conf/scripts.conf +24 -0
- data/solr/conf/solrconfig.xml +393 -0
- data/solr/conf/spellings.txt +2 -0
- data/solr/conf/stopwords.txt +58 -0
- data/solr/conf/stopwords_en.txt +58 -0
- data/solr/conf/synonyms.txt +31 -0
- data/solr/conf/xslt/example.xsl +132 -0
- data/solr/conf/xslt/example_atom.xsl +67 -0
- data/solr/conf/xslt/example_rss.xsl +66 -0
- data/solr/conf/xslt/luke.xsl +337 -0
- data/tasks/arclight.rake +68 -0
- data/template.rb +15 -0
- data/vendor/assets/javascripts/responsiveTruncator.js +69 -0
- data/vendor/assets/javascripts/stickyfill.js +480 -0
- metadata +301 -6
@@ -0,0 +1,13 @@
|
|
1
|
+
#
|
2
|
+
# downloads.yml - Use the EAD's <unitid> as the primary key and
|
3
|
+
# provide the PDF and/or EAD (.xml) links. The
|
4
|
+
# size value should be a String (shown as-is) or
|
5
|
+
# the number of bytes in the download.
|
6
|
+
#
|
7
|
+
sample_unitid:
|
8
|
+
pdf:
|
9
|
+
href: 'http://example.com/sample.pdf'
|
10
|
+
size: '1.23MB'
|
11
|
+
ead:
|
12
|
+
href: 'http://example.com/sample.xml'
|
13
|
+
size: 123456
|
@@ -0,0 +1,42 @@
|
|
1
|
+
nlm:
|
2
|
+
name: 'National Library of Medicine. History of Medicine Division'
|
3
|
+
description: 'NLM’s History of Medicine Division collects, preserves, makes available, and interprets for diverse audiences one of the world’s richest collections of historical material related to human health and disease.'
|
4
|
+
building: 'Building 38, Room 1E-21'
|
5
|
+
address1: '8600 Rockville Pike'
|
6
|
+
address2: ''
|
7
|
+
city: 'Bethesda'
|
8
|
+
state: 'MD'
|
9
|
+
zip: '20894'
|
10
|
+
country: 'USA'
|
11
|
+
phone: ''
|
12
|
+
contact_info: 'hmdref@nlm.nih.gov'
|
13
|
+
thumbnail_url: "https://collections.nlm.nih.gov/pageturnerserver/ajaxp?theurl=http://localhost:8080/fedora/get/nlm:nlmuid-101421040-img/THUMB"
|
14
|
+
google_request_url: 'https://docs.google.com/a/stanford.edu/forms/d/e/1FAIpQLSeOamhY_IcFw4sPnz0ddwWWkrPaHbM5wp7JVbOLOL_mIusEyw/viewform'
|
15
|
+
google_request_mappings: "document_url=entry.1980510262&collection_name=entry.619150170&collection_creator=entry.14428541&eadid=entry.996397105&containers=entry.1125277048&title=entry.862815208"
|
16
|
+
sul-spec:
|
17
|
+
name: 'Stanford University Libraries. Special Collections and University Archives'
|
18
|
+
visit_note: 'Special Collections and University Archives materials are stored offsite and must be paged 36 hours in advance.'
|
19
|
+
description: 'The Special Collections and University Archives Department of Stanford University Libraries is committed to acquiring, preserving, and providing access to primary source materials that support the research needs of the Stanford community and beyond. There are three distinct divisions in our department: Manuscripts, Rare Books and University Archives. We welcome all students, scholars and members of the general public to the Field Reading Room. Learn more about using and accessing our collections.'
|
20
|
+
building: 'Green Library'
|
21
|
+
address1: '557 Escondido Mall'
|
22
|
+
address2: ''
|
23
|
+
city: 'Stanford'
|
24
|
+
state: 'CA'
|
25
|
+
zip: '94305'
|
26
|
+
country: 'USA'
|
27
|
+
phone: '(650) 725-1022'
|
28
|
+
contact_info: 'specialcollections@stanford.edu'
|
29
|
+
thumbnail_url: 'https://library.stanford.edu/sites/default/files/styles/150x150/public/collection/image/Collections-Super-Enlight.jpg'
|
30
|
+
umich-bhl:
|
31
|
+
name: 'University of Michigan. Bentley Historical Library'
|
32
|
+
description: 'The Bentley Historical Library collects the materials for and promotes the study of the histories of two great, intertwined institutions, the State of Michigan and the University of Michigan. The Library is open without fee to the public, and we welcome researchers regardless of academic or professional affiliation.'
|
33
|
+
building: ''
|
34
|
+
address1: '1150 Beal Ave'
|
35
|
+
address2: ''
|
36
|
+
city: 'Ann Arbor'
|
37
|
+
state: 'MI'
|
38
|
+
zip: '48109-2113'
|
39
|
+
country: 'USA'
|
40
|
+
phone: ''
|
41
|
+
contact_info: 'bentley.ref@umich.edu'
|
42
|
+
thumbnail_url: 'https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Bhlexterior.jpg/150px-Bhlexterior.jpg'
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'generators/arclight/install_generator'
|
4
|
+
|
5
|
+
module Arclight
|
6
|
+
##
|
7
|
+
# Arclight Update generator. This subclasses the Install generator, so this is
|
8
|
+
# intended to override behavior in the install generator that can allow the
|
9
|
+
# downstream application to choose if they want to take our changes or not and
|
10
|
+
# can choose to see a diff of our changes to help them decide.
|
11
|
+
class Update < Arclight::Install
|
12
|
+
source_root File.expand_path('../templates', __FILE__)
|
13
|
+
|
14
|
+
def create_blacklight_catalog
|
15
|
+
copy_file 'catalog_controller.rb', 'app/controllers/catalog_controller.rb'
|
16
|
+
end
|
17
|
+
|
18
|
+
def solr_config
|
19
|
+
directory '../../../../solr', 'solr'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'arclight'
|
4
|
+
require 'benchmark'
|
5
|
+
|
6
|
+
##
|
7
|
+
# Environment variables for indexing:
|
8
|
+
#
|
9
|
+
# REPOSITORY_ID for the repository id/slug to load repository data from
|
10
|
+
# your configuration (default: none).
|
11
|
+
#
|
12
|
+
# REPOSITORY_FILE for the YAML file of your repository configuration
|
13
|
+
# (default: config/repositories.yml).
|
14
|
+
#
|
15
|
+
# SOLR_URL for the location of your Solr instance
|
16
|
+
# (default: http://127.0.0.1:8983/solr/blacklight-core)
|
17
|
+
#
|
18
|
+
namespace :arclight do
|
19
|
+
desc 'Index an EAD document, use FILE=<path/to/ead.xml> and REPOSITORY_ID=<myid>'
|
20
|
+
task :index do
|
21
|
+
raise 'Please specify your EAD document, ex. FILE=<path/to/ead.xml>' unless ENV['FILE']
|
22
|
+
indexer = load_indexer
|
23
|
+
print "Loading #{ENV['FILE']} into index...\n"
|
24
|
+
elapsed_time = Benchmark.realtime { indexer.update(ENV['FILE']) }
|
25
|
+
print "Indexed #{ENV['FILE']} (in #{elapsed_time.round(3)} secs).\n"
|
26
|
+
end
|
27
|
+
|
28
|
+
desc 'Index a directory of EADs, use DIR=<path/to/directory> and REPOSITORY_ID=<myid>'
|
29
|
+
task :index_dir do
|
30
|
+
raise 'Please specify your directory, ex. DIR=<path/to/directory>' unless ENV['DIR']
|
31
|
+
Dir.glob(File.join(ENV['DIR'], '*.xml')).each do |file|
|
32
|
+
system("rake arclight:index FILE=#{file}")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
desc 'Index an EAD document, use URL=<http[s]://domain/path/to/ead.xml> and REPOSITORY_ID=<myid>'
|
37
|
+
task :index_url do
|
38
|
+
raise 'Please specify your EAD document, ex. URL=<http[s]://domain/path/to/ead.xml>' unless ENV['URL']
|
39
|
+
ead = Nokogiri::XML(open(ENV['URL']))
|
40
|
+
tmp = Tempfile.new(["#{Time.now.to_i}-", '.xml'], encoding: 'utf-8')
|
41
|
+
begin
|
42
|
+
tmp.write ead
|
43
|
+
puts "Downloaded EAD to #{tmp.path}"
|
44
|
+
ENV['FILE'] = tmp.path
|
45
|
+
Rake::Task['arclight:index'].invoke
|
46
|
+
Rake::Task['arclight:index'].reenable
|
47
|
+
tmp.close
|
48
|
+
ensure
|
49
|
+
tmp.delete
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
desc 'Index EADs from a file of URLs, use BATCH=<path/to/urls.txt> and REPOSITORY_ID=<myid>'
|
54
|
+
task :index_url_batch do
|
55
|
+
raise 'Please specify your URLs file, ex. BATCH=<path/to/urls.txt>' unless ENV['BATCH']
|
56
|
+
File.open(ENV['BATCH']).each_line do |l|
|
57
|
+
ENV['URL'] = l.chomp
|
58
|
+
next if ENV['URL'].empty?
|
59
|
+
unless ENV['URL'] =~ /\A#{URI.regexp(%w[http https])}\z/
|
60
|
+
puts "Skipping invalid looking url #{ENV['URL']}"
|
61
|
+
next
|
62
|
+
end
|
63
|
+
puts "Indexing #{ENV['URL']}"
|
64
|
+
Rake::Task['arclight:index_url'].invoke
|
65
|
+
Rake::Task['arclight:index_url'].reenable
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
desc 'Destroy all documents in the index'
|
70
|
+
task :destroy_index_docs do
|
71
|
+
puts 'Deleting all documents from index...'
|
72
|
+
indexer = load_indexer
|
73
|
+
indexer.delete_all
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def load_indexer
|
78
|
+
# hardcoded since we don't have access to Blacklight.connection_config[:url] here
|
79
|
+
ENV['SOLR_URL'] ||= 'http://127.0.0.1:8983/solr/blacklight-core'
|
80
|
+
|
81
|
+
options = {
|
82
|
+
document: Arclight::CustomDocument,
|
83
|
+
component: Arclight::CustomComponent
|
84
|
+
}
|
85
|
+
|
86
|
+
Arclight::Indexer.new(options)
|
87
|
+
end
|
data/package.json
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
{
|
2
|
+
"name": "arclight",
|
3
|
+
"description": "",
|
4
|
+
"main": "index.js",
|
5
|
+
"dependencies": {},
|
6
|
+
"devDependencies": {
|
7
|
+
"eslint": "^3.19.0",
|
8
|
+
"eslint-config-airbnb-base": "^11.1.3",
|
9
|
+
"eslint-plugin-import": "^2.2.0"
|
10
|
+
},
|
11
|
+
"scripts": {
|
12
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
13
|
+
},
|
14
|
+
"repository": {
|
15
|
+
"type": "git",
|
16
|
+
"url": "git+https://github.com/sul-dlss/arclight.git"
|
17
|
+
},
|
18
|
+
"author": "",
|
19
|
+
"license": "Apache-2.0",
|
20
|
+
"bugs": {
|
21
|
+
"url": "https://github.com/sul-dlss/arclight/issues"
|
22
|
+
},
|
23
|
+
"homepage": "https://github.com/sul-dlss/arclight#readme"
|
24
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<!--
|
2
|
+
Licensed to the Apache Software Foundation (ASF) under one or more
|
3
|
+
contributor license agreements. See the NOTICE file distributed with
|
4
|
+
this work for additional information regarding copyright ownership.
|
5
|
+
The ASF licenses this file to You under the Apache License, Version 2.0
|
6
|
+
(the "License"); you may not use this file except in compliance with
|
7
|
+
the License. You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
-->
|
17
|
+
|
18
|
+
<!-- The content of this page will be statically included into the top
|
19
|
+
of the admin page. Uncomment this as an example to see there the content
|
20
|
+
will show up.
|
21
|
+
|
22
|
+
<hr>
|
23
|
+
<i>This line will appear before the first table</i>
|
24
|
+
<tr>
|
25
|
+
<td colspan="2">
|
26
|
+
This row will be appended to the end of the first table
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
<hr>
|
30
|
+
|
31
|
+
-->
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" ?>
|
2
|
+
<!--
|
3
|
+
Licensed to the Apache Software Foundation (ASF) under one or more
|
4
|
+
contributor license agreements. See the NOTICE file distributed with
|
5
|
+
this work for additional information regarding copyright ownership.
|
6
|
+
The ASF licenses this file to You under the Apache License, Version 2.0
|
7
|
+
(the "License"); you may not use this file except in compliance with
|
8
|
+
the License. You may obtain a copy of the License at
|
9
|
+
|
10
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
|
12
|
+
Unless required by applicable law or agreed to in writing, software
|
13
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
See the License for the specific language governing permissions and
|
16
|
+
limitations under the License.
|
17
|
+
-->
|
18
|
+
|
19
|
+
<!-- If this file is found in the config directory, it will only be
|
20
|
+
loaded once at startup. If it is found in Solr's data
|
21
|
+
directory, it will be re-loaded every commit.
|
22
|
+
-->
|
23
|
+
|
24
|
+
<elevate>
|
25
|
+
<query text="foo bar">
|
26
|
+
<doc id="1" />
|
27
|
+
<doc id="2" />
|
28
|
+
<doc id="3" />
|
29
|
+
</query>
|
30
|
+
|
31
|
+
<query text="ipod">
|
32
|
+
<doc id="MA147LL/A" /> <!-- put the actual ipod at the top -->
|
33
|
+
<doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
|
34
|
+
</query>
|
35
|
+
|
36
|
+
</elevate>
|
@@ -0,0 +1,246 @@
|
|
1
|
+
# The ASF licenses this file to You under the Apache License, Version 2.0
|
2
|
+
# (the "License"); you may not use this file except in compliance with
|
3
|
+
# the License. You may obtain a copy of the License at
|
4
|
+
#
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
#
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
9
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
10
|
+
# See the License for the specific language governing permissions and
|
11
|
+
# limitations under the License.
|
12
|
+
|
13
|
+
# Syntax:
|
14
|
+
# "source" => "target"
|
15
|
+
# "source".length() > 0 (source cannot be empty.)
|
16
|
+
# "target".length() >= 0 (target can be empty.)
|
17
|
+
|
18
|
+
# example:
|
19
|
+
# "??" => "A"
|
20
|
+
# "\u00C0" => "A"
|
21
|
+
# "\u00C0" => "\u0041"
|
22
|
+
# "??" => "ss"
|
23
|
+
# "\t" => " "
|
24
|
+
# "\n" => ""
|
25
|
+
|
26
|
+
# ?? => A
|
27
|
+
"\u00C0" => "A"
|
28
|
+
|
29
|
+
# ?? => A
|
30
|
+
"\u00C1" => "A"
|
31
|
+
|
32
|
+
# ?? => A
|
33
|
+
"\u00C2" => "A"
|
34
|
+
|
35
|
+
# ?? => A
|
36
|
+
"\u00C3" => "A"
|
37
|
+
|
38
|
+
# ?? => A
|
39
|
+
"\u00C4" => "A"
|
40
|
+
|
41
|
+
# ?? => A
|
42
|
+
"\u00C5" => "A"
|
43
|
+
|
44
|
+
# ?? => AE
|
45
|
+
"\u00C6" => "AE"
|
46
|
+
|
47
|
+
# ?? => C
|
48
|
+
"\u00C7" => "C"
|
49
|
+
|
50
|
+
# ?? => E
|
51
|
+
"\u00C8" => "E"
|
52
|
+
|
53
|
+
# ?? => E
|
54
|
+
"\u00C9" => "E"
|
55
|
+
|
56
|
+
# ?? => E
|
57
|
+
"\u00CA" => "E"
|
58
|
+
|
59
|
+
# ?? => E
|
60
|
+
"\u00CB" => "E"
|
61
|
+
|
62
|
+
# ?? => I
|
63
|
+
"\u00CC" => "I"
|
64
|
+
|
65
|
+
# ?? => I
|
66
|
+
"\u00CD" => "I"
|
67
|
+
|
68
|
+
# ?? => I
|
69
|
+
"\u00CE" => "I"
|
70
|
+
|
71
|
+
# ?? => I
|
72
|
+
"\u00CF" => "I"
|
73
|
+
|
74
|
+
# ?? => IJ
|
75
|
+
"\u0132" => "IJ"
|
76
|
+
|
77
|
+
# ?? => D
|
78
|
+
"\u00D0" => "D"
|
79
|
+
|
80
|
+
# ?? => N
|
81
|
+
"\u00D1" => "N"
|
82
|
+
|
83
|
+
# ?? => O
|
84
|
+
"\u00D2" => "O"
|
85
|
+
|
86
|
+
# ?? => O
|
87
|
+
"\u00D3" => "O"
|
88
|
+
|
89
|
+
# ?? => O
|
90
|
+
"\u00D4" => "O"
|
91
|
+
|
92
|
+
# ?? => O
|
93
|
+
"\u00D5" => "O"
|
94
|
+
|
95
|
+
# ?? => O
|
96
|
+
"\u00D6" => "O"
|
97
|
+
|
98
|
+
# ?? => O
|
99
|
+
"\u00D8" => "O"
|
100
|
+
|
101
|
+
# ?? => OE
|
102
|
+
"\u0152" => "OE"
|
103
|
+
|
104
|
+
# ??
|
105
|
+
"\u00DE" => "TH"
|
106
|
+
|
107
|
+
# ?? => U
|
108
|
+
"\u00D9" => "U"
|
109
|
+
|
110
|
+
# ?? => U
|
111
|
+
"\u00DA" => "U"
|
112
|
+
|
113
|
+
# ?? => U
|
114
|
+
"\u00DB" => "U"
|
115
|
+
|
116
|
+
# ?? => U
|
117
|
+
"\u00DC" => "U"
|
118
|
+
|
119
|
+
# ?? => Y
|
120
|
+
"\u00DD" => "Y"
|
121
|
+
|
122
|
+
# ?? => Y
|
123
|
+
"\u0178" => "Y"
|
124
|
+
|
125
|
+
# ?? => a
|
126
|
+
"\u00E0" => "a"
|
127
|
+
|
128
|
+
# ?? => a
|
129
|
+
"\u00E1" => "a"
|
130
|
+
|
131
|
+
# ?? => a
|
132
|
+
"\u00E2" => "a"
|
133
|
+
|
134
|
+
# ?? => a
|
135
|
+
"\u00E3" => "a"
|
136
|
+
|
137
|
+
# ?? => a
|
138
|
+
"\u00E4" => "a"
|
139
|
+
|
140
|
+
# ?? => a
|
141
|
+
"\u00E5" => "a"
|
142
|
+
|
143
|
+
# ?? => ae
|
144
|
+
"\u00E6" => "ae"
|
145
|
+
|
146
|
+
# ?? => c
|
147
|
+
"\u00E7" => "c"
|
148
|
+
|
149
|
+
# ?? => e
|
150
|
+
"\u00E8" => "e"
|
151
|
+
|
152
|
+
# ?? => e
|
153
|
+
"\u00E9" => "e"
|
154
|
+
|
155
|
+
# ?? => e
|
156
|
+
"\u00EA" => "e"
|
157
|
+
|
158
|
+
# ?? => e
|
159
|
+
"\u00EB" => "e"
|
160
|
+
|
161
|
+
# ?? => i
|
162
|
+
"\u00EC" => "i"
|
163
|
+
|
164
|
+
# ?? => i
|
165
|
+
"\u00ED" => "i"
|
166
|
+
|
167
|
+
# ?? => i
|
168
|
+
"\u00EE" => "i"
|
169
|
+
|
170
|
+
# ?? => i
|
171
|
+
"\u00EF" => "i"
|
172
|
+
|
173
|
+
# ?? => ij
|
174
|
+
"\u0133" => "ij"
|
175
|
+
|
176
|
+
# ?? => d
|
177
|
+
"\u00F0" => "d"
|
178
|
+
|
179
|
+
# ?? => n
|
180
|
+
"\u00F1" => "n"
|
181
|
+
|
182
|
+
# ?? => o
|
183
|
+
"\u00F2" => "o"
|
184
|
+
|
185
|
+
# ?? => o
|
186
|
+
"\u00F3" => "o"
|
187
|
+
|
188
|
+
# ?? => o
|
189
|
+
"\u00F4" => "o"
|
190
|
+
|
191
|
+
# ?? => o
|
192
|
+
"\u00F5" => "o"
|
193
|
+
|
194
|
+
# ?? => o
|
195
|
+
"\u00F6" => "o"
|
196
|
+
|
197
|
+
# ?? => o
|
198
|
+
"\u00F8" => "o"
|
199
|
+
|
200
|
+
# ?? => oe
|
201
|
+
"\u0153" => "oe"
|
202
|
+
|
203
|
+
# ?? => ss
|
204
|
+
"\u00DF" => "ss"
|
205
|
+
|
206
|
+
# ?? => th
|
207
|
+
"\u00FE" => "th"
|
208
|
+
|
209
|
+
# ?? => u
|
210
|
+
"\u00F9" => "u"
|
211
|
+
|
212
|
+
# ?? => u
|
213
|
+
"\u00FA" => "u"
|
214
|
+
|
215
|
+
# ?? => u
|
216
|
+
"\u00FB" => "u"
|
217
|
+
|
218
|
+
# ?? => u
|
219
|
+
"\u00FC" => "u"
|
220
|
+
|
221
|
+
# ?? => y
|
222
|
+
"\u00FD" => "y"
|
223
|
+
|
224
|
+
# ?? => y
|
225
|
+
"\u00FF" => "y"
|
226
|
+
|
227
|
+
# ??? => ff
|
228
|
+
"\uFB00" => "ff"
|
229
|
+
|
230
|
+
# ??? => fi
|
231
|
+
"\uFB01" => "fi"
|
232
|
+
|
233
|
+
# ??? => fl
|
234
|
+
"\uFB02" => "fl"
|
235
|
+
|
236
|
+
# ??? => ffi
|
237
|
+
"\uFB03" => "ffi"
|
238
|
+
|
239
|
+
# ??? => ffl
|
240
|
+
"\uFB04" => "ffl"
|
241
|
+
|
242
|
+
# ??? => ft
|
243
|
+
"\uFB05" => "ft"
|
244
|
+
|
245
|
+
# ??? => st
|
246
|
+
"\uFB06" => "st"
|