noble_names 0.1.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c8577468ea38ce947a30e3d08d4b4ec276428027
4
- data.tar.gz: a70419e9e7fd703dbab474274539ac4e018c7a45
2
+ SHA256:
3
+ metadata.gz: aca9a5ec054a904befe7713c8b1bb2de83b2badde064e28ba274ef0d94b74992
4
+ data.tar.gz: 67720c835320318c01b2193755928f82bde606db4ab360daa2cd76625fef4e83
5
5
  SHA512:
6
- metadata.gz: f91c330cb728a195129f87571205496a2e255be87a1e10892b65987701a8fe4d3a129ecfb060522f26bb584855337af6375dfa5bd97aabf0e3bc4e87a8e7b612
7
- data.tar.gz: 458b24de1913870098e1e5aac7f5080fddd0b0b4bba36556456cae87f926d1085cfc4783c7f5340a3a6acbbd8452b8198fa8892cce9d06375e80872813a07173
6
+ metadata.gz: 37c81bd00fb1ec5955179e1b6cecc2e278049be0b3bdb607d4307b7172d7b8bd118da9318c0cb79ae428ff1df7da872644c48b0e51dfcf1d9d63f7556e611a98
7
+ data.tar.gz: 84ab027a7ceb38f420c17410e6f9136592bc7bdc38297b517f4de1d4f88b0e82686aa477d8feb7c45f20d1847e948ac019ad4c1c6fc0b73bea1fd058391d65c9
@@ -1,4 +1,4 @@
1
- Style/AlignParameters:
1
+ Layout/AlignParameters:
2
2
  # Alignment of parameters in multi-line method calls.
3
3
  #
4
4
  # The `with_first_parameter` style aligns the following lines along the same
@@ -16,3 +16,11 @@ Style/AlignParameters:
16
16
  SupportedStyles:
17
17
  - with_first_parameter
18
18
  - with_fixed_indentation
19
+
20
+ Metrics/BlockLength:
21
+ # Ignore the block lengths in these files as they are based on long blocks.
22
+ Exclude:
23
+ - 'Rakefile'
24
+ - '*.gemspec'
25
+ - '**/*.rake'
26
+ - 'test/**/*.rb'
@@ -2,14 +2,12 @@ language: ruby
2
2
  rvm:
3
3
  - jruby
4
4
  - 2.2.4
5
- - 2.2.1
6
- - 1.9.3
7
- - 2.3.0
8
- before_install: gem install bundler flay flog rubocop
5
+ - 2.3.3
6
+ - 2.4.1
7
+ - 2.5.0
9
8
  install:
10
9
  - bundle install --retry=3
11
10
  script:
12
- - bundle exec rake source_encoding
13
11
  - bundle exec rake test
14
12
  - bundle exec rubocop
15
13
  - bundle exec flay
