it 0.8.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c01da0126bc0960aa7ab5e43f96517aa82eb289d
4
- data.tar.gz: 1b98dfc90fa506312640cdbb7f900b3534c3d780
3
+ metadata.gz: 3afe5b083028e03d2498a736e5a7755b8729e5ed
4
+ data.tar.gz: 4f787ab01e824e5cf59864aa1b8ca7f9e4483a24
5
5
  SHA512:
6
- metadata.gz: 6146d71238cef1aa408fd743d68e371bcf3fb91dde5e32e94249d236640229af060a8c83987df01f8dd14f76e7ae2a628744921689405499d3960a960e157925
7
- data.tar.gz: 34b7df378be392ecd5fa29ee174be79be7031687c25cdbbebe4bab81e6063a05edaf194b8b9dc32e66ad0ab217733e5dc0353e7eeb97fc9b18e2a5bd8230f70c
6
+ metadata.gz: faaf1c0d1ac146c4ac6f78d1ef77a3604d749eada8886ffac8908d812a322f1496fe9f0b521d83eb1563ae39701d71cf3e875f4beda9e5403f2dd9ea65fc9498
7
+ data.tar.gz: 003d59a65094af75ccb9ffb6703bbd2373232c8668dddc4a14a11156adb37a658cff1b8fdf3fe550635cc2593a54de498560f9a6bdf3bc08e3d5d7ea4a0d92da
@@ -1,4 +1,11 @@
1
- # Since 0.2.5
1
+ # 1.0.0 (2017-06-03)
2
+
3
+ * Allow whitespace after the colon without considering it part of the value [#20](https://github.com/iGEL/it/pull/20)
4
+ *Russell Norris*
5
+ * Run specs with warnings enabled
6
+ * 1.0.0 Release to conform with semver 2.0
7
+
8
+ # 0.8.0 (2015-06-12)
2
9
 
3
10
  * Make `It.plain` work with empty content [#14](https://github.com/iGEL/it/pull/14)
4
11
  *Emil Sågfors*
data/README.md CHANGED
@@ -2,10 +2,10 @@
2
2
  [![Build Status](http://img.shields.io/travis/iGEL/it/master.svg?style=flat)](https://travis-ci.org/iGEL/it)
3
3
  [![Coverage](http://img.shields.io/coveralls/iGEL/it/master.svg?style=flat)](https://coveralls.io/r/iGEL/it)
4
4
  [![Rubygems](http://img.shields.io/gem/v/it.svg?style=flat)](http://rubygems.org/gems/it)
5
- [![Github Issues](http://img.shields.io/github/issues/iGEL/it.svg?style=flat)](https://travis-ci.org/iGEL/it)
5
+ [![Github Issues](http://img.shields.io/github/issues/iGEL/it.svg?style=flat)](https://github.com/iGEL/it/issues)
6
6
  [![Dependency Status](http://img.shields.io/gemnasium/iGEL/it.svg?style=flat)](https://gemnasium.com/iGEL/it)
7
7
 
8
- Tested against Ruby 2.2, 2.1, 2.0, head, rbx, and jruby and Rails 4.2, 4.1, and 3.2
8
+ Tested against Ruby 2.4, 2.3, 2.2, head, and jruby 9.1.10.0 and Rails 5.1, 5.0, and 4.2
9
9
 
10
10
  What is **it**?
11
11
  =============
data/Rakefile CHANGED
@@ -7,4 +7,4 @@ RSpec::Core::RakeTask.new(:spec)
7
7
  RuboCop::RakeTask.new
8
8
  Reek::Rake::Task.new
9
9
 
10
- task default: :spec
10
+ task default: %i[spec rubocop reek]
data/it.gemspec CHANGED
@@ -12,13 +12,13 @@ Gem::Specification.new do |spec|
12
12
  spec.homepage = 'https://github.com/igel/it'
13
13
  spec.license = 'MIT'
14
14
 
15
- spec.files = %w(MIT-LICENSE README.md Rakefile Gemfile CHANGELOG.md it.gemspec) + Dir['lib/**/*.rb']
15
+ spec.files = %w[MIT-LICENSE README.md Rakefile Gemfile CHANGELOG.md it.gemspec] + Dir['lib/**/*.rb']
16
16
  spec.require_paths = ['lib']
17
17
 
18
18
  spec.add_dependency 'actionpack', '>= 3.0.0'
19
19
 
20
20
  spec.add_development_dependency 'bundler', '~> 1.7'
21
- spec.add_development_dependency 'rake', '~> 10.0'
21
+ spec.add_development_dependency 'rake', '~> 12'
22
22
  spec.add_development_dependency 'rspec', '~> 3.2'
23
23
  spec.add_development_dependency 'coveralls'
24
24
  spec.add_development_dependency 'nokogiri'
@@ -2,20 +2,37 @@ module It
2
2
  # Contains one interpolation and will delegate the work to the It::Tag (or subclass) or
3
3
  # ERB::Util.h
4
4
  class Interpolation
5
- attr_accessor :key, :label, :value
5
+ class << self
6
+ def call(string, values)
7
+ key, label = extract_key_and_label_from(string)
8
+ value = values[key]
6
9
 
7
- def initialize(string, values)
8
- self.key, self.label = string[2..-2].split(':', 2)
9
- validate_key_presence(values)
10
+ raise KeyError, "key{#{key}} not found" unless values.key?(key)
10
11
 
11
- self.value = values[key]
12
- convert_links
12
+ new(key, value, label).process
13
+ end
14
+
15
+ private
16
+
17
+ # This is a :reek:UtilityFunction, but it's not an instance method
18
+ def extract_key_and_label_from(string)
19
+ # eg: %{key:label} or %{key} or %{key: label}
20
+ string[2..-2].split(/:\s*/, 2)
21
+ end
22
+ end
23
+
24
+ def initialize(key, value, label)
25
+ @key = key
26
+ @value = value
27
+ @label = label
13
28
  end
14
29
 
15
30
  def process
31
+ convert_link
32
+
16
33
  validate_value_for_arguments
17
34
 
18
- if value.is_a?(It::Tag) # Empty tag
35
+ if value.is_a?(It::Tag)
19
36
  process_it_tag
20
37
  else # Normal interpolations, as I18n.t would do it.
21
38
  ERB::Util.h(value)
@@ -24,10 +41,12 @@ module It
24
41
 
25
42
  private
26
43
 
44
+ attr_reader :key, :value, :label
45
+
27
46
  # Convert keys with String arguments into It::Links, if they are named link, link_* or *_link
28
- def convert_links
47
+ def convert_link
29
48
  if key =~ /(\Alink\z|_link\z|\Alink_)/ && value.is_a?(String)
30
- self.value = It::Link.new(value)
49
+ @value = It::Link.new(value)
31
50
  end
32
51
  end
33
52
 
@@ -39,13 +58,9 @@ module It
39
58
  end
40
59
  end
41
60
 
42
- def validate_key_presence(values)
43
- fail KeyError, "key{#{key}} not found" unless values.key?(key)
44
- end
45
-
46
61
  def validate_value_for_arguments
47
62
  if label && !value.is_a?(It::Tag)
48
- fail ArgumentError, "key{#{key}} has an argument, so it cannot resolved with a #{value.class}"
63
+ raise ArgumentError, "key{#{key}} has an argument, so it cannot resolved with a #{value.class}"
49
64
  end
50
65
  end
51
66
  end
@@ -3,9 +3,11 @@ module It
3
3
  class Link < Tag
4
4
  include ActionView::Helpers::UrlHelper
5
5
 
6
+ attr_reader :href
7
+
6
8
  # See It.link for details. You can do everything there and save 6 characters.
7
9
  def initialize(href, options = {})
8
- fail TypeError, 'Invalid href given' unless [Hash, String].include?(href.class)
10
+ raise TypeError, 'Invalid href given' unless [Hash, String].include?(href.class)
9
11
 
10
12
  super(:a, options)
11
13
  @href = href
@@ -13,7 +15,7 @@ module It
13
15
 
14
16
  # Will be called from inside the helper to return the tag with the given content.
15
17
  def process(content)
16
- link_to(content, @href, @options)
18
+ link_to(content, href, options)
17
19
  end
18
20
  end
19
21
  end
@@ -1,17 +1,17 @@
1
1
  module It
2
2
  # Parses the string and replaces all interpolations accordingly.
3
3
  class Parser
4
- attr_accessor :string, :options
4
+ attr_reader :string, :options
5
5
 
6
- INTERPOLATION_REGEXP = /%\{[^{}}]+\}/
6
+ INTERPOLATION_REGEXP = /%\{[^{}]+\}/
7
7
 
8
8
  def self.backend_options(options)
9
9
  options.with_indifferent_access.slice(:default, :locale, :scope)
10
10
  end
11
11
 
12
12
  def initialize(string, options)
13
- self.string = string
14
- self.options = options
13
+ @string = string
14
+ @options = options
15
15
  end
16
16
 
17
17
  def process
@@ -21,7 +21,7 @@ module It
21
21
  # For deep nesting, we repeat the process until we have no interpolations anymore
22
22
  while contains_interpolation?
23
23
  string.gsub!(INTERPOLATION_REGEXP) do |interpolation|
24
- Interpolation.new(interpolation, options).process
24
+ Interpolation.call(interpolation, options)
25
25
  end
26
26
  end
27
27
  string.html_safe
@@ -36,7 +36,7 @@ module It
36
36
  def handle_pluralization
37
37
  return if !string.is_a?(Hash) || !options.key?('count')
38
38
 
39
- self.string = I18n.backend.send(:pluralize, locale, string, options['count'])
39
+ @string = I18n.backend.send(:pluralize, locale, string, options['count'])
40
40
  end
41
41
 
42
42
  def locale
@@ -44,7 +44,7 @@ module It
44
44
  end
45
45
 
46
46
  def escape_string
47
- self.string = String.new(ERB::Util.h(string))
47
+ @string = String.new(ERB::Util.h(string))
48
48
  end
49
49
  end
50
50
  end
@@ -2,7 +2,7 @@ module It
2
2
  # Handles replacements in non HTML templates (e.g. mails)
3
3
  class Plain < Tag
4
4
  def initialize(template = '%s')
5
- fail TypeError, "expected a String, got #{template.class}" unless template.is_a?(String)
5
+ raise TypeError, "expected a String, got #{template.class}" unless template.is_a?(String)
6
6
 
7
7
  @template = template
8
8
  end
@@ -7,8 +7,8 @@ module It
7
7
 
8
8
  # See It.tag for details. You can do everything there and save 6 characters.
9
9
  def initialize(tag_name, options = {})
10
- fail TypeError, 'tag_name must be a String or Symbol' unless [String, Symbol].include?(tag_name.class)
11
- fail TypeError, 'options must be a Hash' unless options.is_a?(Hash)
10
+ raise TypeError, 'tag_name must be a String or Symbol' unless [String, Symbol].include?(tag_name.class)
11
+ raise TypeError, 'options must be a Hash' unless options.is_a?(Hash)
12
12
 
13
13
  @tag_name = tag_name.to_sym
14
14
  @options = options.symbolize_keys
@@ -1,3 +1,3 @@
1
1
  module It
2
- VERSION = '0.8.0'
2
+ VERSION = '1.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: it
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johannes Barre
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-12 00:00:00.000000000 Z
11
+ date: 2017-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '12'
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: '10.0'
54
+ version: '12'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
163
  version: '0'
164
164
  requirements: []
165
165
  rubyforge_project:
166
- rubygems_version: 2.4.5
166
+ rubygems_version: 2.6.10
167
167
  signing_key:
168
168
  specification_version: 4
169
169
  summary: A helper for links and other html tags in your translations