@@ -0,0 +1,18 @@
1
+ <!--
2
+
3
+ // Please add your own contribution below inside the Master section, no need to
4
+ // set a version number, that happens during a deploy.
5
+ //
6
+ // These docs are aimed at users rather than danger developers, so please limit technical
7
+ // terminology in here.
8
+
9
+ -->
10
+
11
+ ## master
12
+
13
+ ### 1.0.0
14
+
15
+ * Added link to rubydocs documentation.
16
+ * Added project to code-climate.
17
+ * Added support for native UTF-8 upcasing for ruby `>= 2.4`.
18
+ * Drop support for ruby 1.9.3 and updated development dependencies.
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # NobleNames
2
2
  [![Build Status](https://travis-ci.org/Haniyya/noble_names.svg?branch=master)](https://travis-ci.org/Haniyya/noble_names)
3
+ [![Documentation
4
+ Status](https://readthedocs.org/projects/noble-names/badge/?version=latest)](http://www.rubydoc.info/gems/noble_names)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/614fe2d4f930a092e6f5/maintainability)](https://codeclimate.com/github/Haniyya/noble_names/maintainability)
3
6
 
4
7
  A small Gem to capitalize names with regard to nobility particles and prefixes.
5
8
 
@@ -80,10 +83,10 @@ This gem has no runtime-dependencies outside of the standard library and is
80
83
  therefore compatible with the following ruby versions:
81
84
 
82
85
  - jruby
86
+ - 2.5.0
87
+ - 2.4.3
83
88
  - 2.3.0
84
89
  - 2.2.4
85
- - 2.2.1
86
- - 1.9.3
87
90
 
88
91
  Other verions might work to but are not tested in ci so far.
89
92
 
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- # encoding: UTF-8
1
+
2
2
  require 'rake/testtask'
3
3
 
4
4
  desc 'Run tests'
@@ -1,4 +1,4 @@
1
- #-- encoding: UTF-8
1
+
2
2
  require 'noble_names/match_index'
3
3
  require 'noble_names/version'
4
4
  require 'noble_names/config'
@@ -8,90 +8,98 @@ require 'noble_names/data'
8
8
  # The main Module that has all necessary functions to
9
9
  # process names.
10
10
  module NobleNames
11
- # Capitalizes a word if it needs to be capitalized.
12
- # @param [String] word the word that needs to be capitalized.
13
- # @return [String] word the word either capitalized or not.
14
- def self.noble_capitalize(word)
15
- prefix = Data.nobility_prefixes.prefix?(word)
16
- if Data.nobility_particles.in_particle_list?(word)
17
- word.downcase
18
- elsif prefix
19
- capitalize(prefix) + capitalize(word.gsub(prefix, ''))
20
- else
21
- capitalize(word)
22
- end
23
- end
11
+ # Records whether String#upcase supports UTF-8 characters.
12
+ STANDARD_UPACE_SUPPORT = (RUBY_VERSION.to_f >= 2.4)
24
13
 
25
- # Upcases the first small letters in each word,
26
- # seperated by hyphons.
27
- # The word is also not capitalized if it already contains
28
- # a capitalized letter. This is to allow Business Names
29
- # to have custom capitalization.
30
- # But beware, words seperated by spaces stay small.
31
- # @return [String] the capitalized word.
32
- # @example
33
- # capitalize('hans-ebert') #=> 'Hans-Ebert'
34
- # capitalize('john') #=> 'John'
35
- # capitalize('john james') #=> 'John james'
36
- # capitalize('eBase') #=> 'eBase'
37
- def self.capitalize(word)
38
- if word =~ /[A-Z]|Ä|Ö|Ü/
39
- word
40
- else
41
- word.gsub first_small_letters do |letter|
42
- upcase(letter)
14
+ class << self
15
+ # Capitalizes a word if it needs to be capitalized.
16
+ # @param [String] word the word that needs to be capitalized.
17
+ # @return [String] word the word either capitalized or not.
18
+ def noble_capitalize(word)
19
+ prefix = Data.nobility_prefixes.prefix?(word)
20
+ if Data.nobility_particles.in_particle_list?(word)
21
+ word.downcase
22
+ elsif prefix
23
+ capitalize(prefix) + capitalize(word.gsub(prefix, ''))
24
+ else
25
+ capitalize(word)
43
26
  end
44
27
  end
45
- end
46
28
 
47
- # Upcases a letter even if it is a german mutated vowel.
48
- # @return [String] letter the upcased letter.
49
- # @example
50
- # upcase('t') #=> 'T'
51
- def self.upcase(letter)
52
- match = letter.match(/ä|ö|ü/)
53
- if match
54
- case match.to_s
55
- when 'ä' then 'Ä'
56
- when 'ö' then 'Ö'
57
- when 'ü' then 'Ü'
29
+ # Upcases the first small letters in each word,
30
+ # seperated by hyphons.
31
+ # The word is also not capitalized if it already contains
32
+ # a capitalized letter. This is to allow Business Names
33
+ # to have custom capitalization.
34
+ # But beware, words seperated by spaces stay small.
35
+ # @return [String] the capitalized word.
36
+ # @example
37
+ # capitalize('hans-ebert') #=> 'Hans-Ebert'
38
+ # capitalize('john') #=> 'John'
39
+ # capitalize('john james') #=> 'John james'
40
+ # capitalize('eBase') #=> 'eBase'
41
+ def capitalize(word)
42
+ if word =~ /[A-Z]|Ä|Ö|Ü/
43
+ word
44
+ else
45
+ word.gsub first_small_letters do |letter|
46
+ upcase(letter)
47
+ end
58
48
  end
59
- else letter.upcase
60
49
  end
61
- end
62
50
 
63
- # A Regex literal to find the first letter of a string
64
- # as well as the first letter after a hyphon.
65
- # @return [Regexp] first_small_letters the regexp in question
66
- def self.first_small_letters
67
- /((\A.|(?<=\-).))/
68
- end
51
+ # Checks weither a word is in the business particle list
52
+ # @param [String] word The word in question.
53
+ # @return [Boolean] result `true` if `word` is a business-particle
54
+ # `false` otherwise
55
+ def business_particle?(word)
56
+ Data.business_particles.in_particle_list? word
57
+ end
69
58
 
70
- # Checks weither a word is in the business particle list
71
- # @param [String] word The word in question.
72
- # @return [Boolean] result `true` if `word` is a business-particle
73
- # `false` otherwise
74
- def self.business_particle?(word)
75
- Data.business_particles.in_particle_list? word
76
- end
59
+ # Corrects only the business particle and leaves the
60
+ # other words alone.
61
+ # @param [Array] words An array of words to be checked.
62
+ # @return [Array] words An array of corrected words.
63
+ # @example A Business Name
64
+ # correct_business_particles([
65
+ # 'cool', 'and', 'hip', 'gmbh'
66
+ # ]) #=> ['cool', 'and', 'hip', 'GmbH']
67
+ def correct_business_particles(words)
68
+ words.map! do |word|
69
+ if business_particle?(word)
70
+ word
71
+ .replace(Data.business_particles.particles[word.downcase])
72
+ else
73
+ noble_capitalize(word)
74
+ end
75
+ end
76
+ end
77
77
 
78
- # Corrects only the business particle and leaves the
79
- # other words alone.
80
- # @param [Array] words An array of words to be checked.
81
- # @return [Array] words An array of corrected words.
82
- # @example A Business Name
83
- # correct_business_particles([
84
- # 'cool', 'and', 'hip', 'gmbh'
85
- # ]) #=> ['cool', 'and', 'hip', 'GmbH']
86
- def self.correct_business_particles(words)
87
- words.map! do |word|
88
- if business_particle?(word)
89
- word
90
- .replace(Data.business_particles.particles[word.downcase])
91
- else
92
- noble_capitalize(word)
78
+ private
79
+
80
+ # Upcases a letter even if it is a german mutated vowel.
81
+ # @return [String] letter the upcased letter.
82
+ # @example
83
+ # upcase('t') #=> 'T'
84
+ def upcase(letter)
85
+ return letter.upcase if STANDARD_UPACE_SUPPORT
86
+ match = letter.match(/ä|ö|ü/)
87
+ if match
88
+ case match.to_s
89
+ when 'ä' then 'Ä'
90
+ when 'ö' then 'Ö'
91
+ when 'ü' then 'Ü'
92
+ end
93
+ else letter.upcase
93
94
  end
94
95
  end
96
+
97
+ # A Regex literal to find the first letter of a string
98
+ # as well as the first letter after a hyphon.
99
+ # @return [Regexp] first_small_letters the regexp in question
100
+ def first_small_letters
101
+ /((\A.|(?<=\-).))/
102
+ end
95
103
  end
96
104
 
97
105
  # Applies the core extension
@@ -1,8 +1,8 @@
1
- #-- encoding: UTF-8
1
+
2
2
  # :nodoc:
3
3
  module NobleNames
4
4
  SUPPORTED_LANGUAGES =
5
- [:german, :english, :french, :spanish, :portuguese, :dutch].freeze
5
+ %i[german english french spanish portuguese dutch].freeze
6
6
 
7
7
  class << self
8
8
  attr_writer :configuration
@@ -1,4 +1,4 @@
1
- #-- encoding: UTF-8
1
+
2
2
  module NobleNames
3
3
  module CoreExt
4
4
  # This Module gives {String} the capability to
@@ -1,4 +1,4 @@
1
- #-- encoding: UTF-8
1
+
2
2
  module NobleNames
3
3
  # The module responsible for maintaining and delivering
4
4
  # the match data as defined in the `data` directory.
@@ -13,7 +13,13 @@ module NobleNames
13
13
  # Otherwise it calls super.
14
14
  def self.method_missing(method, *args, &block)
15
15
  var = instance_variable_get("@#{method}")
16
- var ? var : super(method, args, block)
16
+ var ? var : super
17
+ end
18
+
19
+ # Remember to define respond_to_missing.
20
+ def self.respond_to_missing?(method, *args, &block)
21
+ var = instance_variable_get("@#{method}")
22
+ var ? true : super
17
23
  end
18
24
  end
19
25
  end
@@ -1,4 +1,4 @@
1
- #-- encoding: UTF-8
1
+
2
2
  require_relative 'core_ext/string.rb'
3
3
 
4
4
  # :nodoc:
@@ -1,4 +1,4 @@
1
- #-- encoding: UTF-8
1
+
2
2
  require 'yaml'
3
3
 
4
4
  module NobleNames
@@ -51,7 +51,7 @@ module NobleNames
51
51
  # @return [Boolean] `true` if `word` is in the particle_list,
52
52
  # `false` otherwise.
53
53
  def in_particle_list?(word)
54
- reindex if @languages != NobleNames.configuration.languages
54
+ reindex if languages != NobleNames.configuration.languages
55
55
  particles.key? word
56
56
  end
57
57
 
@@ -61,8 +61,8 @@ module NobleNames
61
61
  # used languages.
62
62
  def selected_data
63
63
  @selected_data ||=
64
- @data
65
- .select { |l| @languages.include? l.to_sym }
64
+ data
65
+ .select { |l| languages.include? l.to_sym }
66
66
  .values
67
67
  .flatten
68
68
  end
@@ -75,9 +75,9 @@ module NobleNames
75
75
  # @example
76
76
  # prefix?('mcdormer') #=> 'mc'
77
77
  def prefix?(word)
78
- reindex if @languages != NobleNames.configuration.languages
78
+ reindex if languages != NobleNames.configuration.languages
79
79
  prefixes.each do |pre|
80
- return pre if (word =~ Regexp.new(pre)) == 0
80
+ return pre unless (word =~ Regexp.new('^' + pre.to_s)).nil?
81
81
  end
82
82
  nil
83
83
  end
@@ -86,10 +86,15 @@ module NobleNames
86
86
 
87
87
  # Resets the state of the MatchIndex
88
88
  def reindex
89
- @languages = NobleNames.configuration.languages
90
- @selected_data = nil
91
- @prefixes = nil
92
- @particles = nil
89
+ self.languages = NobleNames.configuration.languages
90
+ self.selected_data = nil
91
+ self.prefixes = nil
92
+ self.particles = nil
93
93
  end
94
+
95
+ private
96
+
97
+ attr_accessor :languages
98
+ attr_writer :particles, :prefixes, :selected_data
94
99
  end
95
100
  end
@@ -1,4 +1,4 @@
1
- #-- encoding: UTF-8
1
+
2
2
  module NobleNames
3
- VERSION = '0.1.5'.freeze
3
+ VERSION = '1.0.0'.freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noble_names
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Martensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-02 00:00:00.000000000 Z
11
+ date: 2018-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,70 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.11'
19
+ version: '1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.11'
26
+ version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: flay
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 5.8.4
47
+ version: '5'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 5.8.4
54
+ version: '5'
55
55
  - !ruby/object:Gem::Dependency
56
- name: flay
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.8.0
61
+ version: '12'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.8.0
68
+ version: '12'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.37.2
75
+ version: '0.52'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.37.2
82
+ version: '0.52'
83
83
  description: |2
84
84
  This Gem uses a list of nobility particles to keep track of what to
85
85
  capitalize and what not.
@@ -93,6 +93,7 @@ files:
93
93
  - ".rubocop.yml"
94
94
  - ".travis.yml"
95
95
  - ".yardopts"
96
+ - CHANGELOG.md
96
97
  - Gemfile
97
98
  - LICENSE.txt
98
99
  - README.md
@@ -131,9 +132,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
132
  version: '0'
132
133
  requirements: []
133
134
  rubyforge_project:
134
- rubygems_version: 2.4.8
135
+ rubygems_version: 2.7.3
135
136
  signing_key:
136
137
  specification_version: 4
137
138
  summary: A gem that titleizes strings while respecting certain linguistic differences.
138
139
  test_files: []
139
- has_rdoc: